mirror of
https://github.com/xcat2/confluent.git
synced 2024-11-25 11:01:09 +00:00
84634afc9c
Allow it to take only the basename and default to likely /var/lib/confluent locations Draft work on tab completion for imgutil. Technically the tab completion should be in the imgutil package, but for now bundle with server.
342 lines
12 KiB
Bash
342 lines
12 KiB
Bash
PATH=/opt/confluent/bin:$PATH
|
|
export PATH
|
|
MANPATH=/opt/confluent/share/man:$MANPATH
|
|
export MANPATH
|
|
# The aliases below are to signify that file globbing is unwelcome at the shell
|
|
# this avoids a problem if a user does a noderange like 'n[21-33] and there is a file
|
|
# in the directory like 'n3' that causes the parameter to change and target a totally
|
|
# different node
|
|
# Unfortunately in bourne shell, we cannot reliably ensure a prepended set-f
|
|
# and an appended set +f are both run. alias seems to be the only mechanism
|
|
# that can intervene before glob expansion, but it lacks power.
|
|
# putting it into a function to append is all well and good, *except* that
|
|
# if doing something like 'nodepower compute|grep' causes set -f to execute
|
|
# in current shell, and the function to be in a subshell and leaves globbing
|
|
# disabled in the parent shell. Instead, store the current command in a
|
|
# variable and use that to check for misglobbed noderanges, which was the goal
|
|
alias nodeattrib='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodeattrib'
|
|
alias nodebmcreset='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodebmcreset'
|
|
alias nodeboot='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodeboot'
|
|
alias nodeconfig='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodeconfig'
|
|
alias nodeconsole='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodeconsole'
|
|
alias nodedeploy='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodedeploy'
|
|
alias nodedefine='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodedefine'
|
|
alias nodeeventlog='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodeeventlog'
|
|
alias nodefirmware='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodefirmware'
|
|
alias nodegroupattrib='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodegroupattrib'
|
|
alias nodegroupdefine='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodegroupdefine'
|
|
alias nodegroupremove='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodegroupremove'
|
|
alias nodehealth='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodehealth'
|
|
alias nodeidentify='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodeidentify'
|
|
alias nodeinventory='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodeinventory'
|
|
alias nodelist='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodelist'
|
|
alias nodemedia='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodemedia'
|
|
alias nodepower='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodepower'
|
|
alias noderemove='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; noderemove'
|
|
alias nodereseat='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodereseat'
|
|
alias noderun='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; noderun'
|
|
alias nodesensors='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodesensors'
|
|
alias nodesetboot='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodesetboot'
|
|
alias nodestorage='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodestorage'
|
|
alias nodeshell='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodeshell'
|
|
alias nodelicense='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodelicense'
|
|
# Do not continue for non-bash shells, the rest of this sets up bash completion functions
|
|
[ -z "$BASH_VERSION" -o -z "$PS1" ] && return
|
|
|
|
|
|
_confluent_get_args()
|
|
{
|
|
CMPARGS=($COMP_LINE)
|
|
NUMARGS=$((COMP_CWORD+1))
|
|
if [ "${COMP_WORDS[COMP_CWORD]}" == '' ]; then
|
|
CMPARGS+=("")
|
|
fi
|
|
GENNED=""
|
|
for CAND in ${COMP_CANDIDATES[@]}; do
|
|
candarray=(${CAND//,/ })
|
|
matched=0
|
|
for c in "${candarray[@]}"; do
|
|
for arg in "${CMPARGS[@]}"; do
|
|
if [ "$arg" = "$c" ]; then
|
|
matched=1
|
|
break
|
|
fi
|
|
done
|
|
done
|
|
if [ 0 = $matched ]; then
|
|
for c in "${candarray[@]}"; do
|
|
GENNED+=" $c"
|
|
done
|
|
fi
|
|
done
|
|
}
|
|
|
|
function _confluent_generic_completion()
|
|
{
|
|
_confluent_get_args
|
|
if [ $NUMARGS -ge 3 ] && [ ! -z "$GENNED" ]; then
|
|
COMPREPLY=($(compgen -W "$GENNED" -- ${COMP_WORDS[COMP_CWORD]}))
|
|
fi
|
|
if [ $NUMARGS -lt 3 ]; then
|
|
_confluent_nr_completion
|
|
return;
|
|
fi
|
|
}
|
|
_confluent_nodeidentify_completion()
|
|
{
|
|
COMP_CANDIDATES=("on,off,blink -h")
|
|
_confluent_generic_completion
|
|
}
|
|
|
|
|
|
_confluent_nodesetboot_completion()
|
|
{
|
|
COMP_CANDIDATES=("default,cd,network,setup,hd,floppy,usb -h -b -p")
|
|
_confluent_generic_completion
|
|
}
|
|
|
|
_confluent_nodepower_completion()
|
|
{
|
|
COMP_CANDIDATES=("boot,off,on,status -h -p")
|
|
_confluent_generic_completion
|
|
}
|
|
|
|
_confluent_nodemedia_completion()
|
|
{
|
|
COMP_CANDIDATES=("list,upload,attach,detachall -h")
|
|
_confluent_get_args
|
|
if [ $NUMARGS -gt 3 ] && [ ${CMPARGS[-2]} == 'upload' ]; then
|
|
compopt -o default
|
|
COMPREPLY=()
|
|
return
|
|
fi
|
|
if [ $NUMARGS -ge 3 ] && [ ! -z "$GENNED" ]; then
|
|
COMPREPLY=($(compgen -W "$GENNED" -- ${COMP_WORDS[COMP_CWORD]}))
|
|
return;
|
|
fi
|
|
if [ $NUMARGS -lt 3 ]; then
|
|
_confluent_nr_completion
|
|
return;
|
|
fi
|
|
}
|
|
|
|
_confluent_nodefirmware_completion()
|
|
{
|
|
_confluent_get_args
|
|
if [ $NUMARGS == 3 ]; then
|
|
COMPREPLY=($(compgen -W "list update" -- ${COMP_WORDS[COMP_CWORD]}))
|
|
return;
|
|
fi
|
|
if [ $NUMARGS -gt 3 ] && [ ${CMPARGS[2]} == 'update' ]; then
|
|
compopt -o default
|
|
COMPREPLY=()
|
|
return
|
|
fi
|
|
if [ $NUMARGS -lt 3 ]; then
|
|
_confluent_nr_completion
|
|
return;
|
|
fi
|
|
}
|
|
|
|
_confluent_osimage_completion()
|
|
{
|
|
_confluent_get_args
|
|
if [ $NUMARGS == 2 ]; then
|
|
COMPREPLY=($(compgen -W "initialize import updateboot" -- ${COMP_WORDS[COMP_CWORD]}))
|
|
return
|
|
elif [ ${CMPARGS[1]} == 'initialize' ]; then
|
|
COMPREPLY=($(compgen -W "-h -u -s -t -i" -- ${COMP_WORDS[COMP_CWORD]}))
|
|
elif [ ${CMPARGS[1]} == 'import' ]; then
|
|
compopt -o default
|
|
COMPREPLY=()
|
|
return
|
|
elif [ ${CMPARGS[1]} == 'updateboot' ]; then
|
|
COMPREPLY=($(compgen -W "-n $(confetty show /deployment/profiles|sed -e 's/\///')" -- "${COMP_WORDS[COMP_CWORD]}"))
|
|
return
|
|
fi
|
|
}
|
|
|
|
_confluent_imgutil_completion()
|
|
{
|
|
_confluent_get_args
|
|
if [ $NUMARGS == 2 ]; then
|
|
COMPREPLY=($(compgen -W "build exec pack" -- ${COMP_WORDS[COMP_CWORD]}))
|
|
return
|
|
elif [ ${CMPARGS[1]} == 'build' ]; then
|
|
COMPREPLY=($(compgen -W "-s $(ls /var/lib/confluent/distributions)" -- ${COMP_WORDS[COMP_CWORD]}))
|
|
return
|
|
elif [ ${CMPARGS[1]} == 'pack' ]; then
|
|
compopt -o dirnames
|
|
COMPREPLY=()
|
|
return
|
|
elif [ ${CMPARGS[1]} == 'exec' ]; then
|
|
compopt -o dirnames
|
|
COMPREPLY=($(compgen -W "-v" -- ${COMP_WORDS[COMP_CWORD]}))
|
|
return
|
|
fi
|
|
}
|
|
_confluent_nodedeploy_completion()
|
|
{
|
|
_confluent_get_args
|
|
if [ $NUMARGS -gt 2 ]; then
|
|
COMPREPLY=($(compgen -W "-n $(confetty show /deployment/profiles|sed -e 's/\///')" -- "${COMP_WORDS[COMP_CWORD]}"))
|
|
return
|
|
fi
|
|
if [ $NUMARGS -lt 3 ]; then
|
|
_confluent_nr_completion
|
|
return;
|
|
fi
|
|
}
|
|
|
|
_confluent_nodeshell_completion()
|
|
{
|
|
_confluent_get_args
|
|
if [ $NUMARGS == 3 ]; then
|
|
COMPREPLY=($(compgen -c -- ${COMP_WORDS[COMP_CWORD]}))
|
|
return
|
|
fi
|
|
if [ $NUMARGS -gt 3 ]; then
|
|
compopt -o default
|
|
COMPREPLY=()
|
|
return
|
|
fi
|
|
if [ $NUMARGS -lt 3 ]; then
|
|
_confluent_nr_completion
|
|
return;
|
|
fi
|
|
}
|
|
|
|
_confluent_nodelicense_completion()
|
|
{
|
|
_confluent_get_args
|
|
if [ $NUMARGS == 3 ]; then
|
|
COMPREPLY=($(compgen -W "install list save delete" -- ${COMP_WORDS[COMP_CWORD]}))
|
|
return;
|
|
fi
|
|
if [ $NUMARGS == 4 ] && [ ${CMPARGS[2]} == 'install' ]; then
|
|
compopt -o default
|
|
COMPREPLY=()
|
|
return
|
|
fi
|
|
if [ $NUMARGS == 4 ] && [ ${CMPARGS[2]} == 'save' ]; then
|
|
compopt -o dirnames
|
|
COMPREPLY=()
|
|
return
|
|
fi
|
|
if [ $NUMARGS -lt 3 ]; then
|
|
_confluent_nr_completion
|
|
return
|
|
fi
|
|
}
|
|
|
|
_confluent_nodesupport_completion()
|
|
{
|
|
_confluent_get_args
|
|
if [ $NUMARGS == 3 ]; then
|
|
COMPREPLY=($(compgen -W "servicedata" -- ${COMP_WORDS[COMP_CWORD]}))
|
|
return;
|
|
fi
|
|
if [ $NUMARGS == 4 ] && [ ${CMPARGS[2]} == 'servicedata' ]; then
|
|
compopt -o dirnames
|
|
COMPREPLY=()
|
|
return
|
|
fi
|
|
if [ $NUMARGS -lt 3 ]; then
|
|
_confluent_nr_completion
|
|
return
|
|
fi
|
|
}
|
|
|
|
_confluent_nodeattrib_completion()
|
|
{
|
|
COMP_CANDIDATES=$(nodeattrib '~.>1' all | awk '{print $2}'|sed -e 's/://')
|
|
_confluent_generic_completion
|
|
}
|
|
|
|
|
|
_confluent_nn_completion()
|
|
{
|
|
_confluent_get_args
|
|
if [ $NUMARGS -gt 2 ]; then
|
|
return;
|
|
fi
|
|
INPUT=${COMP_WORDS[COMP_CWORD]}
|
|
INPUT=${INPUT##*,-}
|
|
INPUT=${INPUT##*,}
|
|
INPUT=${INPUT##*@}
|
|
PREFIX=""
|
|
if [ "$INPUT" != "${COMP_WORDS[COMP_CWORD]}" ]; then
|
|
PREFIX=${COMP_WORDS[COMP_CWORD]}
|
|
PREFIX=$(echo $PREFIX | sed -e 's/,[^,@-]*$/,/' -e 's/,-[^,@]*$/,-/' -e 's/@[^,@]*/@/')
|
|
fi
|
|
|
|
COMPREPLY=($(compgen -W "$(nodelist | sed -e s/^/$PREFIX/)" -- "${COMP_WORDS[COMP_CWORD]}"))
|
|
}
|
|
_confluent_nr_completion()
|
|
{
|
|
CMPARGS=($COMP_LINE)
|
|
_confluent_get_args
|
|
if [ $NUMARGS -gt 2 ]; then
|
|
compopt -o default
|
|
COMPREPLY=()
|
|
return;
|
|
fi
|
|
INPUT=${COMP_WORDS[COMP_CWORD]}
|
|
INPUT=${INPUT##*,-}
|
|
INPUT=${INPUT##*,}
|
|
INPUT=${INPUT##*@}
|
|
PREFIX=""
|
|
if [ "$INPUT" != "${COMP_WORDS[COMP_CWORD]}" ]; then
|
|
PREFIX=${COMP_WORDS[COMP_CWORD]}
|
|
PREFIX=$(echo $PREFIX | sed -e 's/,[^,@-]*$/,/' -e 's/,-[^,@]*$/,-/' -e 's/@[^,@]*/@/')
|
|
fi
|
|
|
|
COMPREPLY=($(compgen -W "$(confetty show /nodegroups|sed -e 's/\///' -e s/^/$PREFIX/;nodelist | sed -e s/^/$PREFIX/)" -- "${COMP_WORDS[COMP_CWORD]}"))
|
|
}
|
|
_confluent_ng_completion()
|
|
{
|
|
_confluent_get_args
|
|
if [ $NUMARGS -gt 2 ]; then
|
|
return;
|
|
fi
|
|
INPUT=${COMP_WORDS[COMP_CWORD]}
|
|
INPUT=${INPUT##*,-}
|
|
INPUT=${INPUT##*,}
|
|
INPUT=${INPUT##*@}
|
|
PREFIX=""
|
|
if [ "$INPUT" != "${COMP_WORDS[COMP_CWORD]}" ]; then
|
|
PREFIX=${COMP_WORDS[COMP_CWORD]}
|
|
PREFIX=$(echo $PREFIX | sed -e 's/,[^,@-]*$/,/' -e 's/,-[^,@]*$/,-/' -e 's/@[^,@]*/@/')
|
|
fi
|
|
|
|
COMPREPLY=($(compgen -W "$(confetty show /nodegroups|sed -e 's/\///' -e s/^/$PREFIX/)" -- "${COMP_WORDS[COMP_CWORD]}"))
|
|
}
|
|
complete -F _confluent_nodeattrib_completion nodeattrib
|
|
complete -F _confluent_nodeattrib_completion nodegroupattrib
|
|
complete -F _confluent_nr_completion nodebmcreset
|
|
complete -F _confluent_nodesetboot_completion nodeboot
|
|
complete -F _confluent_nr_completion nodeconfig
|
|
complete -F _confluent_nn_completion nodeconsole
|
|
complete -F _confluent_nr_completion nodeeventlog
|
|
complete -F _confluent_nodefirmware_completion nodefirmware
|
|
complete -F _confluent_nodedeploy_completion nodedeploy
|
|
complete -F _confluent_osimage_completion osdeploy
|
|
complete -F _confluent_imgutil_completion imgutil
|
|
complete -F _confluent_ng_completion nodegroupattrib
|
|
complete -F _confluent_ng_completion nodegroupremove
|
|
complete -F _confluent_nr_completion nodehealth
|
|
complete -F _confluent_nodeidentify_completion nodeidentify
|
|
complete -F _confluent_nr_completion nodeinventory
|
|
complete -F _confluent_nodeattrib_completion nodelist
|
|
complete -F _confluent_nodemedia_completion nodemedia
|
|
complete -F _confluent_nodepower_completion nodepower
|
|
complete -F _confluent_nr_completion noderemove
|
|
complete -F _confluent_nr_completion nodereseat
|
|
complete -F _confluent_nodeshell_completion noderun
|
|
complete -F _confluent_nr_completion nodesensors
|
|
complete -F _confluent_nodesetboot_completion nodesetboot
|
|
complete -F _confluent_nodeshell_completion nodeshell
|
|
complete -F _confluent_nodesupport_completion nodesupport
|
|
complete -F _confluent_nodelicense_completion nodelicense
|
|
|