# -------------------------------------------------------------------------- # # Copyright 2002-2026, OpenNebula Project, OpenNebula Systems # # # # Licensed under the Apache License, Version 2.0 (the "License"); you may # # not use this file except in compliance with the License. You may obtain # # a copy of the License at # # # # http://www.apache.org/licenses/LICENSE-2.0 # # # # Unless required by applicable law or agreed to in writing, software # # distributed under the License is distributed on an "AS IS" BASIS, # # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # # See the License for the specific language governing permissions and # # limitations under the License. # #--------------------------------------------------------------------------- # # shellcheck disable=SC2148 # shellcheck disable=SC2207 COL_NAME="name" ################################################################################ # Helpers ################################################################################ # 1 -> cmd # 2 -> column # 3 -> filter _complete() { mapfile -t patterns < <( _one_list "$1" "$2" "$3" ) mapfile -t COMPREPLY < <( compgen -W "$( printf '%q ' "${patterns[@]}" )" -- "$cur") compopt -o filenames } # Complete file paths matching the prefix in $1. Read one candidate per line # to preserve spaces and avoid glob expansion. Tell Readline to quote filenames # and append a slash to directories so completion can continue inside them. _one_complete_files() { mapfile -t COMPREPLY < <(compgen -A file -- "$1") compopt -o filenames } _one_list() { if [ -z "$2" ]; then col="$COL_NAME" else col=$2 fi if [ -n "$3" ]; then $1 list --no-header --csv -f "$3" -l "$col" else $1 list --no-header --csv -l "$col" fi } _one_simple() { local cur COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${1}" -- "${cur}") ) return 0 fi } _one_owner_update() { case "$1" in chgrp) _complete onegroup ;; chown) _complete oneuser ;; update) _one_complete_files "$cur" return 0 ;; esac } _one_template() { local cur prev COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in clone|delete|instantiate|chgrp|chown|chmod|update|rename|show|lock|unlock) _complete "$cmd" ;; create) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then _one_owner_update "$pprev" fi } ################################################################################ # Services ################################################################################ _one() { _one_simple "start stop restart start-sched stop-sched restart-sched" } _oneflow_server() { _one_simple "start stop" } _oneform_server() { _one_simple "start stop" } _onehem_server() { _one_simple "start stop" } _onegate_server() { _one_simple "start stop restart" } _sunstone_server() { _one_simple "start stop restart start-sunstone stop-sunstone restart-sunstone" } complete -F _one one complete -F _oneflow_server oneflow-server complete -F _oneform_server oneform-server complete -F _onehem_server onehem-server complete -F _onegate_server onegate-server complete -F _sunstone_server sunstone-server ################################################################################ # Commands ################################################################################ _oneacl() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" opts="create delete list" cmd=oneacl if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in delete) _complete $cmd ;; esac fi } _onebackupjob() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create delete list show lock unlock chgrp chown chmod rename update backup cancel retry priority sched-delete sched-update" cmd=onebackupjob if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in delete|show|lock|unlock|chgrp|chown|chmod|rename| \ update|backup|cancel|retry|priority|sched-update|sched-delete) _complete $cmd ;; create) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then _one_owner_update "$pprev" fi } _onecluster() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create delete list show addhost delhost adddatastore deldatastore addvnet delvnet update rename optimize planexecute plandelete" cmd=onecluster if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in delete|show|addhost|delhost|adddatastore|deldatastore|addvnet| \ delvnet|update|rename|optimize|planexecute|plandelete) _complete $cmd ;; esac elif [ "$COMP_CWORD" == 3 ]; then case "$pprev" in addhost|delhost) _complete onehost ;; adddatastore|deldatastore) _complete onedatastore ;; addvnet|delvnet) _complete onevnet ;; update) _one_complete_files "$cur" return 0 ;; esac fi } _onedatastore() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create delete chgrp chown chmod list show update rename enable disable" cmd=onedatastore if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in delete|chgrp|chown|chmod|show|update|rename|enable|disable) _complete $cmd ;; create) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then _one_owner_update "$pprev" fi } _onedb() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" opts="backup version history restore upgrade fsck patch sqlite2mysql purge-history purge-done change-body change-history update-body update-history show-body show-history create-index" cmd=onedb if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in restore|patch) _one_complete_files "$cur" return 0 ;; esac fi } _oneflow() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="list top show delete recover scale chgrp chown chmod rename action sched-delete update purge-done add-role remove-role release" cmd=oneflow if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in show|delete|recover|scale|chgrp|chown|chmod|rename|action| \ sched-delete|update|add-role|remove-role|release) _complete $cmd ;; esac elif [ "$COMP_CWORD" == 3 ]; then case "$pprev" in add-role) _one_complete_files "$cur" return 0 ;; *) _one_owner_update "$pprev" ;; esac fi } _oneflow_template() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="list top show create delete instantiate chgrp chown chmod clone rename update" cmd=oneflow-template if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in show|delete|instantiate|chgrp|chown|chmod|clone|rename|update) _complete $cmd ;; create) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then _one_owner_update "$pprev" fi } _onegroup() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create update delete list show addadmin deladmin quota batchquota defaultquota vlan" cmd=onegroup if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in update|delete|show|addadmin|deladmin|quota|batchquota|vlan) _complete $cmd ;; defaultquota) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then case "$pprev" in addadmin|deladmin) _complete oneuser ;; update|quota|batchquota|vlan) _one_complete_files "$cur" return 0 ;; esac fi } _onehook() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create delete update rename list show top lock unlock retry log" cmd=onehook if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in delete|update|rename|show|lock|unlock|retry) _complete $cmd ;; create) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then case "$pprev" in update) _one_complete_files "$cur" return 0 ;; esac fi } _onehost() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create delete enable disable offline update sync list show top flush rename forceupdate monitoring" cmd=onehost if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in delete|disable|offline|update|sync|show|flush|rename| \ forceupdate|monitoring) _complete $cmd ;; enable) mapfile -t patterns < <( onehost list -f "stat=off,stat=dsbl" --operator OR --no-header --csv -l $COL_NAME ) mapfile -t COMPREPLY < <( compgen -W "$( printf '%q ' "${patterns[@]}" )" -- "$cur") compopt -o filenames ;; esac elif [ "$COMP_CWORD" == 3 ]; then case "$pprev" in update) _one_complete_files "$cur" return 0 ;; esac fi } _oneimage() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create clone delete persistent nonpersistent update enable chtype disable chgrp chown chmod rename snapshot-delete snapshot-revert snapshot-flatten list show top lock unlock orphans restore" cmd=oneimage if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in clone|delete|persistent|nonpersistent|update|chtype|chgrp|chown|chmod| \ rename|snapshot-delete|snapshot-revert|snapshot-flatten|show|lock|unlock) _complete $cmd ;; enable) _complete $cmd $COL_NAME "stat=disa" ;; disable) _complete $cmd $COL_NAME "stat=rdy" ;; restore) _complete $cmd $COL_NAME "type=BK" ;; create) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then _one_owner_update "$pprev" fi } _onemarket() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create delete chgrp chown chmod list show update rename enable disable" cmd=onemarket if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in delete|chgrp|chown|chmod|show|update|rename) _complete $cmd ;; create) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then _one_owner_update "$pprev" fi } _onemarketapp() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create export delete update chgrp chown chmod rename list show enable disable lock unlock" cmd=onemarketapp if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in export|delete|update|chgrp|chown|chmod|rename|show|lock|unlock) _complete $cmd ;; create) _one_complete_files "$cur" return 0 ;; enable) _complete $cmd $COL_NAME "stat=dis" ;; disable) _complete $cmd $COL_NAME "stat=rdy" ;; esac elif [ "$COMP_CWORD" == 3 ]; then _one_owner_update "$pprev" fi } _oneform() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" cmd=oneform opts="list top show sync enable disable" if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in show|enable|disable) local drivers drivers="$(oneform list --csv --no-header -l name 2>/dev/null | tr -d '\r')" COMPREPLY=( $(compgen -W "${drivers}" -- "${cur}") ) return 0 ;; esac fi } _oneprovision() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" cmd=oneprovision opts="list top show create update rename chgrp chown chmod retry add-host del-host add-ip del-ip deprovision delete logs" if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in show|update|rename|chgrp|chown|chmod|delete|retry) _complete $cmd ID ;; create) local drivers drivers="$(oneform list --csv --no-header -l name 2>/dev/null | tr -d '\r')" COMPREPLY=( $(compgen -W "${drivers}" -- "${cur}") ) return 0 ;; esac fi } _oneprovider() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" cmd=oneprovider opts="list top show create update rename chgrp chown chmod delete" if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in show|update|rename|chgrp|chown|chmod|delete) _complete $cmd ID ;; create) local drivers drivers="$(oneform list --csv --no-header -l name 2>/dev/null | tr -d '\r')" COMPREPLY=( $(compgen -W "${drivers}" -- "${cur}") ) return 0 ;; esac fi } _oneks() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi cmd=oneks opts="list top show create update rename chgrp chown chmod retry delete logs" if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in show|update|rename|chgrp|chown|chmod|retry|delete|logs) _complete $cmd ID ;; esac elif [ "$COMP_CWORD" == 3 ]; then case "$pprev" in create) _one_complete_files "$cur" return 0 ;; *) _one_owner_update "$pprev" esac fi } _onesecgroup() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create clone delete chgrp chown chmod update rename commit list show" cmd=onesecgroup if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in clone|delete|chgrp|chown|chmod|update|rename|commit|show) _complete $cmd ;; create) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then _one_owner_update "$pprev" fi } _oneshowback() { local opts opts="list calculate" _one_simple "$opts" } _onetemplate() { opts="create clone delete instantiate chgrp chown chmod update rename list show top lock unlock" cmd=onetemplate _one_template } _oneuser() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create update quota batchquota defaultquota umask login key delete passwd chgrp addgroup delgroup chauth list show encode passwdsearch token-create token-set token-delete token-delete-all enable disable" cmd=oneuser if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in update|quota|batchquota|umask|delete|passwd|chgrp|addgroup| \ delgroup|chauth|show|enable|disable) _complete $cmd ;; defaultquota) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then case "$pprev" in chgrp|addgroup|delgroup) _complete onegroup ;; update|quota|batchquota) _one_complete_files "$cur" return 0 ;; esac fi } _onevdc() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create rename update delete addgroup delgroup addcluster delcluster addhost delhost adddatastore deldatastore addvnet delvnet list show" cmd=onevdc if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in rename|update|delete|addgroup|delgroup|addcluster|delcluster|addhost| \ delhost|adddatastore|deldatastore|addvnet|delvnet) _complete $cmd ;; esac elif [ "$COMP_CWORD" == 3 ]; then case "$pprev" in addgroup|delgroup) _complete onegroup ;; addcluster|delcluster) _complete onecluster ;; addhost|delhost) _complete onehost ;; adddatastore|deldatastore) _complete onedatastore ;; addvnet|delvnet) _complete onevnet ;; update) _one_complete_files "$cur" return 0 ;; esac fi } _onevm() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create update hold release disk-saveas terminate undeploy poweroff reboot deploy migrate stop suspend resume recover disk-attach disk-detach nic-attach nic-detach nic-update sg-attach sg-detach chgrp chown chmod resched unresched rename snapshot-create snapshot-revert snapshot-delete snapshot-list disk-snapshot-create disk-snapshot-revert disk-snapshot-delete disk-snapshot-rename disk-snapshot-list disk-resize list show top resize save backupmode updateconf lock unlock exec exec-retry exec-cancel create-chart delete-chart update-chart sched-delete sched-update backup backup-cancel pci-attach pci-detach ssh port-forward vnc restore vmgroup-add vmgroup-del" cmd=onevm if [ "$COMP_CWORD" -gt 1 ]; then case "${COMP_WORDS[1]}" in hold|release|terminate|undeploy|poweroff|reboot|stop|suspend|resume| \ snapshot-create|snapshot-revert|snapshot-delete|disk-snapshot-create| \ disk-snapshot-revert|disk-snapshot-delete|backup) case "$prev" in --schedule|--weekly|--monthly|--yearly|--hourly|--end) return 0 ;; esac if [[ "$cur" == -* ]]; then COMPREPLY=( $(compgen -W "--schedule --weekly --monthly --yearly --hourly --end" -- "${cur}") ) return 0 fi ;; esac fi if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in update|hold|release|disk-saveas|terminate|show|resume|recover| \ disk-attach|disk-detach|nic-attach|nic-detach|nic-update|sg-attach| \ sg-detach|chgrp|chown|chmod|resched|unresched|rename|snapshot-create| \ snapshot-revert|snapshot-delete|snapshot-list|disk-snapshot-create| \ disk-snapshot-delete|disk-snapshot-revert|disk-snapshot-rename| \ disk-snapshot-list|disk-resize|save|backupmode|updateconf|lock|unlock| \ exec|exec-retry|exec-cancel|create-chart|delete-chart|update-chart| \ sched-delete|sched-update|backup|backup-cancel|pci-attach|pci-detach| \ restore|ssh|port-forward|vnc|vmgroup-add|vmgroup-del) _complete $cmd ;; undeploy|poweroff|reboot|suspend|stop|migrate) _complete $cmd $COL_NAME "stat=runn" ;; deploy) _complete $cmd $COL_NAME "stat=pend" ;; resize) _complete $cmd $COL_NAME "stat=poff" ;; create) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then case "$pprev" in deploy|migrate) _complete onehost $COL_NAME "stat=on" ;; restore) _complete oneimage $COL_NAME "type=BK" ;; vmgroup-add) _complete onevmgroup ;; esac _one_owner_update "$pprev" elif [ "$COMP_CWORD" == 4 ]; then case "${COMP_WORDS[1]}" in sched-update|update-chart) _one_complete_files "$cur" ;; esac fi } _onevmgroup() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create delete list show chgrp chown chmod update rename lock unlock role-add role-delete role-update" cmd=onevmgroup if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in delete|show|chgrp|chown|chmod|update|rename|lock|unlock| \ role-add|role-delete|role-update) _complete $cmd ;; create) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then case "$pprev" in role-add) _one_complete_files "$cur" return 0 ;; *) _one_owner_update "$pprev" ;; esac fi } _onevnet() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create delete addar rmar free hold release reserve chgrp chown chmod list show update updatear rename lock unlock orphans recover" cmd=onevnet if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in delete|addar|rmar|free|hold|release|reserve|recover|chgrp| \ chown|chmod|show|update|updatear|rename|lock|unlock) _complete $cmd ;; create) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then case "$pprev" in addar|update) _one_complete_files "$cur" return 0 ;; reserve) _complete onevnet ;; esac _one_owner_update "$pprev" fi } _onevntemplate() { local opts cmd opts="create clone delete instantiate chgrp chown chmod update rename list show top lock unlock" cmd=onevntemplate _one_template } _onevrouter() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create instantiate delete chgrp chown chmod update rename nic-attach nic-detach list show top lock unlock" cmd=onevrouter if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in instantiate|delete|chgrp|chown|chmod|update|rename|nic-attach| \ nic-detach|show|lock|unlock) _complete $cmd ;; create) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then _one_owner_update "$pprev" fi } _onezone() { local cur prev opts cmd COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ "${#COMP_WORDS[@]}" -gt "2" ]; then pprev="${COMP_WORDS[COMP_CWORD-2]}" fi opts="create rename server-add server-del server-reset update delete list show set serversync enable disable" cmd=onezone if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 elif [ "$COMP_CWORD" == 2 ]; then case "$prev" in rename|server-add|server-del|server-reset|update|delete|show|set| \ enable|disable) _complete $cmd ;; create) _one_complete_files "$cur" return 0 ;; esac elif [ "$COMP_CWORD" == 3 ]; then case "$pprev" in update) _one_complete_files "$cur" return 0 ;; esac fi } complete -F _oneacl oneacl complete -F _onebackupjob onebackupjob complete -F _onecluster onecluster complete -F _onedatastore onedatastore complete -F _onedb onedb complete -F _oneflow oneflow complete -F _oneflow_template oneflow-template complete -F _onegroup onegroup complete -F _onehook onehook complete -F _onehost onehost complete -F _oneimage oneimage complete -F _onemarket onemarket complete -F _onemarketapp onemarketapp complete -F _oneform oneform complete -F _oneprovision oneprovision complete -F _oneprovider oneprovider complete -F _oneks oneks complete -F _onesecgroup onesecgroup complete -F _oneshowback oneshowback complete -F _onetemplate onetemplate complete -F _oneuser oneuser complete -F _onevdc onevdc complete -F _onevm onevm complete -F _onevmgroup onevmgroup complete -F _onevnet onevnet complete -F _onevntemplate onevntemplate complete -F _onevrouter onevrouter complete -F _onezone onezone