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

  # Command data:
  cmds='address aggregate availability backup catalog command complete compute configuration consistency console container ec2 endpoint extension flavor floating help host hypervisor image ip keypair limits module network object port project quota role router security server service snapshot subnet token usage user volume'
  cmds_address='scope'
  cmds_address_scope='create delete list set show'
  cmds_address_scope_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --ip-version --project --project-domain --share --no-share'
  cmds_address_scope_delete='-h --help'
  cmds_address_scope_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --name --ip-version --project --project-domain --share --no-share'
  cmds_address_scope_set='-h --help --name --share --no-share'
  cmds_address_scope_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_aggregate='add create delete list remove set show unset'
  cmds_aggregate_add='host'
  cmds_aggregate_add_host='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_aggregate_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --zone --property'
  cmds_aggregate_delete='-h --help'
  cmds_aggregate_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --long'
  cmds_aggregate_remove='host'
  cmds_aggregate_remove_host='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_aggregate_set='-h --help --name --zone --property --no-property'
  cmds_aggregate_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_aggregate_unset='-h --help --property'
  cmds_availability='zone'
  cmds_availability_zone='list'
  cmds_availability_zone_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --compute --network --volume --long'
  cmds_backup='create delete list restore show'
  cmds_backup_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --name --description --container --snapshot --force --incremental'
  cmds_backup_delete='-h --help --force'
  cmds_backup_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --long --name --status --volume --marker --limit --all-projects'
  cmds_backup_restore='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_backup_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_catalog='list show'
  cmds_catalog_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_catalog_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_command='list'
  cmds_command_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --group'
  cmds_complete='-h --help --name --openstack'
  cmds_compute='agent service'
  cmds_compute_agent='create delete list set'
  cmds_compute_agent_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_compute_agent_delete='-h --help'
  cmds_compute_agent_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --hypervisor'
  cmds_compute_agent_set='-h --help --agent-version --url --md5hash'
  cmds_compute_service='delete list set'
  cmds_compute_service_delete='-h --help'
  cmds_compute_service_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --host --service --long'
  cmds_compute_service_set='-h --help --enable --disable --disable-reason --up --down'
  cmds_configuration='show'
  cmds_configuration_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --mask --unmask'
  cmds_consistency='group'
  cmds_consistency_group='add create delete list remove set show snapshot'
  cmds_consistency_group_add='volume'
  cmds_consistency_group_add_volume='-h --help'
  cmds_consistency_group_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --volume-type --consistency-group-source --consistency-group-snapshot --description --availability-zone'
  cmds_consistency_group_delete='-h --help --force'
  cmds_consistency_group_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --all-projects --long'
  cmds_consistency_group_remove='volume'
  cmds_consistency_group_remove_volume='-h --help'
  cmds_consistency_group_set='-h --help --name --description'
  cmds_consistency_group_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_consistency_group_snapshot='create delete list show'
  cmds_consistency_group_snapshot_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --consistency-group --description'
  cmds_consistency_group_snapshot_delete='-h --help'
  cmds_consistency_group_snapshot_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --all-projects --long --status --consistency-group'
  cmds_consistency_group_snapshot_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_console='log url'
  cmds_console_log='show'
  cmds_console_log_show='-h --help --lines'
  cmds_console_url='show'
  cmds_console_url_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --novnc --xvpvnc --spice --rdp --serial --mks'
  cmds_container='create delete list save set show unset'
  cmds_container_create='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_container_delete='-h --help --recursive -r'
  cmds_container_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --prefix --marker --end-marker --limit --long --all'
  cmds_container_save='-h --help'
  cmds_container_set='-h --help --property'
  cmds_container_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_container_unset='-h --help --property'
  cmds_ec2='credentials'
  cmds_ec2_credentials='create delete list show'
  cmds_ec2_credentials_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --project --user'
  cmds_ec2_credentials_delete='-h --help --user'
  cmds_ec2_credentials_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --user'
  cmds_ec2_credentials_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --user'
  cmds_endpoint='create delete list show'
  cmds_endpoint_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --publicurl --adminurl --internalurl --region'
  cmds_endpoint_delete='-h --help'
  cmds_endpoint_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --long'
  cmds_endpoint_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_extension='list show'
  cmds_extension_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --compute --identity --network --volume --long'
  cmds_extension_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_flavor='create delete list set show unset'
  cmds_flavor_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --id --ram --disk --ephemeral --swap --vcpus --rxtx-factor --public --private --property --project --project-domain'
  cmds_flavor_delete='-h --help'
  cmds_flavor_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --public --private --all --long --marker --limit'
  cmds_flavor_set='-h --help --no-property --property --project --project-domain'
  cmds_flavor_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_flavor_unset='-h --help --property --project --project-domain'
  cmds_floating='ip'
  cmds_floating_ip='create delete list pool set show unset'
  cmds_floating_ip_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --subnet --port --floating-ip-address --fixed-ip-address --qos-policy --description --project --project-domain'
  cmds_floating_ip_delete='-h --help'
  cmds_floating_ip_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --network --port --fixed-ip-address --long --status --project --project-domain --router'
  cmds_floating_ip_pool='list'
  cmds_floating_ip_pool_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_floating_ip_set='-h --help --port --fixed-ip-address --qos-policy --no-qos-policy'
  cmds_floating_ip_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_floating_ip_unset='-h --help --port --qos-policy'
  cmds_help='-h --help'
  cmds_host='list set show'
  cmds_host_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --zone'
  cmds_host_set='-h --help --enable --disable --enable-maintenance --disable-maintenance'
  cmds_host_show='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_hypervisor='list show stats'
  cmds_hypervisor_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --matching --long'
  cmds_hypervisor_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_hypervisor_stats='show'
  cmds_hypervisor_stats_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_image='add create delete list remove save set show unset'
  cmds_image_add='project'
  cmds_image_add_project='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --project-domain'
  cmds_image_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --id --container-format --disk-format --min-disk --min-ram --file --volume --force --protected --unprotected --public --private --community --shared --property --tag --project --owner --project-domain --size --location --copy-from --checksum --store'
  cmds_image_delete='-h --help'
  cmds_image_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --public --private --shared --property --name --status --long --page-size --sort --limit --marker'
  cmds_image_remove='project'
  cmds_image_remove_project='-h --help --project-domain'
  cmds_image_save='-h --help --file'
  cmds_image_set='-h --help --name --min-disk --min-ram --container-format --disk-format --protected --unprotected --public --private --community --shared --property --tag --architecture --instance-id --instance-uuid --kernel-id --os-distro --os-version --ramdisk-id --deactivate --activate --project --owner --project-domain --visibility --accept --reject --pending'
  cmds_image_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --human-readable'
  cmds_image_unset='-h --help --tag --property'
  cmds_ip='availability fixed floating'
  cmds_ip_availability='list show'
  cmds_ip_availability_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --ip-version --project --project-domain'
  cmds_ip_availability_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_ip_fixed='add remove'
  cmds_ip_fixed_add='-h --help'
  cmds_ip_fixed_remove='-h --help'
  cmds_ip_floating='add create delete list pool remove show'
  cmds_ip_floating_add='-h --help'
  cmds_ip_floating_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --subnet --port --floating-ip-address --fixed-ip-address --qos-policy --description --project --project-domain'
  cmds_ip_floating_delete='-h --help'
  cmds_ip_floating_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --network --port --fixed-ip-address --long --status --project --project-domain --router'
  cmds_ip_floating_pool='list'
  cmds_ip_floating_pool_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_ip_floating_remove='-h --help'
  cmds_ip_floating_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_keypair='create delete list show'
  cmds_keypair_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --public-key --private-key'
  cmds_keypair_delete='-h --help'
  cmds_keypair_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_keypair_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --public-key'
  cmds_limits='show'
  cmds_limits_show='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --absolute --rate --reserved --project --domain'
  cmds_module='list'
  cmds_module_list='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --all'
  cmds_network='agent auto create delete flavor list meter qos rbac segment service set show unset'
  cmds_network_agent='add delete list remove set show'
  cmds_network_agent_add='network router'
  cmds_network_agent_add_network='-h --help --dhcp'
  cmds_network_agent_add_router='-h --help --l3'
  cmds_network_agent_delete='-h --help'
  cmds_network_agent_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --agent-type --host --network --router --long'
  cmds_network_agent_remove='network router'
  cmds_network_agent_remove_network='-h --help --dhcp'
  cmds_network_agent_remove_router='-h --help --l3'
  cmds_network_agent_set='-h --help --description --enable --disable'
  cmds_network_agent_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_network_auto='allocated'
  cmds_network_auto_allocated='topology'
  cmds_network_auto_allocated_topology='create delete'
  cmds_network_auto_allocated_topology_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --project --project-domain --check-resources --or-show'
  cmds_network_auto_allocated_topology_delete='-h --help --project --project-domain'
  cmds_network_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --share --no-share --enable --disable --project --description --mtu --project-domain --availability-zone-hint --enable-port-security --disable-port-security --external --internal --default --no-default --qos-policy --transparent-vlan --no-transparent-vlan --provider-network-type --provider-physical-network --provider-segment --tag --no-tag'
  cmds_network_delete='-h --help'
  cmds_network_flavor='add create delete list profile remove set show'
  cmds_network_flavor_add='profile'
  cmds_network_flavor_add_profile='-h --help'
  cmds_network_flavor_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --service-type --description --project --project-domain --enable --disable'
  cmds_network_flavor_delete='-h --help'
  cmds_network_flavor_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_network_flavor_profile='create delete list set show'
  cmds_network_flavor_profile_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --project --project-domain --description --enable --disable --driver --metainfo'
  cmds_network_flavor_profile_delete='-h --help'
  cmds_network_flavor_profile_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_network_flavor_profile_set='-h --help --project-domain --description --enable --disable --driver --metainfo'
  cmds_network_flavor_profile_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_network_flavor_remove='profile'
  cmds_network_flavor_remove_profile='-h --help'
  cmds_network_flavor_set='-h --help --description --disable --enable --name'
  cmds_network_flavor_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_network_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --external --internal --long --name --enable --disable --project --project-domain --share --no-share --status --provider-network-type --provider-physical-network --provider-segment --agent --tags --any-tags --not-tags --not-any-tags'
  cmds_network_meter='create delete list rule show'
  cmds_network_meter_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --description --project --project-domain --share --no-share'
  cmds_network_meter_delete='-h --help'
  cmds_network_meter_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_network_meter_rule='create delete list show'
  cmds_network_meter_rule_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --project --project-domain --exclude --include --ingress --egress --remote-ip-prefix'
  cmds_network_meter_rule_delete='-h --help'
  cmds_network_meter_rule_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_network_meter_rule_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_network_meter_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_network_qos='policy rule'
  cmds_network_qos_policy='create delete list set show'
  cmds_network_qos_policy_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --description --share --no-share --project --project-domain --default --no-default'
  cmds_network_qos_policy_delete='-h --help'
  cmds_network_qos_policy_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --project --project-domain --share --no-share'
  cmds_network_qos_policy_set='-h --help --name --description --share --no-share --default --no-default'
  cmds_network_qos_policy_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_network_qos_rule='create delete list set show type'
  cmds_network_qos_rule_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --type --max-kbps --max-burst-kbits --dscp-mark --min-kbps --ingress --egress'
  cmds_network_qos_rule_delete='-h --help'
  cmds_network_qos_rule_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_network_qos_rule_set='-h --help --max-kbps --max-burst-kbits --dscp-mark --min-kbps --ingress --egress'
  cmds_network_qos_rule_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_network_qos_rule_type='list show'
  cmds_network_qos_rule_type_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_network_qos_rule_type_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_network_rbac='create delete list set show'
  cmds_network_rbac_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --type --action --target-project --target-all-projects --target-project-domain --project --project-domain'
  cmds_network_rbac_delete='-h --help'
  cmds_network_rbac_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --type --action --long'
  cmds_network_rbac_set='-h --help --target-project --target-project-domain'
  cmds_network_rbac_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_network_segment='create delete list set show'
  cmds_network_segment_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --description --physical-network --segment --network --network-type'
  cmds_network_segment_delete='-h --help'
  cmds_network_segment_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --long --network'
  cmds_network_segment_set='-h --help --description --name'
  cmds_network_segment_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_network_service='provider'
  cmds_network_service_provider='list'
  cmds_network_service_provider_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_network_set='-h --help --name --enable --disable --share --no-share --description --mtu --enable-port-security --disable-port-security --external --internal --default --no-default --qos-policy --no-qos-policy --tag --no-tag --provider-network-type --provider-physical-network --provider-segment'
  cmds_network_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_network_unset='-h --help --tag --all-tag'
  cmds_object='create delete list save set show store unset'
  cmds_object_create='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --name'
  cmds_object_delete='-h --help'
  cmds_object_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --prefix --delimiter --marker --end-marker --limit --long --all'
  cmds_object_save='-h --help --file'
  cmds_object_set='-h --help --property'
  cmds_object_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_object_store='account'
  cmds_object_store_account='set show unset'
  cmds_object_store_account_set='-h --help --property'
  cmds_object_store_account_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_object_store_account_unset='-h --help --property'
  cmds_object_unset='-h --help --property'
  cmds_port='create delete list set show unset'
  cmds_port_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --network --description --device --device-id --mac-address --device-owner --vnic-type --host --host-id --dns-name --fixed-ip --no-fixed-ip --binding-profile --enable --disable --project --project-domain --security-group --no-security-group --qos-policy --enable-port-security --disable-port-security --allowed-address --tag --no-tag'
  cmds_port_delete='-h --help'
  cmds_port_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --device-owner --network --router --server --device-id --mac-address --long --project --project-domain --fixed-ip --tags --any-tags --not-tags --not-any-tags'
  cmds_port_set='-h --help --description --device --device-id --mac-address --device-owner --vnic-type --host --host-id --dns-name --enable --disable --name --fixed-ip --no-fixed-ip --binding-profile --no-binding-profile --qos-policy --security-group --no-security-group --enable-port-security --disable-port-security --allowed-address --no-allowed-address --data-plane-status --tag --no-tag'
  cmds_port_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_port_unset='-h --help --fixed-ip --binding-profile --security-group --allowed-address --qos-policy --data-plane-status --tag --all-tag'
  cmds_project='create delete list purge set show unset'
  cmds_project_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --description --enable --disable --property --or-show'
  cmds_project_delete='-h --help'
  cmds_project_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --long --sort'
  cmds_project_purge='-h --help --dry-run --keep-project --auth-project --project --project-domain'
  cmds_project_set='-h --help --name --description --enable --disable --property'
  cmds_project_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_project_unset='-h --help --property'
  cmds_quota='list set show'
  cmds_quota_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --compute --volume --network'
  cmds_quota_set='-h --help --class --cores --fixed-ips --injected-file-size --injected-path-size --injected-files --instances --key-pairs --properties --ram --server-groups --server-group-members --backups --backup-gigabytes --gigabytes --per-volume-gigabytes --snapshots --volumes --floating-ips --secgroup-rules --secgroups --networks --subnets --ports --routers --rbac-policies --vips --subnetpools --health-monitors --l7policies --volume-type'
  cmds_quota_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --class --default'
  cmds_role='add assignment create delete list remove show'
  cmds_role_add='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --project --user'
  cmds_role_assignment='list'
  cmds_role_assignment_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --user --project --names --auth-user --auth-project'
  cmds_role_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --or-show'
  cmds_role_delete='-h --help'
  cmds_role_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --project --user'
  cmds_role_remove='-h --help --project --user'
  cmds_role_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_router='add create delete list remove set show unset'
  cmds_router_add='port subnet'
  cmds_router_add_port='-h --help'
  cmds_router_add_subnet='-h --help'
  cmds_router_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --enable --disable --distributed --centralized --ha --no-ha --description --project --project-domain --availability-zone-hint --tag --no-tag'
  cmds_router_delete='-h --help'
  cmds_router_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --name --enable --disable --long --project --project-domain --agent --tags --any-tags --not-tags --not-any-tags'
  cmds_router_remove='port subnet'
  cmds_router_remove_port='-h --help'
  cmds_router_remove_subnet='-h --help'
  cmds_router_set='-h --help --name --description --enable --disable --distributed --centralized --route --no-route --clear-routes --ha --no-ha --external-gateway --fixed-ip --enable-snat --disable-snat --tag --no-tag'
  cmds_router_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_router_unset='-h --help --route --external-gateway --tag --all-tag'
  cmds_security='group'
  cmds_security_group='create delete list rule set show'
  cmds_security_group_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --description --project --project-domain'
  cmds_security_group_delete='-h --help'
  cmds_security_group_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --all-projects --project --project-domain'
  cmds_security_group_rule='create delete list show'
  cmds_security_group_rule_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --remote-ip --remote-group --src-ip --src-group --description --dst-port --icmp-type --icmp-code --protocol --proto --ingress --egress --ethertype --project --project-domain'
  cmds_security_group_rule_delete='-h --help'
  cmds_security_group_rule_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --all-projects --protocol --ingress --egress --long'
  cmds_security_group_rule_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_security_group_set='-h --help --name --description'
  cmds_security_group_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_server='add backup create delete dump event group image list lock migrate pause reboot rebuild remove rescue resize restore resume set shelve show ssh start stop suspend unlock unpause unrescue unset unshelve'
  cmds_server_add='fixed floating network port security volume'
  cmds_server_add_fixed='ip'
  cmds_server_add_fixed_ip='-h --help --fixed-ip-address'
  cmds_server_add_floating='ip'
  cmds_server_add_floating_ip='-h --help --fixed-ip-address'
  cmds_server_add_network='-h --help'
  cmds_server_add_port='-h --help'
  cmds_server_add_security='group'
  cmds_server_add_security_group='-h --help'
  cmds_server_add_volume='-h --help --device'
  cmds_server_backup='create'
  cmds_server_backup_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --name --type --rotate --wait'
  cmds_server_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --image --volume --flavor --security-group --key-name --property --file --user-data --availability-zone --block-device-mapping --nic --network --port --hint --config-drive --min --max --wait'
  cmds_server_delete='-h --help --wait'
  cmds_server_dump='create'
  cmds_server_dump_create='-h --help'
  cmds_server_event='list show'
  cmds_server_event_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --long'
  cmds_server_event_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_server_group='create delete list show'
  cmds_server_group_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --policy'
  cmds_server_group_delete='-h --help'
  cmds_server_group_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --all-projects --long'
  cmds_server_group_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_server_image='create'
  cmds_server_image_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --name --wait'
  cmds_server_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --reservation-id --ip --ip6 --name --instance-name --status --flavor --image --host --all-projects --project --project-domain --user --user-domain --long -n --no-name-lookup --marker --limit --deleted --changes-since'
  cmds_server_lock='-h --help'
  cmds_server_migrate='-h --help --live --shared-migration --block-migration --disk-overcommit --no-disk-overcommit --wait'
  cmds_server_pause='-h --help'
  cmds_server_reboot='-h --help --hard --soft --wait'
  cmds_server_rebuild='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --image --password --wait'
  cmds_server_remove='fixed floating network port security volume'
  cmds_server_remove_fixed='ip'
  cmds_server_remove_fixed_ip='-h --help'
  cmds_server_remove_floating='ip'
  cmds_server_remove_floating_ip='-h --help'
  cmds_server_remove_network='-h --help'
  cmds_server_remove_port='-h --help'
  cmds_server_remove_security='group'
  cmds_server_remove_security_group='-h --help'
  cmds_server_remove_volume='-h --help'
  cmds_server_rescue='-h --help --image --password'
  cmds_server_resize='-h --help --flavor --confirm --revert --wait'
  cmds_server_restore='-h --help'
  cmds_server_resume='-h --help'
  cmds_server_set='-h --help --name --root-password --property --state'
  cmds_server_shelve='-h --help'
  cmds_server_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --diagnostics'
  cmds_server_ssh='-h --help --login -l --port -p --identity -i --option -o -4 -6 --public --private --address-type -v'
  cmds_server_start='-h --help'
  cmds_server_stop='-h --help'
  cmds_server_suspend='-h --help'
  cmds_server_unlock='-h --help'
  cmds_server_unpause='-h --help'
  cmds_server_unrescue='-h --help'
  cmds_server_unset='-h --help --property'
  cmds_server_unshelve='-h --help'
  cmds_service='create delete list show'
  cmds_service_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --type --name --description'
  cmds_service_delete='-h --help'
  cmds_service_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --long'
  cmds_service_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --catalog'
  cmds_snapshot='create delete list set show unset'
  cmds_snapshot_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --name --description --force --property'
  cmds_snapshot_delete='-h --help'
  cmds_snapshot_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --all-projects --long --marker --limit'
  cmds_snapshot_set='-h --help --name --description --property --state'
  cmds_snapshot_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_snapshot_unset='-h --help --property'
  cmds_subnet='create delete list pool set show unset'
  cmds_subnet_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --project --project-domain --subnet-pool --use-prefix-delegation --use-default-subnet-pool --prefix-length --subnet-range --dhcp --no-dhcp --gateway --ip-version --ipv6-ra-mode --ipv6-address-mode --network-segment --network --description --allocation-pool --dns-nameserver --host-route --service-type --tag --no-tag'
  cmds_subnet_delete='-h --help'
  cmds_subnet_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --long --ip-version --dhcp --no-dhcp --service-type --project --project-domain --network --gateway --name --subnet-range --tags --any-tags --not-tags --not-any-tags'
  cmds_subnet_pool='create delete list set show unset'
  cmds_subnet_pool_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --pool-prefix --default-prefix-length --min-prefix-length --max-prefix-length --project --project-domain --address-scope --default --no-default --share --no-share --description --default-quota --tag --no-tag'
  cmds_subnet_pool_delete='-h --help'
  cmds_subnet_pool_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --long --share --no-share --default --no-default --project --project-domain --name --address-scope --tags --any-tags --not-tags --not-any-tags'
  cmds_subnet_pool_set='-h --help --name --pool-prefix --default-prefix-length --min-prefix-length --max-prefix-length --address-scope --no-address-scope --default --no-default --description --default-quota --tag --no-tag'
  cmds_subnet_pool_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_subnet_pool_unset='-h --help --pool-prefix --tag --all-tag'
  cmds_subnet_set='-h --help --name --dhcp --no-dhcp --gateway --description --tag --no-tag --allocation-pool --no-allocation-pool --dns-nameserver --no-dns-nameservers --host-route --no-host-route --service-type'
  cmds_subnet_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_subnet_unset='-h --help --allocation-pool --dns-nameserver --host-route --service-type --tag --all-tag'
  cmds_token='issue revoke'
  cmds_token_issue='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_token_revoke='-h --help'
  cmds_usage='list show'
  cmds_usage_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --start --end'
  cmds_usage_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --project --start --end'
  cmds_user='create delete list role set show'
  cmds_user_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --project --password --password-prompt --email --enable --disable --or-show'
  cmds_user_delete='-h --help'
  cmds_user_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --project --long'
  cmds_user_role='list'
  cmds_user_role_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --project'
  cmds_user_set='-h --help --name --project --password --password-prompt --email --enable --disable'
  cmds_user_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_volume='backup create delete host list migrate qos service set show snapshot transfer type unset'
  cmds_volume_backup='create delete list restore set show'
  cmds_volume_backup_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --name --description --container --snapshot --force --incremental'
  cmds_volume_backup_delete='-h --help --force'
  cmds_volume_backup_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --long --name --status --volume --marker --limit --all-projects'
  cmds_volume_backup_restore='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_volume_backup_set='-h --help --name --description --state'
  cmds_volume_backup_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_volume_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --size --type --image --snapshot --source --source-replicated --description --user --project --availability-zone --consistency-group --property --hint --multi-attach --bootable --non-bootable --read-only --read-write'
  cmds_volume_delete='-h --help --force --purge'
  cmds_volume_host='failover set'
  cmds_volume_host_failover='-h --help --volume-backend'
  cmds_volume_host_set='-h --help --disable --enable'
  cmds_volume_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --project --project-domain --user --user-domain --name --status --all-projects --long --marker --limit'
  cmds_volume_migrate='-h --help --host --force-host-copy --lock-volume --unlock-volume'
  cmds_volume_qos='associate create delete disassociate list set show unset'
  cmds_volume_qos_associate='-h --help'
  cmds_volume_qos_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --consumer --property'
  cmds_volume_qos_delete='-h --help --force'
  cmds_volume_qos_disassociate='-h --help --volume-type --all'
  cmds_volume_qos_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column'
  cmds_volume_qos_set='-h --help --property'
  cmds_volume_qos_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_volume_qos_unset='-h --help --property'
  cmds_volume_service='list set'
  cmds_volume_service_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --host --service --long'
  cmds_volume_service_set='-h --help --enable --disable --disable-reason'
  cmds_volume_set='-h --help --name --size --description --no-property --property --image-property --state --type --retype-policy --bootable --non-bootable --read-only --read-write'
  cmds_volume_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_volume_snapshot='create delete list set show unset'
  cmds_volume_snapshot_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --volume --description --force --property --remote-source'
  cmds_volume_snapshot_delete='-h --help --force'
  cmds_volume_snapshot_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --all-projects --project --project-domain --long --marker --limit --name --status --volume'
  cmds_volume_snapshot_set='-h --help --name --description --no-property --property --state'
  cmds_volume_snapshot_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_volume_snapshot_unset='-h --help --property'
  cmds_volume_transfer='request'
  cmds_volume_transfer_request='accept create delete list show'
  cmds_volume_transfer_request_accept='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --auth-key'
  cmds_volume_transfer_request_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --name'
  cmds_volume_transfer_request_delete='-h --help'
  cmds_volume_transfer_request_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --all-projects'
  cmds_volume_transfer_request_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty'
  cmds_volume_type='create delete list set show unset'
  cmds_volume_type_create='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --description --public --private --property --project --encryption-provider --encryption-cipher --encryption-key-size --encryption-control-location --project-domain'
  cmds_volume_type_delete='-h --help'
  cmds_volume_type_list='-h --help -f --format -c --column --quote --noindent --max-width --fit-width --print-empty --sort-column --long --default --public --private --encryption-type'
  cmds_volume_type_set='-h --help --name --description --property --project --project-domain --encryption-provider --encryption-cipher --encryption-key-size --encryption-control-location'
  cmds_volume_type_show='-h --help -f --format -c --column --noindent --variable --prefix --max-width --fit-width --print-empty --encryption-type'
  cmds_volume_type_unset='-h --help --property --project --project-domain --encryption-type'
  cmds_volume_unset='-h --help --property --image-property'

  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 _openstack openstack
