_vinfra()
{
  local cur prev words
  COMPREPLY=()
  _get_comp_words_by_ref -n : cur prev words

  # Command data:
  cmds='cluster help node service task'
  cmds_cluster='alert auditlog create delete domain ha license network overview problem-report settings show sshkey storage-policy traffic-type user'
  cmds_cluster_alert='delete list show'
  cmds_cluster_alert_delete='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_alert_list='-h --help -f --format -c --column --raw-http-error --full --all'
  cmds_cluster_alert_show='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_auditlog='list show'
  cmds_cluster_auditlog_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_cluster_auditlog_show='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --tier-encryption --disk --node'
  cmds_cluster_delete='-h --help --raw-http-error --timeout'
  cmds_cluster_domain='create delete list project set show user'
  cmds_cluster_domain_create='-h --help -f --format -c --column --raw-http-error --description --enable --disable'
  cmds_cluster_domain_delete='-h --help --raw-http-error'
  cmds_cluster_domain_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_cluster_domain_project='create delete list set show user'
  cmds_cluster_domain_project_create='-h --help -f --format -c --column --raw-http-error --name --description --enable --disable'
  cmds_cluster_domain_project_delete='-h --help --raw-http-error --project'
  cmds_cluster_domain_project_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_cluster_domain_project_set='-h --help -f --format -c --column --raw-http-error --project --name --description --enable --disable'
  cmds_cluster_domain_project_show='-h --help -f --format -c --column --raw-http-error --project'
  cmds_cluster_domain_project_user='assign list remove'
  cmds_cluster_domain_project_user_assign='-h --help -f --format -c --column --raw-http-error --project --user --roles'
  cmds_cluster_domain_project_user_list='-h --help -f --format -c --column --raw-http-error --full --project'
  cmds_cluster_domain_project_user_remove='-h --help --raw-http-error --project --user'
  cmds_cluster_domain_set='-h --help -f --format -c --column --raw-http-error --description --enable --disable --name'
  cmds_cluster_domain_show='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_domain_user='create delete list set show'
  cmds_cluster_domain_user_create='-h --help -f --format -c --column --raw-http-error --email --description --assign --domain-permissions --system-permissions --enable --disable --name'
  cmds_cluster_domain_user_delete='-h --help --raw-http-error --user'
  cmds_cluster_domain_user_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_cluster_domain_user_set='-h --help -f --format -c --column --raw-http-error --password --user --email --description --assign --domain-permissions --system-permissions --enable --disable --name'
  cmds_cluster_domain_user_show='-h --help -f --format -c --column --raw-http-error --user'
  cmds_cluster_ha='create delete show update'
  cmds_cluster_ha_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --virtual-ip --nodes --force'
  cmds_cluster_ha_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_cluster_ha_show='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_ha_update='-h --help -f --format -c --column --raw-http-error --wait --timeout --virtual-ip --nodes --force'
  cmds_cluster_license='load show update'
  cmds_cluster_license_load='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_license_show='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_license_update='-h --help -f --format -c --column --raw-http-error --server'
  cmds_cluster_network='create delete list set set-bulk show'
  cmds_cluster_network_create='-h --help -f --format -c --column --raw-http-error --traffic-types'
  cmds_cluster_network_delete='-h --help --raw-http-error'
  cmds_cluster_network_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_cluster_network_set='-h --help -f --format -c --column --raw-http-error --wait --timeout --name --traffic-types --add-traffic-types --del-traffic-types'
  cmds_cluster_network_set_bulk='-h --help -f --format -c --column --raw-http-error --wait --timeout --network'
  cmds_cluster_network_show='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_overview='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_problem_report='-h --help -f --format -c --column --raw-http-error --wait --timeout --email --description --send'
  cmds_cluster_settings='dns encryption ssl'
  cmds_cluster_settings_dns='set show'
  cmds_cluster_settings_dns_set='-h --help -f --format -c --column --raw-http-error --nameservers'
  cmds_cluster_settings_dns_show='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_settings_encryption='set show'
  cmds_cluster_settings_encryption_set='-h --help -f --format -c --column --raw-http-error --tier-enable --tier-disable'
  cmds_cluster_settings_encryption_show='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_settings_ssl='set show'
  cmds_cluster_settings_ssl_set='-h --help -f --format -c --column --raw-http-error --self-signed --cert-file --key-file --password'
  cmds_cluster_settings_ssl_show='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_show='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_sshkey='add delete list'
  cmds_cluster_sshkey_add='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_cluster_sshkey_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_cluster_sshkey_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_cluster_storage_policy='create delete list set show'
  cmds_cluster_storage_policy_create='-h --help -f --format -c --column --raw-http-error --tier --replicas --encoding --failure-domain'
  cmds_cluster_storage_policy_delete='-h --help --raw-http-error'
  cmds_cluster_storage_policy_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_cluster_storage_policy_set='-h --help -f --format -c --column --raw-http-error --name --tier --replicas --encoding --failure-domain'
  cmds_cluster_storage_policy_show='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_traffic_type='create delete list set show'
  cmds_cluster_traffic_type_create='-h --help -f --format -c --column --raw-http-error --port'
  cmds_cluster_traffic_type_delete='-h --help --raw-http-error'
  cmds_cluster_traffic_type_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_cluster_traffic_type_set='-h --help -f --format -c --column --raw-http-error --name --port'
  cmds_cluster_traffic_type_show='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_user='change-password create delete list list-available-roles set show'
  cmds_cluster_user_change_password='-h --help -f --format -c --column --raw-http-error'
  cmds_cluster_user_create='-h --help -f --format -c --column --raw-http-error --description --enable --disable --roles'
  cmds_cluster_user_delete='-h --help --raw-http-error'
  cmds_cluster_user_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_cluster_user_list_available_roles='-h --help -f --format -c --column --raw-http-error --full'
  cmds_cluster_user_set='-h --help -f --format -c --column --raw-http-error --description --enable --disable --set-roles --add-roles --del-roles --password --name'
  cmds_cluster_user_show='-h --help -f --format -c --column --raw-http-error'
  cmds_help='-h --help'
  cmds_node='disk forget iface iscsi join list network release show token'
  cmds_node_disk='assign blink list release show'
  cmds_node_disk_assign='-h --help -f --format -c --column --raw-http-error --wait --timeout --disk --node'
  cmds_node_disk_blink='off on'
  cmds_node_disk_blink_off='-h --help --raw-http-error --node'
  cmds_node_disk_blink_on='-h --help --raw-http-error --node'
  cmds_node_disk_list='-h --help -f --format -c --column --raw-http-error --full -a --all --node'
  cmds_node_disk_release='-h --help -f --format -c --column --raw-http-error --wait --timeout --force --node'
  cmds_node_disk_show='-h --help -f --format -c --column --raw-http-error --node'
  cmds_node_forget='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_node_iface='create-bond create-vlan down list set show up'
  cmds_node_iface_create_bond='-h --help -f --format -c --column --raw-http-error --wait --timeout --ipv4 --ipv6 --gw4 --gw6 --mtu --dhcp4 --no-dhcp4 --dhcp6 --no-dhcp6 --auto-routes-v4 --ignore-auto-routes-v4 --auto-routes-v6 --ignore-auto-routes-v6 --network --bonding-opts --node --bond-type --ifaces'
  cmds_node_iface_create_vlan='-h --help -f --format -c --column --raw-http-error --wait --timeout --ipv4 --ipv6 --gw4 --gw6 --mtu --dhcp4 --no-dhcp4 --dhcp6 --no-dhcp6 --auto-routes-v4 --ignore-auto-routes-v4 --auto-routes-v6 --ignore-auto-routes-v6 --network --node --iface --tag'
  cmds_node_iface_down='-h --help -f --format -c --column --raw-http-error --wait --timeout --node'
  cmds_node_iface_list='-h --help -f --format -c --column --raw-http-error --full -a --all --node'
  cmds_node_iface_set='-h --help -f --format -c --column --raw-http-error --wait --timeout --ipv4 --ipv6 --gw4 --gw6 --mtu --dhcp4 --no-dhcp4 --dhcp6 --no-dhcp6 --auto-routes-v4 --ignore-auto-routes-v4 --auto-routes-v6 --ignore-auto-routes-v6 --network --no-network --connected-mode --datagram-mode --node'
  cmds_node_iface_show='-h --help -f --format -c --column --raw-http-error --node'
  cmds_node_iface_up='-h --help -f --format -c --column --raw-http-error --wait --timeout --node'
  cmds_node_iscsi='target'
  cmds_node_iscsi_target='add delete'
  cmds_node_iscsi_target_add='-h --help -f --format -c --column --raw-http-error --wait --timeout --auth-username --auth-password --portal --node'
  cmds_node_iscsi_target_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout --node'
  cmds_node_join='-h --help -f --format -c --column --raw-http-error --wait --timeout --disk'
  cmds_node_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_node_network='bond iface vlan'
  cmds_node_network_bond='create delete'
  cmds_node_network_bond_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --ipv4 --ipv6 --gw4 --gw6 --mtu --dhcp4 --no-dhcp4 --dhcp6 --no-dhcp6 --auto-routes-v4 --ignore-auto-routes-v4 --auto-routes-v6 --ignore-auto-routes-v6 --network --bonding-opts --node --bond-type --ifaces'
  cmds_node_network_bond_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout --node'
  cmds_node_network_iface='delete down list set show up'
  cmds_node_network_iface_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout --node'
  cmds_node_network_iface_down='-h --help -f --format -c --column --raw-http-error --wait --timeout --node'
  cmds_node_network_iface_list='-h --help -f --format -c --column --raw-http-error --full -a --all --node'
  cmds_node_network_iface_set='-h --help -f --format -c --column --raw-http-error --wait --timeout --ipv4 --ipv6 --gw4 --gw6 --mtu --dhcp4 --no-dhcp4 --dhcp6 --no-dhcp6 --auto-routes-v4 --ignore-auto-routes-v4 --auto-routes-v6 --ignore-auto-routes-v6 --network --no-network --connected-mode --datagram-mode --node'
  cmds_node_network_iface_show='-h --help -f --format -c --column --raw-http-error --node'
  cmds_node_network_iface_up='-h --help -f --format -c --column --raw-http-error --wait --timeout --node'
  cmds_node_network_vlan='create delete'
  cmds_node_network_vlan_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --ipv4 --ipv6 --gw4 --gw6 --mtu --dhcp4 --no-dhcp4 --dhcp6 --no-dhcp6 --auto-routes-v4 --ignore-auto-routes-v4 --auto-routes-v6 --ignore-auto-routes-v6 --network --node --iface --tag'
  cmds_node_network_vlan_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout --node'
  cmds_node_release='-h --help -f --format -c --column --raw-http-error --wait --timeout --force'
  cmds_node_show='-h --help -f --format -c --column --raw-http-error'
  cmds_node_token='create show validate'
  cmds_node_token_create='-h --help -f --format -c --column --raw-http-error --ttl'
  cmds_node_token_show='-h --help -f --format -c --column --raw-http-error'
  cmds_node_token_validate='-h --help -f --format -c --column --raw-http-error'
  cmds_service='compute nfs s3'
  cmds_service_compute='cluster flavor floatingip image key network node quotas router server volume'
  cmds_service_compute_cluster='create delete set show stat'
  cmds_service_compute_cluster_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --public-network --subnet --cpu-model --force --nodes'
  cmds_service_compute_cluster_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_cluster_set='-h --help -f --format -c --column --raw-http-error --wait --timeout --cpu-model'
  cmds_service_compute_cluster_show='-h --help -f --format -c --column --raw-http-error'
  cmds_service_compute_cluster_stat='-h --help -f --format -c --column --raw-http-error'
  cmds_service_compute_flavor='create delete list show'
  cmds_service_compute_flavor_create='-h --help -f --format -c --column --raw-http-error --swap --vcpus --ram'
  cmds_service_compute_flavor_delete='-h --help --raw-http-error'
  cmds_service_compute_flavor_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_service_compute_flavor_show='-h --help -f --format -c --column --raw-http-error'
  cmds_service_compute_floatingip='create delete list set show'
  cmds_service_compute_floatingip_create='-h --help -f --format -c --column --raw-http-error --floating-ip-address --port-id --fixed-ip-address --description'
  cmds_service_compute_floatingip_delete='-h --help --raw-http-error'
  cmds_service_compute_floatingip_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_service_compute_floatingip_set='-h --help -f --format -c --column --raw-http-error --port-id --fixed-ip-address --description'
  cmds_service_compute_floatingip_show='-h --help -f --format -c --column --raw-http-error'
  cmds_service_compute_image='create delete list save set show'
  cmds_service_compute_image_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --min-disk --min-ram --os-distro --protected --unprotected --public --private --disk-format --container-format --file'
  cmds_service_compute_image_delete='-h --help --raw-http-error'
  cmds_service_compute_image_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_service_compute_image_save='-h --help --raw-http-error --file'
  cmds_service_compute_image_set='-h --help -f --format -c --column --raw-http-error --min-disk --min-ram --os-distro --protected --unprotected --public --private --name'
  cmds_service_compute_image_show='-h --help -f --format -c --column --raw-http-error'
  cmds_service_compute_key='create delete list show'
  cmds_service_compute_key_create='-h --help -f --format -c --column --raw-http-error --public-key --description'
  cmds_service_compute_key_delete='-h --help --raw-http-error'
  cmds_service_compute_key_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_service_compute_key_show='-h --help -f --format -c --column --raw-http-error'
  cmds_service_compute_network='create delete list set show'
  cmds_service_compute_network_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --dhcp --no-dhcp --dns-nameserver --allocation-pool --gateway --no-gateway --ip-version --type --physical-network --cidr --shared'
  cmds_service_compute_network_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_network_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_service_compute_network_set='-h --help -f --format -c --column --raw-http-error --dhcp --no-dhcp --dns-nameserver --allocation-pool --gateway --no-gateway --name --shared'
  cmds_service_compute_network_show='-h --help -f --format -c --column --raw-http-error'
  cmds_service_compute_node='add fence list release show unfence'
  cmds_service_compute_node_add='-h --help -f --format -c --column --raw-http-error --wait --timeout --compute --controller --force'
  cmds_service_compute_node_fence='-h --help --raw-http-error --force-down --reason'
  cmds_service_compute_node_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_service_compute_node_release='-h --help -f --format -c --column --raw-http-error --wait --timeout --compute --controller'
  cmds_service_compute_node_show='-h --help -f --format -c --column --raw-http-error'
  cmds_service_compute_node_unfence='-h --help --raw-http-error'
  cmds_service_compute_quotas='show update'
  cmds_service_compute_quotas_show='-h --help -f --format -c --column --raw-http-error --usage'
  cmds_service_compute_quotas_update='-h --help --raw-http-error --cores --ram --floatingip --gigabytes'
  cmds_service_compute_router='create delete iface list set show'
  cmds_service_compute_router_create='-h --help -f --format -c --column --raw-http-error --external-gateway --enable-snat --disable-snat --fixed-ip --internal-interface'
  cmds_service_compute_router_delete='-h --help --raw-http-error'
  cmds_service_compute_router_iface='add list remove'
  cmds_service_compute_router_iface_add='-h --help -f --format -c --column --raw-http-error --full --ip-address --interface'
  cmds_service_compute_router_iface_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_service_compute_router_iface_remove='-h --help -f --format -c --column --raw-http-error --full --interface'
  cmds_service_compute_router_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_service_compute_router_set='-h --help -f --format -c --column --raw-http-error --name --external-gateway --no-external-gateway --enable-snat --disable-snat --fixed-ip --route --no-route'
  cmds_service_compute_router_show='-h --help -f --format -c --column --raw-http-error'
  cmds_service_compute_server='create delete evacuate iface list log migrate pause reboot reset-state resize resume set shelve show start stat stop suspend unpause unshelve volume'
  cmds_service_compute_server_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --description --metadata --user-data --key-name --config-drive --count --network --volume --flavor --ha-enabled'
  cmds_service_compute_server_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_server_evacuate='-h --help --raw-http-error'
  cmds_service_compute_server_iface='attach detach list'
  cmds_service_compute_server_iface_attach='-h --help -f --format -c --column --raw-http-error --mac --ip --spoofing-protection --server --network'
  cmds_service_compute_server_iface_detach='-h --help --raw-http-error --server'
  cmds_service_compute_server_iface_list='-h --help -f --format -c --column --raw-http-error --full --server'
  cmds_service_compute_server_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_service_compute_server_log='-h --help --raw-http-error'
  cmds_service_compute_server_migrate='-h --help --raw-http-error --cold --node'
  cmds_service_compute_server_pause='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_server_reboot='-h --help -f --format -c --column --raw-http-error --wait --timeout --hard'
  cmds_service_compute_server_reset_state='-h --help -f --format -c --column --raw-http-error --wait --timeout --state-error'
  cmds_service_compute_server_resize='-h --help -f --format -c --column --raw-http-error --wait --timeout --flavor'
  cmds_service_compute_server_resume='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_server_set='-h --help -f --format -c --column --raw-http-error --name --description --ha-enabled'
  cmds_service_compute_server_shelve='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_server_show='-h --help -f --format -c --column --raw-http-error'
  cmds_service_compute_server_start='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_server_stat='-h --help -f --format -c --column --raw-http-error'
  cmds_service_compute_server_stop='-h --help -f --format -c --column --raw-http-error --wait --timeout --hard'
  cmds_service_compute_server_suspend='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_server_unpause='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_server_unshelve='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_server_volume='attach detach list show'
  cmds_service_compute_server_volume_attach='-h --help -f --format -c --column --raw-http-error --server'
  cmds_service_compute_server_volume_detach='-h --help --raw-http-error --server'
  cmds_service_compute_server_volume_list='-h --help -f --format -c --column --raw-http-error --full --server'
  cmds_service_compute_server_volume_show='-h --help -f --format -c --column --raw-http-error --server'
  cmds_service_compute_volume='clone create delete extend list reset-state set show snapshot upload-to-image'
  cmds_service_compute_volume_clone='-h --help -f --format -c --column --raw-http-error --wait --timeout --name --size --storage-policy'
  cmds_service_compute_volume_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --description --network-install --image --snapshot --storage-policy --size'
  cmds_service_compute_volume_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_volume_extend='-h --help --raw-http-error --size'
  cmds_service_compute_volume_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_service_compute_volume_reset_state='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_volume_set='-h --help -f --format -c --column --raw-http-error --description --network-install --storage-policy --bootable --name'
  cmds_service_compute_volume_show='-h --help -f --format -c --column --raw-http-error'
  cmds_service_compute_volume_snapshot='create delete list reset-state revert set show'
  cmds_service_compute_volume_snapshot_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --description --volume'
  cmds_service_compute_volume_snapshot_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_volume_snapshot_list='-h --help -f --format -c --column --raw-http-error --full --volume'
  cmds_service_compute_volume_snapshot_reset_state='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_volume_snapshot_revert='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_compute_volume_snapshot_set='-h --help -f --format -c --column --raw-http-error --description --name'
  cmds_service_compute_volume_snapshot_show='-h --help -f --format -c --column --raw-http-error'
  cmds_service_compute_volume_upload_to_image='-h --help -f --format -c --column --raw-http-error --wait --timeout --name'
  cmds_service_nfs='cluster export node share'
  cmds_service_nfs_cluster='create delete'
  cmds_service_nfs_cluster_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --tier --replicas --encoding --failure-domain --nodes'
  cmds_service_nfs_cluster_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_nfs_export='create delete list modify set show'
  cmds_service_nfs_export_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --path --access-type --security-types --client --squash --anonymous-gid --anonymous-uid'
  cmds_service_nfs_export_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_nfs_export_list='-h --help -f --format -c --column --raw-http-error --full --share-name'
  cmds_service_nfs_export_modify='-h --help -f --format -c --column --raw-http-error --wait --timeout --path --access-type --security-types --client --squash --anonymous-gid --anonymous-uid'
  cmds_service_nfs_export_set='-h --help -f --format -c --column --raw-http-error --wait --timeout --path --access-type --security-types --client --squash --anonymous-gid --anonymous-uid'
  cmds_service_nfs_export_show='-h --help -f --format -c --column --raw-http-error'
  cmds_service_nfs_node='add list release'
  cmds_service_nfs_node_add='-h --help -f --format -c --column --raw-http-error --nodes --wait --timeout'
  cmds_service_nfs_node_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_service_nfs_node_release='-h --help -f --format -c --column --raw-http-error --wait --timeout --nodes'
  cmds_service_nfs_share='create delete list modify set show start stop'
  cmds_service_nfs_share_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --node --ip-address --size --tier --replicas --encoding --failure-domain --krb-keytab'
  cmds_service_nfs_share_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_nfs_share_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_service_nfs_share_modify='-h --help -f --format -c --column --raw-http-error --wait --timeout --tier --replicas --encoding --failure-domain --size --krb-keytab --krb-auth'
  cmds_service_nfs_share_set='-h --help -f --format -c --column --raw-http-error --wait --timeout --tier --replicas --encoding --failure-domain --size --krb-keytab --krb-auth'
  cmds_service_nfs_share_show='-h --help -f --format -c --column --raw-http-error'
  cmds_service_nfs_share_start='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_nfs_share_stop='-h --help -f --format -c --column --raw-http-error --wait --timeout --force'
  cmds_service_s3='cluster node show'
  cmds_service_s3_cluster='create delete'
  cmds_service_s3_cluster_create='-h --help -f --format -c --column --raw-http-error --wait --timeout --tier --replicas --encoding --failure-domain --self-signed --no-ssl --cert-file --insecure --key-file --password --np-uri --np-user-key --nodes --s3gw-domain'
  cmds_service_s3_cluster_delete='-h --help -f --format -c --column --raw-http-error --wait --timeout'
  cmds_service_s3_node='add release'
  cmds_service_s3_node_add='-h --help -f --format -c --column --raw-http-error --wait --timeout --nodes'
  cmds_service_s3_node_release='-h --help -f --format -c --column --raw-http-error --wait --timeout --nodes'
  cmds_service_s3_show='-h --help -f --format -c --column --raw-http-error'
  cmds_task='list show wait'
  cmds_task_list='-h --help -f --format -c --column --raw-http-error --full'
  cmds_task_show='-h --help -f --format -c --column --raw-http-error --debug'
  cmds_task_wait='-h --help -f --format -c --column --raw-http-error --timeout'

  dash=-
  underscore=_
  cmd=""
  words[0]=""
  completed="${cmds}"
  for var in "${words[@]:1}"
  do
    if [[ ${var} == -* ]] ; then
      break
    fi
    if [ -z "${cmd}" ] ; then
      proposed="${var}"
    else
      proposed="${cmd}_${var}"
    fi
    local i="cmds_${proposed}"
    i=${i//$dash/$underscore}
    local comp="${!i}"
    if [ -z "${comp}" ] ; then
      break
    fi
    if [[ ${comp} == -* ]] ; then
      if [[ ${cur} != -* ]] ; then
        completed=""
        break
      fi
    fi
    cmd="${proposed}"
    completed="${comp}"
  done

  if [ -z "${completed}" ] ; then
    COMPREPLY=( $( compgen -f -- "$cur" ) $( compgen -d -- "$cur" ) )
  else
    COMPREPLY=( $(compgen -W "${completed}" -- ${cur}) )
  fi
  return 0
}
complete -F _vinfra vinfra
