blob: 732f4f4fce687f434deeb87ba023a00132817c1c [file] [log] [blame]
have nodetool && have cqlsh &&
{
show_keyspaces()
{
local ks=$(get_keyspaces)
COMPREPLY=( $(compgen -W "$ks" -- "$1") )
}
get_keyspaces()
{
[ -z "$keyspaces" ] && keyspaces=$(echo "DESCRIBE KEYSPACES" | cqlsh | egrep -v '^$')
echo $keyspaces
}
show_datacenters()
{
cur=$1
set|grep -q ^dcs || dcs=$(echo "select data_center from system.peers;"|cqlsh |tail -n +4|sort|uniq|awk '{if(length($1)>1) print $1}'|xargs)
COMPREPLY=( $(compgen -W "$dcs" -- "$cur") )
}
show_cfs()
{
local cur prev cfs
prev=$1
cur=$2
cfs=$(get_cfs $1 $2)
COMPREPLY=( $(compgen -W "$cfs" -- "$cur") )
}
get_cfs()
{
local prev
prev=$1
[ -z "${cf[$prev]}" ] && cf[$prev]=$(echo "DESCRIBE COLUMNFAMILIES" | cqlsh -k ${prev} | egrep -v '^$')
echo ${cf[$prev]}
}
show_last_cfs()
{
local cur cfs re
cur=$1
re=$(echo ${COMP_WORDS[@]:3:$(($COMP_CWORD - 3))} | sed -e 's/ /\\|/g')
cfs=$(get_cfs ${COMP_WORDS[2]} | sed -e "s/$re//g")
COMPREPLY=( $(compgen -W "$cfs" -- "${cur}") )
}
_nodetool()
{
local cur prev ks
COMPREPLY=()
_get_comp_words_by_ref cur prev
local shopt='
bootstrap
compactionhistory
compactionstats
decommission
describecluster
disablebackup
disablebinary
disablegossip
disablehandoff
disablehintsfordc
disablethrift
drain
enablebackup
enablebinary
enablegossip
enablehandoff
enablethrift
enablehintsfordc
failuredetector
gcstats
getcompactionthroughput
getconcurrentcompactors
getinterdcstreamthroughput
getlogginglevels
getstreamthroughput
gettimeout
gettraceprobability
gossipinfo
help
invalidatecountercache
invalidatekeycache
invalidaterowcache
join
listsnapshots
pausehandoff
proxyhistograms
rangekeysample
refreshsizeestimates
reloadlocalschema
reloadtriggers
replaybatchlog
resetlocalschema
resumehandoff
ring
setconcurrentcompactors
sethintedhandoffthrottlekb
setinterdcstreamthroughput
setlogginglevel
settimeout
status
statusbackup
statusbinary
statusthrift
statusgossip
statushandoff
stopdaemon
tablestats
tpstats
version
'
local lngopt='
assassinate
cleanup
clearsnapshot
compact
describering
disableautocompaction
enableautocompaction
flush
garbagecollect
getcompactionthreshold
getendpoints
getsstables
info
move
netstats
rebuild
rebuild_index
refresh
relocatesstables
removenode
repair
scrub
setcachecapacity
setcachekeystosave
setcompactionthreshold
setcompactionthroughput
setstreamthroughput
settraceprobability
snapshot
stop
tablehistograms
toppartitions
truncatehints
upgradesstables
verify
viewbuildstatus
'
local optwks='
cleanup
clearsnapshot
compact
describering
flush
garbagecollect
getcompactionthreshold
getendpoints
getsstables
rebuild_index
refresh
relocatesstables
repair
scrub
setcompactionthreshold
snapshot
tablehistograms
toppartitions
verify
viewbuildstatus
'
local optwcfs='
cleanup
compact
disableautocompaction
enableautocompaction
flush
garbagecollect
relocatesstables
repair
scrub
toppartitions
upgradesstables
verify
'
if [[ $COMP_CWORD -eq 1 ]] ; then
COMPREPLY=( $(compgen -W "${lngopt} ${shopt}" -- "${cur}") )
elif [[ $(echo "${lngopt}"|egrep -c "\b${prev}\b") -gt 0 ]] ; then
if echo $optwks|grep -q "\b$prev\b" ; then
show_keyspaces "${cur}"
else
case "${prev}" in
removenode)
# we don't want to lose time using nodetool status a 2nd time
# in case of force or status
if [[ "${cur}" =~ ^(f|s) ]] ; then
COMPREPLY=( $(compgen -W "status force" -- "${cur}") )
else
[ -z "$IDS" ] && IDS=$(nodetool status|grep %|awk '{print $7}'|xargs)
COMPREPLY=( $(compgen -W "status force $IDS" -- "${cur}") )
fi
return 0
;;
stop)
COMPREPLY=( $(compgen -W "COMPACTION VALIDATION CLEANUP SCRUB VERIFY INDEX_BUILD" -- "${cur}") )
return 0
;;
info)
COMPREPLY=( $(compgen -W "-T --tokens" -- "${cur}") )
return 0
;;
rebuild|disablehintsfordc|enablehintsfordc)
show_datacenters "${cur}"
return 0
;;
upgradesstables)
ks=$(get_keyspaces)
COMPREPLY=( $(compgen -W "-a --include-all-sstables $ks" -- "${cur}") )
return 0
;;
esac
fi
elif [[ $COMP_CWORD -eq 3 ]] ; then
case "${COMP_WORDS[1]}" in
cleanup|compact|flush|garbagecollect|getcompactionthreshold|getendpoints|getsstables|rebuild_index|refresh|relocatesstables|repair|scrub|setcompactionthreshold|tablehistograms|toppartitions|verify)
show_cfs ${prev} ${cur}
return 0
;;
upgradesstables)
if [[ ! ${prev} == -* ]]; then
show_cfs ${prev} ${cur}
fi
return 0
;;
snapshot)
COMPREPLY=( $(compgen -W "-cf" -- "${cur}") )
return 0
;;
esac
elif [[ "${optwcfs}" == *${COMP_WORDS[1]}* ]] ; then
show_last_cfs ${cur}
elif [[ $COMP_CWORD -eq 4 && ${COMP_WORDS[1]} == "snapshot" ]] ; then
show_cfs ${COMP_WORDS[2]} ${cur}
elif [[ $COMP_CWORD -eq 5 && ${COMP_WORDS[1]} == "snapshot" ]] ; then
COMPREPLY=( $(compgen -W "-t" -- "${cur}") )
fi
}
complete -F _nodetool nodetool
}