

svcmgr="abort clear collector compliance create delete disable dns docker edit enable freeze frozen get giveback logs ls migrate pg postsync presync print provision prstatus pull push resource restart resync run scale set shutdown snooze start startstandby status stop switch sync takeover thaw toc unprovision unset unsnooze update validate"
svcmgr_collector="ack alerts asset checks create disks events list log networks show tag untag"
svcmgr_collector_ack="action unavailability"
svcmgr_collector_create="tag"
svcmgr_collector_list="actions tags unavailability"
svcmgr_collector_list_unavailability="ack"
svcmgr_collector_show="actions tags"
svcmgr_compliance="attach auto check detach env fix fixable list show"
svcmgr_compliance_list="moduleset ruleset"
svcmgr_compliance_show="moduleset ruleset status"
svcmgr_dns="update"
svcmgr_edit="config"
svcmgr_pg="freeze kill thaw"
svcmgr_print="base config devs exposed resinfo resource schedule status sub"
svcmgr_print_base="devs"
svcmgr_print_config="mtime"
svcmgr_print_exposed="devs"
svcmgr_print_resource="status"
svcmgr_print_sub="devs"
svcmgr_push="config encap resinfo status"
svcmgr_push_encap="config"
svcmgr_resource="monitor"
svcmgr_set="provisioned unprovisioned"
svcmgr_sync="all break drp establish full nodes quiesce restore resume resync revert split update verify"
svcmgr_validate="config"
svcmgr_update="--color --daemon --debug --disable-rollback --dry-run --env --local --master --node --nolock --provision --resource --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_set="--add --color --daemon --debug --dry-run --env --eval --index --kw --local --master --node --nolock --param --remove --rid --slave --slaves --status --subsets --tags --value --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_unset="--color --daemon --debug --dry-run --env --kw --local --master --node --nolock --param --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_get="--color --daemon --debug --dry-run --env --eval --impersonate --kw --local --master --node --nolock --param --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_edit_config="--color --daemon --debug --discard --env --recover --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_delete="--color --daemon --debug --dry-run --env --local --master --node --nolock --purge-collector --rid --slave --slaves --status --subsets --tags --time --unprovision --wait --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_validate_config="--color --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_create="--color --config --daemon --debug --disable-rollback --dry-run --env --local --master --node --nolock --provision --resource --rid --slave --slaves --status --subsets --tags --template --waitlock -c --cluster -f --force -h --help -i --interactive -p --parallel -s --service"
svcmgr_print_config="--color --daemon --debug --env --eval --format --impersonate --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_print_resinfo="--color --daemon --debug --env --format --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_compliance_fix="--attach --color --daemon --debug --env --module --moduleset --ruleset-date --status --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_compliance_list_moduleset="--color --daemon --debug --env --moduleset --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_compliance_detach="--color --daemon --debug --env --moduleset --ruleset --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_compliance_attach="--color --daemon --debug --env --moduleset --ruleset --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_compliance_show_ruleset="--color --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_compliance_env="--color --daemon --debug --env --module --moduleset --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_compliance_show_status="--color --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_compliance_list_ruleset="--color --daemon --debug --env --ruleset --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_compliance_fixable="--attach --color --daemon --debug --env --module --moduleset --ruleset-date --status --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_compliance_show_moduleset="--color --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_compliance_check="--attach --color --daemon --debug --env --module --moduleset --ruleset-date --status --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_compliance_auto="--attach --color --cron --daemon --debug --env --module --moduleset --ruleset-date --status --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_collector_disks="--color --daemon --debug --env --format --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_log="--color --daemon --debug --env --message --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_networks="--color --daemon --debug --env --format --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_list_actions="--begin --color --daemon --debug --end --env --format --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_checks="--color --daemon --debug --env --format --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_tag="--color --daemon --debug --env --status --tag --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_ack_unavailability="--account --author --begin --color --comment --daemon --debug --duration --end --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_list_tags="--color --daemon --debug --env --format --like --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_untag="--color --daemon --debug --env --status --tag --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_show_actions="--begin --color --daemon --debug --end --env --format --id --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_show_tags="--color --daemon --debug --env --format --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_list_unavailability_ack="--author --begin --color --comment --daemon --debug --end --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_create_tag="--color --daemon --debug --env --status --tag --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_ack_action="--author --color --comment --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_alerts="--color --daemon --debug --env --format --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_events="--begin --color --daemon --debug --end --env --format --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_collector_asset="--color --daemon --debug --env --format --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_prstatus="--color --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_takeover="--color --daemon --debug --disable-rollback --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --time --wait --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_sync_update="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_logs="--backlog --color --daemon --debug --env --follow --local --no-pager --node --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_print_base_devs="--color --daemon --debug --env --format --rid --status --subsets --tags --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_migrate="--color --daemon --debug --disable-rollback --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --time --to --wait --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_push_encap_config="--color --cron --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_sync_resync="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_freeze="--color --daemon --debug --env --local --master --node --slave --slaves --status --time --wait --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_abort="--color --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_resync="--color --daemon --debug --disable-rollback --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_shutdown="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --time --wait --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_sync_split="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_run="--color --cron --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_push_resinfo="--color --cron --daemon --debug --env --status --sync --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_pg_freeze="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_scale="--color --daemon --debug --env --local --node --status --to --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_unsnooze="--color --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_presync="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_sync_drp="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_sync_establish="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_giveback="--color --daemon --debug --disable-rollback --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --time --wait --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_print_resource_status="--color --daemon --debug --env --format --rid --status --waitlock -c --cluster -h --help -p --parallel -r --refresh -s --service"
svcmgr_start="--color --daemon --debug --disable-rollback --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --time --upto --wait --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_sync_break="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_ls="--color --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_sync_all="--color --cron --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_sync_resume="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_toc="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_push_status="--color --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_set_provisioned="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_status="--color --cron --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -r --refresh -s --service"
svcmgr_dns_update="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_print_status="--color --daemon --debug --env --format --hide-disabled --show-disabled --status --waitlock -c --cluster -h --help -p --parallel -r --refresh -s --service"
svcmgr_enable="--color --daemon --debug --env --rid --status --subsets --tags --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_thaw="--color --daemon --debug --env --local --master --node --slave --slaves --status --time --wait --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_resource_monitor="--color --cron --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_pg_thaw="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_stop="--color --daemon --debug --downto --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --time --wait --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_print_exposed_devs="--color --daemon --debug --env --format --rid --status --subsets --tags --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_sync_restore="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_startstandby="--color --daemon --debug --disable-rollback --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_disable="--color --daemon --debug --env --rid --status --subsets --tags --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_unprovision="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --time --wait --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_print_devs="--color --daemon --debug --env --format --rid --status --subsets --tags --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_snooze="--color --daemon --debug --duration --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_provision="--color --daemon --debug --disable-rollback --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --time --wait --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_restart="--color --daemon --debug --disable-rollback --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_sync_revert="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_pull="--color --daemon --debug --disable-rollback --env --provision --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_set_unprovisioned="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_frozen="--color --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_clear="--color --daemon --debug --env --local --node --slave --slaves --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_postsync="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_sync_quiesce="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_sync_verify="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_sync_nodes="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_switch="--color --daemon --debug --disable-rollback --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --time --to --wait --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_print_config_mtime="--color --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_pg_kill="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_print_sub_devs="--color --daemon --debug --env --format --rid --status --subsets --tags --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_sync_full="--color --daemon --debug --dry-run --env --local --master --node --nolock --rid --slave --slaves --status --subsets --tags --waitlock -c --cluster -f --force -h --help -p --parallel -s --service"
svcmgr_print_schedule="--color --daemon --debug --env --format --status --verbose --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_docker="--color --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
svcmgr_push_config="--color --cron --daemon --debug --env --status --waitlock -c --cluster -h --help -p --parallel -s --service"
nodemgr="array auto checks collect collector compliance daemon dequeue discover edit events freeze frozen get logs network ping pool print prkey pushasset pushbrocade pushcentera pushdcs pushdisks pushemcvnx pusheva pushfreenas pushgcedisks pushhds pushhp3par pushibmds pushibmsvc pushnecism pushnetapp pushnsr pushpatch pushpkg pushstats pushsym pushvioserver pushxtremio reboot register rotate scanscsi schedule set shutdown snooze stonith sysreport thaw unschedule unset unsnooze updatecomp updatepkg validate wol"
nodemgr_auto="reboot"
nodemgr_collect="stats"
nodemgr_collector="ack alerts asset checks cli create disks events list log networks search show tag untag"
nodemgr_collector_ack="action"
nodemgr_collector_create="tag"
nodemgr_collector_list="actions filtersets nodes services tags"
nodemgr_collector_show="actions tags"
nodemgr_compliance="attach auto check detach env fix fixable list show"
nodemgr_compliance_list="module moduleset ruleset"
nodemgr_compliance_show="moduleset ruleset status"
nodemgr_daemon="blacklist join leave restart running shutdown start status stop"
nodemgr_daemon_blacklist="clear status"
nodemgr_dequeue="actions"
nodemgr_edit="authconfig config"
nodemgr_network="ls show"
nodemgr_pool="ls status"
nodemgr_print="authconfig config devs schedule"
nodemgr_rotate="root"
nodemgr_rotate_root="pw"
nodemgr_schedule="reboot"
nodemgr_schedule_reboot="status"
nodemgr_unschedule="reboot"
nodemgr_validate="config"
nodemgr_compliance_fix="--attach --color --debug --force --format --module --moduleset --ruleset-date -h --help"
nodemgr_compliance_list_moduleset="--color --debug --format --moduleset -h --help"
nodemgr_compliance_detach="--color --debug --format --moduleset --ruleset -h --help"
nodemgr_compliance_attach="--color --debug --format --moduleset --ruleset -h --help"
nodemgr_compliance_show_ruleset="--color --debug --format -h --help"
nodemgr_compliance_env="--color --debug --format --module --moduleset -h --help"
nodemgr_compliance_show_status="--color --debug --format -h --help"
nodemgr_compliance_list_ruleset="--color --debug --format --ruleset -h --help"
nodemgr_compliance_fixable="--attach --color --debug --force --format --module --moduleset --ruleset-date -h --help"
nodemgr_compliance_list_module="--color --debug --format -h --help"
nodemgr_compliance_show_moduleset="--color --debug --format -h --help"
nodemgr_compliance_check="--attach --color --debug --force --format --module --moduleset --ruleset-date -h --help"
nodemgr_compliance_auto="--color --cron --debug --format -h --help"
nodemgr_prkey="--color --debug --format -h --help"
nodemgr_pushnsr="--color --cron --debug --format --object -h --help"
nodemgr_pushcentera="--color --cron --debug --format --object -h --help"
nodemgr_pushibmds="--color --cron --debug --format --object -h --help"
nodemgr_pushhp3par="--color --cron --debug --format --object -h --help"
nodemgr_pushxtremio="--color --cron --debug --format --object -h --help"
nodemgr_pushpatch="--color --cron --debug --format -h --help"
nodemgr_pushpkg="--color --cron --debug --format -h --help"
nodemgr_pushvioserver="--color --cron --debug --format --object -h --help"
nodemgr_pushasset="--color --cron --debug --format --sync -h --help"
nodemgr_pushibmsvc="--color --cron --debug --format --object -h --help"
nodemgr_pushnetapp="--color --cron --debug --format --object -h --help"
nodemgr_pushgcedisks="--color --cron --debug --format --object -h --help"
nodemgr_pusheva="--color --cron --debug --format --object -h --help"
nodemgr_pushnecism="--color --cron --debug --format --object -h --help"
nodemgr_pushdcs="--color --cron --debug --format --object -h --help"
nodemgr_pushbrocade="--color --cron --debug --format --object -h --help"
nodemgr_sysreport="--color --cron --debug --format -h --help"
nodemgr_pushemcvnx="--color --cron --debug --format --object -h --help"
nodemgr_pushfreenas="--color --cron --debug --format --object -h --help"
nodemgr_pushhds="--color --cron --debug --format --object -h --help"
nodemgr_pushstats="--begin --color --cron --debug --end --format --stats-dir -h --help"
nodemgr_pushsym="--color --cron --debug --format --object --symcli-db-file -h --help"
nodemgr_checks="--color --cron --debug --format -h --help"
nodemgr_pushdisks="--color --cron --debug --format -h --help"
nodemgr_pool_ls="--color --debug --format -h --help"
nodemgr_pool_status="--color --debug --format --id -h --help"
nodemgr_print_authconfig="--color --debug --format -h --help"
nodemgr_set="--add --color --debug --eval --format --index --kw --param --remove --value -h --help"
nodemgr_unset="--color --debug --format --kw --param -h --help"
nodemgr_get="--color --debug --eval --format --kw --param -h --help"
nodemgr_validate_config="--color --debug --format -h --help"
nodemgr_edit_config="--color --debug --discard --format --recover -h --help"
nodemgr_register="--app --color --debug --format --password --user -h --help"
nodemgr_edit_authconfig="--color --debug --format -h --help"
nodemgr_print_config="--color --debug --format -h --help"
nodemgr_logs="--backlog --color --debug --follow --format --local --node -h --help"
nodemgr_auto_reboot="--color --cron --debug --format -h --help"
nodemgr_freeze="--color --debug --format --local --node --time --wait -h --help"
nodemgr_schedule_reboot="--color --debug --format -h --help"
nodemgr_shutdown="--color --debug --format --local --node -h --help"
nodemgr_array="--color --debug --format -h --help"
nodemgr_scanscsi="--color --debug --format --hba --lun --target -h --help"
nodemgr_unsnooze="--color --debug --format -h --help"
nodemgr_unschedule_reboot="--color --debug --format -h --help"
nodemgr_ping="--color --debug --format --node -h --help"
nodemgr_reboot="--color --debug --format --local --node -h --help"
nodemgr_wol="--broadcast --color --debug --format --mac --port -h --help"
nodemgr_collect_stats="--color --cron --debug --format -h --help"
nodemgr_events="--color --debug --format --local --node -h --help"
nodemgr_thaw="--color --debug --format --local --node --time --wait -h --help"
nodemgr_schedule_reboot_status="--color --debug --format -h --help"
nodemgr_print_devs="--color --debug --dev --format --reverse --verbose -h --help"
nodemgr_dequeue_actions="--color --cron --debug --format -h --help"
nodemgr_snooze="--color --debug --duration --format -h --help"
nodemgr_updatepkg="--color --debug --format --local --node -h --help"
nodemgr_frozen="--color --debug --format -h --help"
nodemgr_stonith="--color --debug --format --node -h --help"
nodemgr_rotate_root_pw="--color --cron --debug --format -h --help"
nodemgr_updatecomp="--color --debug --format --local --node -h --help"
nodemgr_print_schedule="--color --debug --format --verbose -h --help"
nodemgr_discover="--color --debug --format -h --help"
nodemgr_network_ls="--color --debug --format -h --help"
nodemgr_network_show="--color --debug --format --id -h --help"
nodemgr_collector_list_tags="--color --debug --format --like -h --help"
nodemgr_collector_disks="--color --debug --format -h --help"
nodemgr_collector_log="--color --debug --format --message -h --help"
nodemgr_collector_events="--begin --color --debug --end --format -h --help"
nodemgr_collector_search="--color --debug --format --like -h --help"
nodemgr_collector_list_filtersets="--color --debug --format -h --help"
nodemgr_collector_list_actions="--begin --color --debug --end --format -h --help"
nodemgr_collector_cli="--api --color --config --debug --format --insecure --password --refresh-api --save --user -h --help"
nodemgr_collector_tag="--color --debug --format --tag -h --help"
nodemgr_collector_list_services="--color --debug --format -h --help"
nodemgr_collector_networks="--color --debug --format -h --help"
nodemgr_collector_untag="--color --debug --format -h --help"
nodemgr_collector_show_actions="--begin --color --debug --end --format --id -h --help"
nodemgr_collector_checks="--color --debug --format -h --help"
nodemgr_collector_show_tags="--color --debug --format -h --help"
nodemgr_collector_create_tag="--color --debug --format --tag -h --help"
nodemgr_collector_list_nodes="--color --debug --format -h --help"
nodemgr_collector_ack_action="--author --color --comment --debug --format -h --help"
nodemgr_collector_alerts="--color --debug --format -h --help"
nodemgr_collector_asset="--color --debug --format -h --help"
nodemgr_daemon_stop="--color --debug --format --local --node --thread-id -h --help"
nodemgr_daemon_status="--color --debug --format --node -h --help"
nodemgr_daemon_running="--color --debug --format -h --help"
nodemgr_daemon_leave="--color --debug --format -h --help"
nodemgr_daemon_blacklist_clear="--color --debug --format -h --help"
nodemgr_daemon_join="--color --debug --format --node --secret -h --help"
nodemgr_daemon_blacklist_status="--color --debug --format -h --help"
nodemgr_daemon_shutdown="--color --debug --format -h --help"
nodemgr_daemon_restart="--color --debug --format -h --help"
nodemgr_daemon_start="--color --debug --format --local --node --thread-id -h --help"

opts_with_arg=( "--add" "--api" "--app" "--author" "--backlog" "--begin" "--broadcast" "--color" "--comment" "--config" "--dev" "--downto" "--duration" "--end" "--env" "--format" "--hba" "--id" "--impersonate" "--index" "--kw" "--like" "--lun" "--mac" "--message" "--module" "--moduleset" "--node" "--object" "--param" "--password" "--port" "--remove" "--resource" "--rid" "--ruleset" "--ruleset-date" "--secret" "--service" "--slave" "--stats-dir" "--status" "--subsets" "--symcli-db-file" "--tag" "--tags" "--target" "--template" "--thread-id" "--time" "--to" "--upto" "--user" "--value" "--waitlock" "-s" )



svcs=$(find /etc/opensvc /opt/opensvc/etc -maxdepth 1 -lname "*/bin/svcmgr" -a ! -name "*.*" -exec basename {} \; 2>/dev/null)

opt_has_arg()
{
    for option in ${opts_with_arg[@]}
    do
        if [ "$option" == "$1" ]
        then
            return 0
        fi
    done
    return 1
}

_comp_handler() 
{
    local a prev action opts
    COMPREPLY=()
    if [ "${COMP_WORDS[0]}" != "nodemgr" ]
    then
        COMP_WORDS[0]="svcmgr"
    fi
    a="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    case "${prev}" in
        --color)
            COMPREPLY=( $(compgen -W "yes no" -- ${a}) )
            return 0
            ;;
        --format)
            COMPREPLY=( $(compgen -W "csv json table" -- ${a}) )
            return 0
            ;;
        --service|-s)
            COMPREPLY=( $(compgen -W "${svcs}" -- ${a}) )
            return 0
            ;;
        *)
        ;;
    esac

    action=()
    typeset -i skip=0

    for word in ${COMP_WORDS[@]}
    do
        if [ "${word#-}" != "${word}" ]
        then
            opt_has_arg ${word} && skip=1
        elif [ $skip -eq 1 ]
        then
            skip=0
        else
            action+=(${word})
        fi
    done

    action="${action[@]}"
    action="${action// /_}"
    opts=""

    while [ "$action" != "" -a "$opts" == "" ]
    do
        opts="${!action}"
        action=${action%_*}
    done

    extra_opts="${!action}"
    if [ "$a" != "" -a "$opts" != "" ]
    then
        opts="$opts $extra_opts"
    fi

    COMPREPLY=($(compgen -W "${opts}" -- ${a}))

    return 0
}

complete -F _comp_handler svcmgr

for s in ${svcs} ; do
    complete -F _comp_handler $s
done

complete -F _comp_handler nodemgr

