summaryrefslogtreecommitdiff
path: root/doc/source/cli/command-objects
diff options
context:
space:
mode:
Diffstat (limited to 'doc/source/cli/command-objects')
-rw-r--r--doc/source/cli/command-objects/access-token.rst42
-rw-r--r--doc/source/cli/command-objects/address-scope.rst149
-rw-r--r--doc/source/cli/command-objects/aggregate.rst186
-rw-r--r--doc/source/cli/command-objects/availability-zone.rst38
-rw-r--r--doc/source/cli/command-objects/backup.rst137
-rw-r--r--doc/source/cli/command-objects/catalog.rst30
-rw-r--r--doc/source/cli/command-objects/command.rst23
-rw-r--r--doc/source/cli/command-objects/complete.rst25
-rw-r--r--doc/source/cli/command-objects/compute-agent.rst102
-rw-r--r--doc/source/cli/command-objects/compute-service.rst89
-rw-r--r--doc/source/cli/command-objects/configuration.rst29
-rw-r--r--doc/source/cli/command-objects/consistency-group-snapshot.rst96
-rw-r--r--doc/source/cli/command-objects/consistency-group.rst173
-rw-r--r--doc/source/cli/command-objects/console-log.rst27
-rw-r--r--doc/source/cli/command-objects/console-url.rst48
-rw-r--r--doc/source/cli/command-objects/consumer.rst83
-rw-r--r--doc/source/cli/command-objects/container.rst150
-rw-r--r--doc/source/cli/command-objects/credential.rst113
-rw-r--r--doc/source/cli/command-objects/domain.rst115
-rw-r--r--doc/source/cli/command-objects/ec2-credentials.rst138
-rw-r--r--doc/source/cli/command-objects/endpoint.rst196
-rw-r--r--doc/source/cli/command-objects/extension.rst58
-rw-r--r--doc/source/cli/command-objects/federation-protocol.rst112
-rw-r--r--doc/source/cli/command-objects/flavor.rst220
-rw-r--r--doc/source/cli/command-objects/floating-ip-pool.rst15
-rw-r--r--doc/source/cli/command-objects/floating-ip.rst205
-rw-r--r--doc/source/cli/command-objects/group.rst249
-rw-r--r--doc/source/cli/command-objects/host.rst72
-rw-r--r--doc/source/cli/command-objects/hypervisor-stats.rst16
-rw-r--r--doc/source/cli/command-objects/hypervisor.rst41
-rw-r--r--doc/source/cli/command-objects/identity-provider.rst127
-rw-r--r--doc/source/cli/command-objects/image.rst576
-rw-r--r--doc/source/cli/command-objects/ip-availability.rst60
-rw-r--r--doc/source/cli/command-objects/ip-fixed.rst47
-rw-r--r--doc/source/cli/command-objects/ip-floating-pool.rst16
-rw-r--r--doc/source/cli/command-objects/ip-floating.rst129
-rw-r--r--doc/source/cli/command-objects/keypair.rst80
-rw-r--r--doc/source/cli/command-objects/limits.rst41
-rw-r--r--doc/source/cli/command-objects/mapping.rst91
-rw-r--r--doc/source/cli/command-objects/module.rst22
-rw-r--r--doc/source/cli/command-objects/network-agent.rst151
-rw-r--r--doc/source/cli/command-objects/network-auto-allocated-topology.rst69
-rw-r--r--doc/source/cli/command-objects/network-flavor-profile.rst145
-rw-r--r--doc/source/cli/command-objects/network-flavor.rst183
-rw-r--r--doc/source/cli/command-objects/network-meter-rule.rst101
-rw-r--r--doc/source/cli/command-objects/network-meter.rst91
-rw-r--r--doc/source/cli/command-objects/network-qos-policy.rst145
-rw-r--r--doc/source/cli/command-objects/network-qos-rule-type.rst18
-rw-r--r--doc/source/cli/command-objects/network-qos-rule.rst165
-rw-r--r--doc/source/cli/command-objects/network-rbac.rst138
-rw-r--r--doc/source/cli/command-objects/network-segment.rst133
-rw-r--r--doc/source/cli/command-objects/network-service-provider.rst20
-rw-r--r--doc/source/cli/command-objects/network.rst414
-rw-r--r--doc/source/cli/command-objects/object-store-account.rst45
-rw-r--r--doc/source/cli/command-objects/object.rst195
-rw-r--r--doc/source/cli/command-objects/policy.rst95
-rw-r--r--doc/source/cli/command-objects/port.rst404
-rw-r--r--doc/source/cli/command-objects/project-purge.rst42
-rw-r--r--doc/source/cli/command-objects/project.rst235
-rw-r--r--doc/source/cli/command-objects/quota.rst269
-rw-r--r--doc/source/cli/command-objects/region.rst104
-rw-r--r--doc/source/cli/command-objects/request-token.rst58
-rw-r--r--doc/source/cli/command-objects/role-assignment.rst106
-rw-r--r--doc/source/cli/command-objects/role.rst326
-rw-r--r--doc/source/cli/command-objects/router.rst357
-rw-r--r--doc/source/cli/command-objects/security-group-rule.rst193
-rw-r--r--doc/source/cli/command-objects/security-group.rst130
-rw-r--r--doc/source/cli/command-objects/server-backup.rst44
-rw-r--r--doc/source/cli/command-objects/server-event.rst45
-rw-r--r--doc/source/cli/command-objects/server-group.rst80
-rw-r--r--doc/source/cli/command-objects/server-image.rst33
-rw-r--r--doc/source/cli/command-objects/server.rst986
-rw-r--r--doc/source/cli/command-objects/service-provider.rst125
-rw-r--r--doc/source/cli/command-objects/service.rst143
-rw-r--r--doc/source/cli/command-objects/snapshot.rst176
-rw-r--r--doc/source/cli/command-objects/subnet-pool.rst269
-rw-r--r--doc/source/cli/command-objects/subnet.rst374
-rw-r--r--doc/source/cli/command-objects/token.rst30
-rw-r--r--doc/source/cli/command-objects/trust.rst102
-rw-r--r--doc/source/cli/command-objects/usage.rst50
-rw-r--r--doc/source/cli/command-objects/user-role.rst27
-rw-r--r--doc/source/cli/command-objects/user.rst223
-rw-r--r--doc/source/cli/command-objects/volume-backup.rst201
-rw-r--r--doc/source/cli/command-objects/volume-host.rst52
-rw-r--r--doc/source/cli/command-objects/volume-qos.rst166
-rw-r--r--doc/source/cli/command-objects/volume-service.rst66
-rw-r--r--doc/source/cli/command-objects/volume-snapshot.rst223
-rw-r--r--doc/source/cli/command-objects/volume-transfer-request.rst96
-rw-r--r--doc/source/cli/command-objects/volume-type.rst291
-rw-r--r--doc/source/cli/command-objects/volume.rst403
90 files changed, 12703 insertions, 0 deletions
diff --git a/doc/source/cli/command-objects/access-token.rst b/doc/source/cli/command-objects/access-token.rst
new file mode 100644
index 00000000..b1400412
--- /dev/null
+++ b/doc/source/cli/command-objects/access-token.rst
@@ -0,0 +1,42 @@
+============
+access token
+============
+
+Identity v3
+
+`Requires: OS-OAUTH1 extension`
+
+access token create
+-------------------
+
+Create an access token
+
+.. program:: access token create
+.. code:: bash
+
+ openstack access token create
+ --consumer-key <consumer-key>
+ --consumer-secret <consumer-secret>
+ --request-key <request-key>
+ --request-secret <request-secret>
+ --verifier <verifier>
+
+.. option:: --consumer-key <consumer-key>
+
+ Consumer key (required)
+
+.. option:: --consumer-secret <consumer-secret>
+
+ Consumer secret (required)
+
+.. option:: --request-key <request-key>
+
+ Request token to exchange for access token (required)
+
+.. option:: --request-secret <request-secret>
+
+ Secret associated with <request-key> (required)
+
+.. option:: --verifier <verifier>
+
+ Verifier associated with <request-key> (required)
diff --git a/doc/source/cli/command-objects/address-scope.rst b/doc/source/cli/command-objects/address-scope.rst
new file mode 100644
index 00000000..9155d09e
--- /dev/null
+++ b/doc/source/cli/command-objects/address-scope.rst
@@ -0,0 +1,149 @@
+=============
+address scope
+=============
+
+An **address scope** is a scope of IPv4 or IPv6 addresses that belongs
+to a given project and may be shared between projects.
+
+Network v2
+
+address scope create
+--------------------
+
+Create new address scope
+
+.. program:: address scope create
+.. code:: bash
+
+ openstack address scope create
+ [--project <project> [--project-domain <project-domain>]]
+ [--ip-version <ip-version>]
+ [--share | --no-share]
+ <name>
+
+.. option:: --project <project>
+
+ Owner's project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --ip-version <ip-version>
+
+ IP version (4 or 6, default is 4)
+
+.. option:: --share
+
+ Share the address scope between projects
+
+.. option:: --no-share
+
+ Do not share the address scope between projects (default)
+
+.. _address_scope_create-name:
+.. describe:: <name>
+
+ New address scope name
+
+address scope delete
+--------------------
+
+Delete address scope(s)
+
+.. program:: address scope delete
+.. code:: bash
+
+ openstack address scope delete
+ <address-scope> [<address-scope> ...]
+
+.. _address_scope_delete-address-scope:
+.. describe:: <address-scope>
+
+ Address scope(s) to delete (name or ID)
+
+address scope list
+------------------
+
+List address scopes
+
+.. program:: address scope list
+.. code:: bash
+
+ openstack address scope list
+ [--name <name>]
+ [--ip-version <ip-version>]
+ [--project <project> [--project-domain <project-domain>]]
+ [--share | --no-share]
+
+.. option:: --name <name>
+
+ List only address scopes of given name in output
+
+.. option:: --ip-version <ip-version>
+
+ List address scopes of given IP version networks (4 or 6)
+
+.. option:: --project <project>
+
+ List address scopes according to their project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --share
+
+ List address scopes shared between projects
+
+.. option:: --no-share
+
+ List address scopes not shared between projects
+
+address scope set
+-----------------
+
+Set address scope properties
+
+.. program:: address scope set
+.. code:: bash
+
+ openstack address scope set
+ [--name <name>]
+ [--share | --no-share]
+ <address-scope>
+
+.. option:: --name <name>
+
+ Set address scope name
+
+.. option:: --share
+
+ Share the address scope between projects
+
+.. option:: --no-share
+
+ Do not share the address scope between projects
+
+.. _address_scope_set-address-scope:
+.. describe:: <address-scope>
+
+ Address scope to modify (name or ID)
+
+address scope show
+------------------
+
+Display address scope details
+
+.. program:: address scope show
+.. code:: bash
+
+ openstack address scope show
+ <address-scope>
+
+.. _address_scope_show-address-scope:
+.. describe:: <address-scope>
+
+ Address scope to display (name or ID)
diff --git a/doc/source/cli/command-objects/aggregate.rst b/doc/source/cli/command-objects/aggregate.rst
new file mode 100644
index 00000000..2029a6c8
--- /dev/null
+++ b/doc/source/cli/command-objects/aggregate.rst
@@ -0,0 +1,186 @@
+=========
+aggregate
+=========
+
+Host aggregates provide a mechanism to group hosts according to certain
+criteria.
+
+Compute v2
+
+aggregate add host
+------------------
+
+Add host to aggregate
+
+.. program:: aggregate add host
+.. code:: bash
+
+ openstack aggregate add host
+ <aggregate>
+ <host>
+
+.. _aggregate_add_host-aggregate:
+.. describe:: <aggregate>
+
+ Aggregate (name or ID)
+
+.. _aggregate_add_host-host:
+.. describe:: <host>
+
+ Host to add to :ref:`\<aggregate\> <aggregate_add_host-aggregate>`
+
+aggregate create
+----------------
+
+Create a new aggregate
+
+.. program:: aggregate create
+.. code:: bash
+
+ openstack aggregate create
+ [--zone <availability-zone>]
+ [--property <key=value> [...] ]
+ <name>
+
+.. option:: --zone <availability-zone>
+
+ Availability zone name
+
+.. option:: --property <key=value>
+
+ Property to add to this aggregate (repeat option to set multiple properties)
+
+.. _aggregate_create-name:
+.. describe:: <name>
+
+ New aggregate name
+
+aggregate delete
+----------------
+
+Delete existing aggregate(s)
+
+.. program:: aggregate delete
+.. code:: bash
+
+ openstack aggregate delete
+ <aggregate> [<aggregate> ...]
+
+.. _aggregate_delete-aggregate:
+.. describe:: <aggregate>
+
+ Aggregate(s) to delete (name or ID)
+
+aggregate list
+--------------
+
+List all aggregates
+
+.. program:: aggregate list
+.. code:: bash
+
+ openstack aggregate list
+ [--long]
+
+.. option:: --long
+
+ List additional fields in output
+
+aggregate remove host
+---------------------
+
+Remove host from aggregate
+
+.. program:: aggregate remove host
+.. code:: bash
+
+ openstack aggregate remove host
+ <aggregate>
+ <host>
+
+.. _aggregate_remove_host-aggregate:
+.. describe:: <aggregate>
+
+ Aggregate (name or ID)
+
+.. _aggregate_remove_host-host:
+.. describe:: <host>
+
+ Host to remove from :ref:`\<aggregate\> <aggregate_remove_host-aggregate>`
+
+aggregate set
+-------------
+
+Set aggregate properties
+
+.. program:: aggregate set
+.. code:: bash
+
+ openstack aggregate set
+ [--name <new-name>]
+ [--zone <availability-zone>]
+ [--property <key=value> [...] ]
+ [--no-property]
+ <aggregate>
+
+.. option:: --name <name>
+
+ Set aggregate name
+
+.. option:: --zone <availability-zone>
+
+ Set availability zone name
+
+.. option:: --property <key=value>
+
+ Property to set on :ref:`\<aggregate\> <aggregate_set-aggregate>`
+ (repeat option to set multiple properties)
+
+.. option:: --no-property
+
+ Remove all properties from :ref:`\<aggregate\> <aggregate_set-aggregate>`
+ (specify both :option:`--property` and :option:`--no-property` to
+ overwrite the current properties)
+
+.. _aggregate_set-aggregate:
+.. describe:: <aggregate>
+
+ Aggregate to modify (name or ID)
+
+aggregate show
+--------------
+
+Display aggregate details
+
+.. program:: aggregate show
+.. code:: bash
+
+ openstack aggregate show
+ <aggregate>
+
+.. _aggregate_show-aggregate:
+.. describe:: <aggregate>
+
+ Aggregate to display (name or ID)
+
+aggregate unset
+---------------
+
+Unset aggregate properties
+
+.. program:: aggregate unset
+.. code-block:: bash
+
+ openstack aggregate unset
+ [--property <key> [...] ]
+ <aggregate>
+
+.. option:: --property <key>
+
+ Property to remove from :ref:`\<aggregate\> <aggregate_unset-aggregate>`
+ (repeat option to remove multiple properties)
+
+.. _aggregate_unset-aggregate:
+.. describe:: <aggregate>
+
+ Aggregate to modify (name or ID)
diff --git a/doc/source/cli/command-objects/availability-zone.rst b/doc/source/cli/command-objects/availability-zone.rst
new file mode 100644
index 00000000..d4c117a0
--- /dev/null
+++ b/doc/source/cli/command-objects/availability-zone.rst
@@ -0,0 +1,38 @@
+=================
+availability zone
+=================
+
+An **availability zone** is a logical partition of cloud block storage,
+compute and network services.
+
+Block Storage v2, Compute v2, Network v2
+
+availability zone list
+----------------------
+
+List availability zones and their status
+
+.. program availability zone list
+.. code:: bash
+
+ openstack availability zone list
+ [--compute]
+ [--network]
+ [--volume]
+ [--long]
+
+.. option:: --compute
+
+ List compute availability zones
+
+.. option:: --network
+
+ List network availability zones
+
+.. option:: --volume
+
+ List volume availability zones
+
+.. option:: --long
+
+ List additional fields in output
diff --git a/doc/source/cli/command-objects/backup.rst b/doc/source/cli/command-objects/backup.rst
new file mode 100644
index 00000000..f8923276
--- /dev/null
+++ b/doc/source/cli/command-objects/backup.rst
@@ -0,0 +1,137 @@
+======
+backup
+======
+
+Block Storage v1, v2
+
+backup create
+-------------
+
+Create new backup
+(Deprecated, please use ``volume backup create`` instead)
+
+.. program:: backup create
+.. code:: bash
+
+ openstack backup create
+ [--container <container>]
+ [--name <name>]
+ [--description <description>]
+ [--snapshot <snapshot>]
+ [--force]
+ [--incremental]
+ <volume>
+
+.. option:: --container <container>
+
+ Optional backup container name
+
+.. option:: --name <name>
+
+ Name of the backup
+
+.. option:: --description <description>
+
+ Description of the backup
+
+.. option:: --snapshot <snapshot>
+
+ Snapshot to backup (name or ID)
+
+ *Volume version 2 only*
+
+.. option:: --force
+
+ Allow to back up an in-use volume
+
+ *Volume version 2 only*
+
+.. option:: --incremental
+
+ Perform an incremental backup
+
+ *Volume version 2 only*
+
+.. _backup_create-backup:
+.. describe:: <volume>
+
+ Volume to backup (name or ID)
+
+backup delete
+-------------
+
+Delete backup(s)
+(Deprecated, please use ``volume backup delete`` instead)
+
+.. program:: backup delete
+.. code:: bash
+
+ openstack backup delete
+ [--force]
+ <backup> [<backup> ...]
+
+.. option:: --force
+
+ Allow delete in state other than error or available
+
+ *Volume version 2 only*
+
+.. _backup_delete-backup:
+.. describe:: <backup>
+
+ Backup(s) to delete (name or ID)
+
+backup list
+-----------
+
+List backups
+(Deprecated, please use ``volume backup list`` instead)
+
+.. program:: backup list
+.. code:: bash
+
+ openstack backup list
+
+.. _backup_list-backup:
+.. option:: --long
+
+ List additional fields in output
+
+backup restore
+--------------
+
+Restore backup
+(Deprecated, please use ``volume backup restore`` instead)
+
+.. program:: backup restore
+.. code:: bash
+
+ openstack backup restore
+ <backup>
+ <volume>
+
+.. _backup_restore-backup:
+.. describe:: <backup>
+
+ Backup to restore (name or ID)
+
+.. describe:: <volume>
+
+ Volume to restore to (name or ID)
+
+backup show
+-----------
+
+Display backup details
+(Deprecated, please use ``volume backup show`` instead)
+
+.. program:: backup show
+.. code:: bash
+
+ openstack backup show
+ <backup>
+
+.. _backup_show-backup:
+.. describe:: <backup>
+
+ Backup to display (name or ID)
diff --git a/doc/source/cli/command-objects/catalog.rst b/doc/source/cli/command-objects/catalog.rst
new file mode 100644
index 00000000..dccf7801
--- /dev/null
+++ b/doc/source/cli/command-objects/catalog.rst
@@ -0,0 +1,30 @@
+=======
+catalog
+=======
+
+Identity v2, v3
+
+catalog list
+------------
+
+List services in the service catalog
+
+.. program:: catalog list
+.. code:: bash
+
+ openstack catalog list
+
+catalog show
+------------
+
+Display service catalog details
+
+.. program:: catalog show
+.. code:: bash
+
+ openstack catalog show
+ <service>
+
+.. describe:: <service>
+
+ Service to display (type or name)
diff --git a/doc/source/cli/command-objects/command.rst b/doc/source/cli/command-objects/command.rst
new file mode 100644
index 00000000..918fd959
--- /dev/null
+++ b/doc/source/cli/command-objects/command.rst
@@ -0,0 +1,23 @@
+=======
+command
+=======
+
+Internal
+
+Installed commands in the OSC process.
+
+command list
+------------
+
+List recognized commands by group
+
+.. program:: command list
+.. code:: bash
+
+ openstack command list
+ [--group <group-keyword>]
+
+.. option:: --group <group-keyword>
+
+ Show commands filtered by a command group, for example: identity, volume,
+ compute, image, network and other keywords
diff --git a/doc/source/cli/command-objects/complete.rst b/doc/source/cli/command-objects/complete.rst
new file mode 100644
index 00000000..20e5c41d
--- /dev/null
+++ b/doc/source/cli/command-objects/complete.rst
@@ -0,0 +1,25 @@
+========
+complete
+========
+
+The ``complete`` command is inherited from the `python-cliff` library, it can
+be used to generate a bash-completion script. Currently, the command will
+generate a script for bash versions 3 or 4. The bash-completion script is
+printed directly to standard out.
+
+Typical usage for this command is::
+
+ openstack complete | sudo tee /etc/bash_completion.d/osc.bash_completion > /dev/null
+
+If installing ``python-openstackclient`` from a package (``apt-get`` or ``yum``),
+then this command will likely be run for you.
+
+complete
+--------
+
+print bash completion command
+
+.. program:: complete
+.. code:: bash
+
+ openstack complete
diff --git a/doc/source/cli/command-objects/compute-agent.rst b/doc/source/cli/command-objects/compute-agent.rst
new file mode 100644
index 00000000..e8317b48
--- /dev/null
+++ b/doc/source/cli/command-objects/compute-agent.rst
@@ -0,0 +1,102 @@
+=============
+compute agent
+=============
+
+Compute v2
+
+compute agent create
+--------------------
+
+Create compute agent
+
+.. program:: compute agent create
+.. code:: bash
+
+ openstack compute agent create
+ <os> <architecture> <version> <url> <md5hash>
+ <hypervisor>
+
+.. _compute_agent-create:
+.. describe:: <os>
+
+ Type of OS
+
+.. describe:: <architecture>
+
+ Type of architecture
+
+.. describe:: <version>
+
+ Version
+
+.. describe:: <url>
+
+ URL
+
+.. describe:: <md5hash>
+
+ MD5 hash
+
+.. describe:: <hypervisor>
+
+ Type of hypervisor
+
+compute agent delete
+--------------------
+
+Delete compute agent(s)
+
+.. program:: compute agent delete
+.. code:: bash
+
+ openstack compute agent delete <id> [<id> ...]
+
+.. _compute_agent-delete:
+.. describe:: <id>
+
+ ID of agent(s) to delete
+
+compute agent list
+------------------
+
+List compute agents
+
+.. program:: compute agent list
+.. code:: bash
+
+ openstack compute agent list [--hypervisor <hypervisor>]
+
+.. option:: --hypervisor <hypervisor>
+
+ Type of hypervisor
+
+compute agent set
+-----------------
+
+Set compute agent properties
+
+.. program:: agent set
+.. code:: bash
+
+ openstack compute agent set
+ [--agent-version <version>]
+ [--url <url]
+ [--md5hash <md5hash>]
+ <id>
+
+.. _compute_agent-set:
+.. option:: --agent-version <version>
+
+ Version of the agent
+
+.. option:: --url <url>
+
+ URL of the agent
+
+.. option:: --md5hash <md5hash>
+
+ MD5 hash of the agent
+
+.. describe:: <id>
+
+ Agent to modify (ID only)
diff --git a/doc/source/cli/command-objects/compute-service.rst b/doc/source/cli/command-objects/compute-service.rst
new file mode 100644
index 00000000..ba624ea0
--- /dev/null
+++ b/doc/source/cli/command-objects/compute-service.rst
@@ -0,0 +1,89 @@
+===============
+compute service
+===============
+
+Compute v2
+
+compute service delete
+----------------------
+
+Delete compute service(s)
+
+.. program:: compute service delete
+.. code:: bash
+
+ openstack compute service delete
+ <service> [<service> ...]
+
+.. _compute_service_delete-service:
+.. describe:: <service>
+
+ Compute service(s) to delete (ID only)
+
+compute service list
+--------------------
+
+List compute services
+
+.. program:: compute service list
+.. code:: bash
+
+ openstack compute service list
+ [--host <host>]
+ [--service <service>]
+ [--long]
+
+.. option:: --host <host>
+
+ List services on specified host (name only)
+
+.. option:: --service <service>
+
+ List only specified service (name only)
+
+.. option:: --long
+
+ List additional fields in output
+
+compute service set
+-------------------
+
+Set compute service properties
+
+.. program:: compute service set
+.. code:: bash
+
+ openstack compute service set
+ [--enable | --disable]
+ [--disable-reason <reason>]
+ [--up | --down]
+ <host> <service>
+
+.. option:: --enable
+
+ Enable service
+
+.. option:: --disable
+
+ Disable service
+
+.. option:: --disable-reason <reason>
+
+ Reason for disabling the service (in quotes). Should be used with :option:`--disable` option.
+
+.. option:: --up
+
+ Force up service
+
+.. option:: --down
+
+ Force down service
+
+.. _compute_service_set-host:
+.. describe:: <host>
+
+ Name of host
+
+.. describe:: <service>
+
+ Name of service (Binary name)
diff --git a/doc/source/cli/command-objects/configuration.rst b/doc/source/cli/command-objects/configuration.rst
new file mode 100644
index 00000000..6e704d2d
--- /dev/null
+++ b/doc/source/cli/command-objects/configuration.rst
@@ -0,0 +1,29 @@
+=============
+configuration
+=============
+
+Available for all services
+
+.. _configuration-show:
+
+configuration show
+------------------
+
+Show the current openstack client configuration. This command is a little
+different from other show commands because it does not take a resource name
+or id to show. The command line options, such as --os-cloud, can be used to
+show different configurations.
+
+.. program:: configuration show
+.. code:: bash
+
+ openstack configuration show
+ [--mask | --unmask]
+
+.. option:: --mask
+
+ Attempt to mask passwords (default)
+
+.. option:: --unmask
+
+ Show password in clear text
diff --git a/doc/source/cli/command-objects/consistency-group-snapshot.rst b/doc/source/cli/command-objects/consistency-group-snapshot.rst
new file mode 100644
index 00000000..29d50656
--- /dev/null
+++ b/doc/source/cli/command-objects/consistency-group-snapshot.rst
@@ -0,0 +1,96 @@
+==========================
+consistency group snapshot
+==========================
+
+Block Storage v2
+
+consistency group snapshot create
+---------------------------------
+
+Create new consistency group snapshot.
+
+.. program:: consistency group snapshot create
+.. code:: bash
+
+ openstack consistency group snapshot create
+ [--consistency-group <consistency-group>]
+ [--description <description>]
+ [<snapshot-name>]
+
+.. option:: --consistency-group <consistency-group>
+
+ Consistency group to snapshot (name or ID)
+ (default to be the same as <snapshot-name>)
+
+.. option:: --description <description>
+
+ Description of this consistency group snapshot
+
+.. _consistency_group_snapshot_create-snapshot-name:
+.. describe:: <snapshot-name>
+
+ Name of new consistency group snapshot (default to None)
+
+consistency group snapshot delete
+---------------------------------
+
+Delete consistency group snapshot(s)
+
+.. program:: consistency group snapshot delete
+.. code:: bash
+
+ openstack consistency group snapshot delete
+ <consistency-group-snapshot> [<consistency-group-snapshot> ...]
+
+.. _consistency_group_snapshot_delete-consistency-group-snapshot:
+.. describe:: <consistency-group-snapshot>
+
+ Consistency group snapshot(s) to delete (name or ID)
+
+consistency group snapshot list
+-------------------------------
+
+List consistency group snapshots.
+
+.. program:: consistency group snapshot list
+.. code:: bash
+
+ openstack consistency group snapshot list
+ [--all-projects]
+ [--long]
+ [--status <status>]
+ [--consistency-group <consistency-group>]
+
+.. option:: --all-projects
+
+ Show detail for all projects. Admin only.
+ (defaults to False)
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --status <status>
+
+ Filters results by a status
+ ("available", "error", "creating", "deleting" or "error_deleting")
+
+.. option:: --consistency-group <consistency-group>
+
+ Filters results by a consistency group (name or ID)
+
+consistency group snapshot show
+-------------------------------
+
+Display consistency group snapshot details.
+
+.. program:: consistency group snapshot show
+.. code:: bash
+
+ openstack consistency group snapshot show
+ <consistency-group-snapshot>
+
+.. _consistency_group_snapshot_show-consistency-group-snapshot:
+.. describe:: <consistency-group-snapshot>
+
+ Consistency group snapshot to display (name or ID)
diff --git a/doc/source/cli/command-objects/consistency-group.rst b/doc/source/cli/command-objects/consistency-group.rst
new file mode 100644
index 00000000..57082c6d
--- /dev/null
+++ b/doc/source/cli/command-objects/consistency-group.rst
@@ -0,0 +1,173 @@
+=================
+consistency group
+=================
+
+Block Storage v2
+
+consistency group add volume
+----------------------------
+
+Add volume(s) to consistency group.
+
+.. program:: consistency group add volume
+.. code:: bash
+
+ openstack consistency group add volume
+ <consistency-group>
+ <volume> [<volume> ...]
+
+.. _consistency_group_add_volume:
+.. describe:: <consistency-group>
+
+ Consistency group to contain <volume> (name or ID)
+
+.. describe:: <volume>
+
+ Volume(s) to add to <consistency-group> (name or ID)
+ (repeat option to add multiple volumes)
+
+consistency group create
+------------------------
+
+Create new consistency group.
+
+.. program:: consistency group create
+.. code:: bash
+
+ openstack consistency group create
+ --volume-type <volume-type> | --consistency-group-source <consistency-group> | --consistency-group-snapshot <consistency-group-snapshot>
+ [--description <description>]
+ [--availability-zone <availability-zone>]
+ [<name>]
+
+.. option:: --volume-type <volume-type>
+
+ Volume type of this consistency group (name or ID)
+
+.. option:: --consistency-group-source <consistency-group>
+
+ Existing consistency group (name or ID)
+
+.. option:: --consistency-group-snapshot <consistency-group-snapshot>
+
+ Existing consistency group snapshot (name or ID)
+
+.. option:: --description <description>
+
+ Description of this consistency group
+
+.. option:: --availability-zone <availability-zone>
+
+ Availability zone for this consistency group
+ (not available if creating consistency group from source)
+
+.. _consistency_group_create-name:
+.. describe:: <name>
+
+ Name of new consistency group (default to None)
+
+consistency group delete
+------------------------
+
+Delete consistency group(s).
+
+.. program:: consistency group delete
+.. code:: bash
+
+ openstack consistency group delete
+ [--force]
+ <consistency-group> [<consistency-group> ...]
+
+.. option:: --force
+
+ Allow delete in state other than error or available
+
+.. _consistency_group_delete-consistency-group:
+.. describe:: <consistency-group>
+
+ Consistency group(s) to delete (name or ID)
+
+consistency group list
+----------------------
+
+List consistency groups.
+
+.. program:: consistency group list
+.. code:: bash
+
+ openstack consistency group list
+ [--all-projects]
+ [--long]
+
+.. option:: --all-projects
+
+ Show detail for all projects. Admin only.
+ (defaults to False)
+
+.. option:: --long
+
+ List additional fields in output
+
+consistency group remove volume
+-------------------------------
+
+Remove volume(s) from consistency group.
+
+.. program:: consistency group remove volume
+.. code:: bash
+
+ openstack consistency group remove volume
+ <consistency-group>
+ <volume> [<volume> ...]
+
+.. _consistency_group_remove_volume:
+.. describe:: <consistency-group>
+
+ Consistency group containing <volume> (name or ID)
+
+.. describe:: <volume>
+
+ Volume(s) to remove from <consistency-group> (name or ID)
+ (repeat option to remove multiple volumes)
+
+consistency group set
+---------------------
+
+Set consistency group properties.
+
+.. program:: consistency group set
+.. code:: bash
+
+ openstack consistency group set
+ [--name <name>]
+ [--description <description>]
+ <consistency-group>
+
+.. option:: --name <name>
+
+ New consistency group name
+
+.. option:: --description <description>
+
+ New consistency group description
+
+.. _consistency_group_set-consistency-group:
+.. describe:: <consistency-group>
+
+ Consistency group to modify (name or ID)
+
+consistency group show
+----------------------
+
+Display consistency group details.
+
+.. program:: consistency group show
+.. code:: bash
+
+ openstack consistency group show
+ <consistency-group>
+
+.. _consistency_group_show-consistency-group:
+.. describe:: <consistency-group>
+
+ Consistency group to display (name or ID)
diff --git a/doc/source/cli/command-objects/console-log.rst b/doc/source/cli/command-objects/console-log.rst
new file mode 100644
index 00000000..bcb23e70
--- /dev/null
+++ b/doc/source/cli/command-objects/console-log.rst
@@ -0,0 +1,27 @@
+===========
+console log
+===========
+
+Server console text dump
+
+Compute v2
+
+console log show
+----------------
+
+Show server's console output
+
+.. program:: console log show
+.. code:: bash
+
+ openstack console log show
+ [--lines <num-lines>]
+ <server>
+
+.. option:: --lines <num-lines>
+
+ Number of lines to display from the end of the log (default=all)
+
+.. describe:: <server>
+
+ Server to show log console log (name or ID)
diff --git a/doc/source/cli/command-objects/console-url.rst b/doc/source/cli/command-objects/console-url.rst
new file mode 100644
index 00000000..8a5807b6
--- /dev/null
+++ b/doc/source/cli/command-objects/console-url.rst
@@ -0,0 +1,48 @@
+===========
+console url
+===========
+
+Server remote console URL
+
+Compute v2
+
+console url show
+----------------
+
+Show server's remote console URL
+
+.. program:: console url show
+.. code:: bash
+
+ openstack console url show
+ [--novnc | --xvpvnc | --spice]
+ [--rdp | --serial | --mks]
+ <server>
+
+.. option:: --novnc
+
+ Show noVNC console URL (default)
+
+.. option:: --xvpvnc
+
+ Show xvpvnc console URL
+
+.. option:: --spice
+
+ Show SPICE console URL
+
+.. option:: --rdp
+
+ Show RDP console URL
+
+.. option:: --serial
+
+ Show serial console URL
+
+.. option:: --mks
+
+ Show WebMKS console URL
+
+.. describe:: <server>
+
+ Server to show URL (name or ID)
diff --git a/doc/source/cli/command-objects/consumer.rst b/doc/source/cli/command-objects/consumer.rst
new file mode 100644
index 00000000..d4ce5dc5
--- /dev/null
+++ b/doc/source/cli/command-objects/consumer.rst
@@ -0,0 +1,83 @@
+========
+consumer
+========
+
+Identity v3
+
+`Requires: OS-OAUTH1 extension`
+
+consumer create
+---------------
+
+Create new consumer
+
+.. program:: consumer create
+.. code:: bash
+
+ openstack consumer create
+ [--description <description>]
+
+.. option:: --description <description>
+
+ New consumer description
+
+consumer delete
+---------------
+
+Delete consumer(s)
+
+.. program:: consumer delete
+.. code:: bash
+
+ openstack consumer delete
+ <consumer> [<consumer> ...]
+
+.. describe:: <consumer>
+
+ Consumer(s) to delete
+
+consumer list
+-------------
+
+List consumers
+
+.. program:: consumer list
+.. code:: bash
+
+ openstack consumer list
+
+consumer set
+------------
+
+Set consumer properties
+
+.. program:: consumer set
+.. code:: bash
+
+ openstack consumer set
+ [--description <description>]
+ <consumer>
+
+.. option:: --description <description>
+
+ New consumer description
+
+.. describe:: <consumer>
+
+ Consumer to modify
+
+consumer show
+-------------
+
+Display consumer details
+
+.. program:: consumer show
+.. code:: bash
+
+ openstack consumer show
+ <consumer>
+
+.. _consumer_show-consumer:
+.. describe:: <consumer>
+
+ Consumer to display
diff --git a/doc/source/cli/command-objects/container.rst b/doc/source/cli/command-objects/container.rst
new file mode 100644
index 00000000..e68955ad
--- /dev/null
+++ b/doc/source/cli/command-objects/container.rst
@@ -0,0 +1,150 @@
+=========
+container
+=========
+
+Object Storage v1
+
+container create
+----------------
+
+Create new container
+
+.. program:: container create
+.. code:: bash
+
+ openstack container create
+ <container-name> [<container-name> ...]
+
+.. describe:: <container-name>
+
+ New container name(s)
+
+container delete
+----------------
+
+Delete container
+
+.. program:: container delete
+.. code:: bash
+
+ openstack container delete
+ [-r] | [--recursive]
+ <container> [<container> ...]
+
+.. option:: --recursive, -r
+
+ Recursively delete objects in container before container delete
+
+.. describe:: <container>
+
+ Container(s) to delete
+
+container list
+--------------
+
+List containers
+
+.. program:: container list
+.. code:: bash
+
+ openstack container list
+ [--prefix <prefix>]
+ [--marker <marker>]
+ [--end-marker <end-marker>]
+ [--limit <num-containers>]
+ [--long]
+ [--all]
+
+.. option:: --prefix <prefix>
+
+ Filter list using <prefix>
+
+.. option:: --marker <marker>
+
+ Anchor for paging
+
+.. option:: --end-marker <end-marker>
+
+ End anchor for paging
+
+.. option:: --limit <num-containers>
+
+ Limit the number of containers returned
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --all
+
+ List all containers (default is 10000)
+
+container save
+--------------
+
+Save container contents locally
+
+.. program:: container save
+.. code:: bash
+
+ openstack container save
+ <container>
+
+.. describe:: <container>
+
+ Container to save
+
+container set
+-------------
+
+Set container properties
+
+.. program:: container set
+.. code:: bash
+
+ openstack container set
+ [--property <key=value> [...] ]
+ <container>
+
+.. option:: --property <key=value>
+
+ Set a property on this container (repeat option to set multiple properties)
+
+.. describe:: <container>
+
+ Container to modify
+
+container show
+--------------
+
+Display container details
+
+.. program:: container show
+.. code:: bash
+
+ openstack container show
+ <container>
+
+.. describe:: <container>
+
+ Container to display
+
+container unset
+---------------
+
+Unset container properties
+
+.. program:: container unset
+.. code:: bash
+
+ openstack container unset
+ [--property <key>]
+ <container>
+
+.. option:: --property <key>
+
+ Property to remove from container (repeat option to remove multiple properties)
+
+.. describe:: <container>
+
+ Container to modify
diff --git a/doc/source/cli/command-objects/credential.rst b/doc/source/cli/command-objects/credential.rst
new file mode 100644
index 00000000..0b835c73
--- /dev/null
+++ b/doc/source/cli/command-objects/credential.rst
@@ -0,0 +1,113 @@
+==========
+credential
+==========
+
+Identity v3
+
+credential create
+-----------------
+
+Create new credential
+
+.. program:: credential create
+.. code:: bash
+
+ openstack credential create
+ [--type <type>]
+ [--project <project>]
+ <user> <data>
+
+.. option:: --type <type>
+
+ New credential type
+
+.. option:: --project <project>
+
+ Project which limits the scope of the credential (name or ID)
+
+.. _credential_create:
+.. describe:: <user>
+
+ User that owns the credential (name or ID)
+
+.. describe:: <data>
+
+ New credential data
+
+credential delete
+-----------------
+
+Delete credential(s)
+
+.. program:: credential delete
+.. code:: bash
+
+ openstack credential delete
+ <credential-id> [<credential-id> ...]
+
+.. _credential_delete:
+.. describe:: <credential-id>
+
+ ID(s) of credential to delete
+
+credential list
+---------------
+
+List credentials
+
+.. program:: credential list
+.. code:: bash
+
+ openstack credential list
+
+credential set
+--------------
+
+Set credential properties
+
+.. program:: credential set
+.. code:: bash
+
+ openstack credential set
+ [--user <user>]
+ [--type <type>]
+ [--data <data>]
+ [--project <project>]
+ <credential-id>
+
+.. option:: --user <user>
+
+ User that owns the credential (name or ID)
+
+.. option:: --type <type>
+
+ New credential type
+
+.. option:: --data <data>
+
+ New credential data
+
+.. option:: --project <project>
+
+ Project which limits the scope of the credential (name or ID)
+
+.. _credential_set:
+.. describe:: <credential-id>
+
+ ID of credential to change
+
+credential show
+---------------
+
+Display credential details
+
+.. program:: credential show
+.. code:: bash
+
+ openstack credential show
+ <credential-id>
+
+.. _credential_show:
+.. describe:: <credential-id>
+
+ ID of credential to display
diff --git a/doc/source/cli/command-objects/domain.rst b/doc/source/cli/command-objects/domain.rst
new file mode 100644
index 00000000..70a3e733
--- /dev/null
+++ b/doc/source/cli/command-objects/domain.rst
@@ -0,0 +1,115 @@
+======
+domain
+======
+
+Identity v3
+
+domain create
+-------------
+
+Create new domain
+
+.. program:: domain create
+.. code:: bash
+
+ openstack domain create
+ [--description <description>]
+ [--enable | --disable]
+ [--or-show]
+ <domain-name>
+
+.. option:: --description <description>
+
+ New domain description
+
+.. option:: --enable
+
+ Enable domain (default)
+
+.. option:: --disable
+
+ Disable domain
+
+.. option:: --or-show
+
+ Return existing domain
+
+ If the domain already exists, return the existing domain data and do not fail.
+
+.. describe:: <domain-name>
+
+ New domain name
+
+domain delete
+-------------
+
+Delete domain(s)
+
+.. program:: domain delete
+.. code:: bash
+
+ openstack domain delete
+ <domain> [<domain> ...]
+
+.. describe:: <domain>
+
+ Domain(s) to delete (name or ID)
+
+domain list
+-----------
+
+List domains
+
+.. program:: domain list
+.. code:: bash
+
+ openstack domain list
+
+domain set
+----------
+
+Set domain properties
+
+.. program:: domain set
+.. code:: bash
+
+ openstack domain set
+ [--name <name>]
+ [--description <description>]
+ [--enable | --disable]
+ <domain>
+
+.. option:: --name <name>
+
+ New domain name
+
+.. option:: --description <description>
+
+ New domain description
+
+.. option:: --enable
+
+ Enable domain
+
+.. option:: --disable
+
+ Disable domain
+
+.. describe:: <domain>
+
+ Domain to modify (name or ID)
+
+domain show
+-----------
+
+Display domain details
+
+.. program:: domain show
+.. code:: bash
+
+ openstack domain show
+ <domain>
+
+.. describe:: <domain>
+
+ Domain to display (name or ID)
diff --git a/doc/source/cli/command-objects/ec2-credentials.rst b/doc/source/cli/command-objects/ec2-credentials.rst
new file mode 100644
index 00000000..9174b041
--- /dev/null
+++ b/doc/source/cli/command-objects/ec2-credentials.rst
@@ -0,0 +1,138 @@
+===============
+ec2 credentials
+===============
+
+Identity v2
+
+ec2 credentials create
+----------------------
+
+Create EC2 credentials
+
+.. program:: ec2 credentials create
+.. code-block:: bash
+
+ openstack ec2 credentials create
+ [--project <project>]
+ [--user <user>]
+ [--user-domain <user-domain>]
+ [--project-domain <project-domain>]
+
+.. option:: --project <project>
+
+ Create credentials in project (name or ID; default: current authenticated project)
+
+.. option:: --user <user>
+
+ Create credentials for user (name or ID; default: current authenticated user)
+
+.. option:: --user-domain <user-domain>
+
+ Domain the user belongs to (name or ID). This can be
+ used in case collisions between user names exist.
+
+ .. versionadded:: 3
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID). This can be
+ used in case collisions between user names exist.
+
+ .. versionadded:: 3
+
+The :option:`--project` and :option:`--user` options are typically only
+useful for admin users, but may be allowed for other users depending on
+the policy of the cloud and the roles granted to the user.
+
+ec2 credentials delete
+----------------------
+
+Delete EC2 credentials
+
+.. program:: ec2 credentials delete
+.. code-block:: bash
+
+ openstack ec2 credentials delete
+ [--user <user>]
+ [--user-domain <user-domain>]
+ <access-key> [<access-key> ...]
+
+.. option:: --user <user>
+
+ Delete credentials for user (name or ID)
+
+.. option:: --user-domain <user-domain>
+
+ Select user from a specific domain (name or ID)
+ This can be used in case collisions between user names exist.
+
+ .. versionadded:: 3
+
+.. _ec2_credentials_delete-access-key:
+.. describe:: access-key
+
+ Credentials access key(s)
+
+The :option:`--user` option is typically only useful for admin users, but
+may be allowed for other users depending on the policy of the cloud and
+the roles granted to the user.
+
+ec2 credentials list
+--------------------
+
+List EC2 credentials
+
+.. program:: ec2 credentials list
+.. code-block:: bash
+
+ openstack ec2 credentials list
+ [--user <user>]
+ [--user-domain <user-domain>]
+
+.. option:: --user <user>
+
+ Filter list by <user> (name or ID)
+
+.. option:: --user-domain <user-domain>
+
+ Select user from a specific domain (name or ID)
+ This can be used in case collisions between user names exist.
+
+ .. versionadded:: 3
+
+The :option:`--user` option is typically only useful for admin users, but
+may be allowed for other users depending on the policy of the cloud and
+the roles granted to the user.
+
+ec2 credentials show
+--------------------
+
+Display EC2 credentials details
+
+.. program:: ec2 credentials show
+.. code-block:: bash
+
+ openstack ec2 credentials show
+ [--user <user>]
+ [--user-domain <user-domain>]
+ <access-key>
+
+.. option:: --user <user>
+
+ Show credentials for user (name or ID)
+
+.. option:: --user-domain <user-domain>
+
+ Select user from a specific domain (name or ID)
+ This can be used in case collisions between user names exist.
+
+ .. versionadded:: 3
+
+.. _ec2_credentials_show-access-key:
+.. describe:: access-key
+
+ Credentials access key
+
+The :option:`--user` option is typically only useful for admin users, but
+may be allowed for other users depending on the policy of the cloud and
+the roles granted to the user.
diff --git a/doc/source/cli/command-objects/endpoint.rst b/doc/source/cli/command-objects/endpoint.rst
new file mode 100644
index 00000000..02a75bea
--- /dev/null
+++ b/doc/source/cli/command-objects/endpoint.rst
@@ -0,0 +1,196 @@
+========
+endpoint
+========
+
+Identity v2, v3
+
+endpoint create
+---------------
+
+Create new endpoint
+
+*Identity version 2 only*
+
+.. program:: endpoint create (v2)
+.. code:: bash
+
+ openstack endpoint create
+ --publicurl <url>
+ [--adminurl <url>]
+ [--internalurl <url>]
+ [--region <region-id>]
+ <service>
+
+.. option:: --publicurl <url>
+
+ New endpoint public URL (required)
+
+.. option:: --adminurl <url>
+
+ New endpoint admin URL
+
+.. option:: --internalurl <url>
+
+ New endpoint internal URL
+
+.. option:: --region <region-id>
+
+ New endpoint region ID
+
+.. _endpoint_create-endpoint:
+.. describe:: <service>
+
+ Service to be associated with new endpoint (name or ID)
+
+*Identity version 3 only*
+
+.. program:: endpoint create (v3)
+.. code:: bash
+
+ openstack endpoint create
+ [--region <region-id>]
+ [--enable | --disable]
+ <service>
+ <interface>
+ <url>
+
+.. option:: --region <region-id>
+
+ New endpoint region ID
+
+.. option:: --enable
+
+ Enable endpoint (default)
+
+.. option:: --disable
+
+ Disable endpoint
+
+.. describe:: <service>
+
+ Service to be associated with new endpoint(name or ID)
+
+.. describe:: <interface>
+
+ New endpoint interface type (admin, public or internal)
+
+.. describe:: <url>
+
+ New endpoint URL
+
+endpoint delete
+---------------
+
+Delete endpoint(s)
+
+.. program:: endpoint delete
+.. code:: bash
+
+ openstack endpoint delete
+ <endpoint-id> [<endpoint-id> ...]
+
+.. _endpoint_delete-endpoint:
+.. describe:: <endpoint-id>
+
+ Endpoint(s) to delete (ID only)
+
+endpoint list
+-------------
+
+List endpoints
+
+.. program:: endpoint list
+.. code:: bash
+
+ openstack endpoint list
+ [--service <service>]
+ [--interface <interface>]
+ [--region <region-id>]
+ [--long]
+
+.. option:: --service <service>
+
+ Filter by service (type, name or ID)
+
+ *Identity version 3 only*
+
+.. option:: --interface <interface>
+
+ Filter by interface type (admin, public or internal)
+
+ *Identity version 3 only*
+
+.. option:: --region <region-id>
+
+ Filter by region ID
+
+ *Identity version 3 only*
+
+.. option:: --long
+
+ List additional fields in output
+
+ *Identity version 2 only*
+
+endpoint set
+------------
+
+Set endpoint properties
+
+*Identity version 3 only*
+
+.. program:: endpoint set
+.. code:: bash
+
+ openstack endpoint set
+ [--region <region-id>]
+ [--interface <interface>]
+ [--url <url>]
+ [--service <service>]
+ [--enable | --disable]
+ <endpoint-id>
+
+.. option:: --region <region-id>
+
+ New endpoint region ID
+
+.. option:: --interface <interface>
+
+ New endpoint interface type (admin, public or internal)
+
+.. option:: --url <url>
+
+ New endpoint URL
+
+.. option:: --service <service>
+
+ New endpoint service (name or ID)
+
+.. option:: --enable
+
+ Enable endpoint
+
+.. option:: --disable
+
+ Disable endpoint
+
+.. _endpoint_set-endpoint:
+.. describe:: <endpoint-id>
+
+ Endpoint to modify (ID only)
+
+endpoint show
+-------------
+
+Display endpoint details
+
+.. program:: endpoint show
+.. code:: bash
+
+ openstack endpoint show
+ <endpoint>
+
+.. _endpoint_show-endpoint:
+.. describe:: <endpoint>
+
+ Endpoint to display (endpoint ID, service ID, service name, service type)
diff --git a/doc/source/cli/command-objects/extension.rst b/doc/source/cli/command-objects/extension.rst
new file mode 100644
index 00000000..36cf418b
--- /dev/null
+++ b/doc/source/cli/command-objects/extension.rst
@@ -0,0 +1,58 @@
+=========
+extension
+=========
+
+Many OpenStack server APIs include API extensions that enable
+additional functionality.
+
+extension list
+--------------
+
+List API extensions
+
+.. program:: extension list
+.. code:: bash
+
+ openstack extension list
+ [--compute]
+ [--identity]
+ [--network]
+ [--volume]
+ [--long]
+
+.. option:: --compute
+
+ List extensions for the Compute API
+
+.. option:: --identity
+
+ List extensions for the Identity API
+
+.. option:: --network
+
+ List extensions for the Network API
+
+.. option:: --volume
+
+ List extensions for the Block Storage API
+
+.. option:: --long
+
+ List additional fields in output
+
+extension show
+--------------
+
+Show API extension
+
+.. program:: extension show
+.. code:: bash
+
+ openstack extension show
+ <extension>
+
+.. _extension_show:
+.. describe:: <extension>
+
+ Extension to display. Currently, only network extensions are supported.
+ (Name or Alias)
diff --git a/doc/source/cli/command-objects/federation-protocol.rst b/doc/source/cli/command-objects/federation-protocol.rst
new file mode 100644
index 00000000..e1f98174
--- /dev/null
+++ b/doc/source/cli/command-objects/federation-protocol.rst
@@ -0,0 +1,112 @@
+===================
+federation protocol
+===================
+
+Identity v3
+
+`Requires: OS-FEDERATION extension`
+
+federation protocol create
+--------------------------
+
+Create new federation protocol
+
+.. program:: federation protocol create
+.. code:: bash
+
+ openstack federation protocol create
+ --identity-provider <identity-provider>
+ --mapping <mapping>
+ <name>
+
+.. option:: --identity-provider <identity-provider>
+
+ Identity provider that will support the new federation protocol (name or ID) (required)
+
+.. option:: --mapping <mapping>
+
+ Mapping that is to be used (name or ID) (required)
+
+.. describe:: <name>
+
+ New federation protocol name (must be unique per identity provider)
+
+federation protocol delete
+--------------------------
+
+Delete federation protocol(s)
+
+.. program:: federation protocol delete
+.. code:: bash
+
+ openstack federation protocol delete
+ --identity-provider <identity-provider>
+ <federation-protocol> [<federation-protocol> ...]
+
+.. option:: --identity-provider <identity-provider>
+
+ Identity provider that supports <federation-protocol> (name or ID) (required)
+
+.. describe:: <federation-protocol>
+
+ Federation protocol(s) to delete (name or ID)
+
+federation protocol list
+------------------------
+
+List federation protocols
+
+.. program:: federation protocol list
+.. code:: bash
+
+ openstack federation protocol list
+ --identity-provider <identity-provider>
+
+.. option:: --identity-provider <identity-provider>
+
+ Identity provider to list (name or ID) (required)
+
+federation protocol set
+-----------------------
+
+Set federation protocol properties
+
+.. program:: federation protocol set
+.. code:: bash
+
+ openstack federation protocol set
+ --identity-provider <identity-provider>
+ [--mapping <mapping>]
+ <federation-protocol>
+
+.. option:: --identity-provider <identity-provider>
+
+ Identity provider that supports <federation-protocol> (name or ID) (required)
+
+.. option:: --mapping <mapping>
+
+ Mapping that is to be used (name or ID)
+
+.. describe:: <federation-protocol>
+
+ Federation protocol to modify (name or ID)
+
+federation protocol show
+------------------------
+
+Display federation protocol details
+
+.. program:: federation protocol show
+.. code:: bash
+
+ openstack federation protocol show
+ --identity-provider <identity-provider>
+ <federation-protocol>
+
+.. option:: --identity-provider <identity-provider>
+
+ Identity provider that supports <federation-protocol> (name or ID) (required)
+
+.. describe:: <federation-protocol>
+
+ Federation protocol to display (name or ID)
diff --git a/doc/source/cli/command-objects/flavor.rst b/doc/source/cli/command-objects/flavor.rst
new file mode 100644
index 00000000..6feb4498
--- /dev/null
+++ b/doc/source/cli/command-objects/flavor.rst
@@ -0,0 +1,220 @@
+======
+flavor
+======
+
+Compute v2
+
+flavor create
+-------------
+
+Create new flavor
+
+.. program:: flavor create
+.. code:: bash
+
+ openstack flavor create
+ [--id <id>]
+ [--ram <size-mb>]
+ [--disk <size-gb>]
+ [--ephemeral-disk <size-gb>]
+ [--swap <size-mb>]
+ [--vcpus <num-cpu>]
+ [--rxtx-factor <factor>]
+ [--public | --private]
+ [--property <key=value> [...] ]
+ [--project <project>]
+ [--project-domain <project-domain>]
+ <flavor-name>
+
+.. option:: --id <id>
+
+ Unique flavor ID; 'auto' creates a UUID (default: auto)
+
+.. option:: --ram <size-mb>
+
+ Memory size in MB (default 256M)
+
+.. option:: --disk <size-gb>
+
+ Disk size in GB (default 0G)
+
+.. option:: --ephemeral-disk <size-gb>
+
+ Ephemeral disk size in GB (default 0G)
+
+.. option:: --swap <size-mb>
+
+ Swap space size in MB (default 0M)
+
+.. option:: --vcpus <num-cpu>
+
+ Number of vcpus (default 1)
+
+.. option:: --rxtx-factor <factor>
+
+ RX/TX factor (default 1.0)
+
+.. option:: --public
+
+ Flavor is available to other projects (default)
+
+.. option:: --private
+
+ Flavor is not available to other projects
+
+.. option:: --property <key=value>
+
+ Property to add for this flavor (repeat option to set multiple properties)
+
+.. option:: --project <project>
+
+ Allow <project> to access private flavor (name or ID)
+ (Must be used with :option:`--private` option)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. _flavor_create-flavor-name:
+.. describe:: <flavor-name>
+
+ New flavor name
+
+flavor delete
+-------------
+
+Delete flavor(s)
+
+.. program:: flavor delete
+.. code:: bash
+
+ openstack flavor delete
+ <flavor> [<flavor> ...]
+
+.. _flavor_delete-flavor:
+.. describe:: <flavor>
+
+ Flavor(s) to delete (name or ID)
+
+flavor list
+-----------
+
+List flavors
+
+.. program:: flavor list
+.. code:: bash
+
+ openstack flavor list
+ [--public | --private | --all]
+ [--long]
+ [--marker <flavor-id>]
+ [--limit <num-flavors>]
+
+.. option:: --public
+
+ List only public flavors (default)
+
+.. option:: --private
+
+ List only private flavors
+
+.. option:: --all
+
+ List all flavors, whether public or private
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --marker <flavor-id>
+
+ The last flavor ID of the previous page
+
+.. option:: --limit <num-flavors>
+
+ Maximum number of flavors to display
+
+flavor set
+----------
+
+Set flavor properties
+
+.. program:: flavor set
+.. code:: bash
+
+ openstack flavor set
+ [--no-property]
+ [--property <key=value> [...] ]
+ [--project <project>]
+ [--project-domain <project-domain>]
+ <flavor>
+
+.. option:: --property <key=value>
+
+ Property to add or modify for this flavor (repeat option to set multiple properties)
+
+.. option:: --project <project>
+
+ Set flavor access to project (name or ID) (admin only)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --no-property
+
+ Remove all properties from this flavor (specify both --no-property and --property
+ to remove the current properties before setting new properties.)
+
+.. describe:: <flavor>
+
+ Flavor to modify (name or ID)
+
+flavor show
+-----------
+
+Display flavor details
+
+.. program:: flavor show
+.. code:: bash
+
+ openstack flavor show
+ <flavor>
+
+.. _flavor_show-flavor:
+.. describe:: <flavor>
+
+ Flavor to display (name or ID)
+
+flavor unset
+------------
+
+Unset flavor properties
+
+.. program:: flavor unset
+.. code:: bash
+
+ openstack flavor unset
+ [--property <key> [...] ]
+ [--project <project>]
+ [--project-domain <project-domain>]
+ <flavor>
+
+.. option:: --property <key>
+
+ Property to remove from flavor (repeat option to remove multiple properties)
+
+.. option:: --project <project>
+
+ Remove flavor access from project (name or ID) (admin only)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. describe:: <flavor>
+
+ Flavor to modify (name or ID)
diff --git a/doc/source/cli/command-objects/floating-ip-pool.rst b/doc/source/cli/command-objects/floating-ip-pool.rst
new file mode 100644
index 00000000..9213b86d
--- /dev/null
+++ b/doc/source/cli/command-objects/floating-ip-pool.rst
@@ -0,0 +1,15 @@
+================
+floating ip pool
+================
+
+Compute v2, Network v2
+
+floating ip pool list
+---------------------
+
+List pools of floating IP addresses
+
+.. program:: floating ip pool list
+.. code:: bash
+
+ openstack floating ip pool list
diff --git a/doc/source/cli/command-objects/floating-ip.rst b/doc/source/cli/command-objects/floating-ip.rst
new file mode 100644
index 00000000..f2f101d3
--- /dev/null
+++ b/doc/source/cli/command-objects/floating-ip.rst
@@ -0,0 +1,205 @@
+===========
+floating ip
+===========
+
+Compute v2, Network v2
+
+floating ip create
+------------------
+
+Create floating IP
+
+.. program:: floating ip create
+.. code:: bash
+
+ openstack floating ip create
+ [--subnet <subnet>]
+ [--port <port>]
+ [--floating-ip-address <ip-address>]
+ [--fixed-ip-address <ip-address>]
+ [--description <description>]
+ [--project <project> [--project-domain <project-domain>]]
+ <network>
+
+.. option:: --subnet <subnet>
+
+ Subnet on which you want to create the floating IP (name or ID)
+ *Network version 2 only*
+
+.. option:: --port <port>
+
+ Port to be associated with the floating IP (name or ID)
+ *Network version 2 only*
+
+.. option:: --floating-ip-address <ip-address>
+
+ Floating IP address
+ *Network version 2 only*
+
+.. option:: --fixed-ip-address <ip-address>
+
+ Fixed IP address mapped to the floating IP
+ *Network version 2 only*
+
+.. option:: --description <description>
+
+ Set floating IP description
+ *Network version 2 only*
+
+.. option:: --project <project>
+
+ Owner's project (name or ID)
+
+ *Network version 2 only*
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ *Network version 2 only*
+
+.. describe:: <network>
+
+ Network to allocate floating IP from (name or ID)
+
+floating ip delete
+------------------
+
+Delete floating IP(s)
+
+.. program:: floating ip delete
+.. code:: bash
+
+ openstack floating ip delete <floating-ip> [<floating-ip> ...]
+
+.. describe:: <floating-ip>
+
+ Floating IP(s) to delete (IP address or ID)
+
+floating ip list
+----------------
+
+List floating IP(s)
+
+.. program:: floating ip list
+.. code:: bash
+
+ openstack floating ip list
+ [--network <network>]
+ [--port <port>]
+ [--fixed-ip-address <ip-address>]
+ [--long]
+ [--status <status>]
+ [--project <project> [--project-domain <project-domain>]]
+ [--router <router>]
+
+.. option:: --network <network>
+
+ List floating IP(s) according to given network (name or ID)
+
+ *Network version 2 only*
+
+.. option:: --port <port>
+
+ List floating IP(s) according to given port (name or ID)
+
+ *Network version 2 only*
+
+.. option:: --fixed-ip-address <ip-address>
+
+ List floating IP(s) according to given fixed IP address
+
+ *Network version 2 only*
+
+.. option:: --long
+
+ List additional fields in output
+
+ *Network version 2 only*
+
+.. option:: --status <status>
+
+ List floating IP(s) according to given status ('ACTIVE', 'DOWN')
+
+ *Network version 2 only*
+
+.. option:: --project <project>
+
+ List floating IP(s) according to given project (name or ID)
+
+ *Network version 2 only*
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID). This can
+ be used in case collisions between project names exist.
+
+ *Network version 2 only*
+
+.. option:: --router <router>
+
+ List floating IP(s) according to given router (name or ID)
+
+ *Network version 2 only*
+
+floating ip set
+---------------
+
+Set floating IP properties
+
+.. program:: floating ip set
+.. code:: bash
+
+ openstack floating ip set
+ --port <port>
+ [--fixed-ip-address <ip-address>]
+ <floating-ip>
+
+.. option:: --port <port>
+
+ Assocaite the floating IP with port (name or ID)
+
+.. option:: --fixed-ip-address <ip-address>
+
+ Fixed IP of the port (required only if port has multiple IPs)
+
+.. _floating_ip_set-floating-ip:
+.. describe:: <floating-ip>
+
+ Floating IP to associate (IP address or ID)
+
+floating ip show
+----------------
+
+Display floating IP details
+
+.. program:: floating ip show
+.. code:: bash
+
+ openstack floating ip show <floating-ip>
+
+.. describe:: <floating-ip>
+
+ Floating IP to display (IP address or ID)
+
+floating ip unset
+-----------------
+
+Unset floating IP Properties
+
+.. program:: floating ip unset
+.. code:: bash
+
+ openstack floating ip unset
+ --port
+ <floating-ip>
+
+.. option:: --port
+
+ Disassociate any port associated with the floating IP
+
+.. _floating_ip_unset-floating-ip:
+.. describe:: <floating-ip>
+
+ Floating IP to disassociate (IP address or ID)
diff --git a/doc/source/cli/command-objects/group.rst b/doc/source/cli/command-objects/group.rst
new file mode 100644
index 00000000..ac938efd
--- /dev/null
+++ b/doc/source/cli/command-objects/group.rst
@@ -0,0 +1,249 @@
+=====
+group
+=====
+
+Identity v3
+
+group add user
+--------------
+
+Add user to group
+
+.. program:: group add user
+.. code:: bash
+
+ openstack group add user
+ [--group-domain <group-domain>]
+ [--user-domain <user-domain>]
+ <group>
+ <user> [<user> ...]
+
+.. option:: --group-domain <group-domain>
+
+ Domain the group belongs to (name or ID). This can be
+ used in case collisions between group names exist.
+
+ .. versionadded:: 3
+
+.. option:: --user-domain <user-domain>
+
+ Domain the user belongs to (name or ID). This can be
+ used in case collisions between user names exist.
+
+ .. versionadded:: 3
+
+.. describe:: <group>
+
+ Group to contain <user> (name or ID)
+
+.. describe:: <user>
+
+ User(s) to add to <group> (name or ID)
+ (repeat option to add multiple users)
+
+group contains user
+-------------------
+
+Check user membership in group
+
+.. program:: group contains user
+.. code:: bash
+
+ openstack group contains user
+ [--group-domain <group-domain>]
+ [--user-domain <user-domain>]
+ <group>
+ <user>
+
+.. option:: --group-domain <group-domain>
+
+ Domain the group belongs to (name or ID). This can be
+ used in case collisions between group names exist.
+
+ .. versionadded:: 3
+
+.. option:: --user-domain <user-domain>
+
+ Domain the user belongs to (name or ID). This can be
+ used in case collisions between user names exist.
+
+ .. versionadded:: 3
+
+.. describe:: <group>
+
+ Group to check (name or ID)
+
+.. describe:: <user>
+
+ User to check (name or ID)
+
+group create
+------------
+
+Create new group
+
+.. program:: group create
+.. code:: bash
+
+ openstack group create
+ [--domain <domain>]
+ [--description <description>]
+ [--or-show]
+ <group-name>
+
+.. option:: --domain <domain>
+
+ Domain to contain new group (name or ID)
+
+.. option:: --description <description>
+
+ New group description
+
+.. option:: --or-show
+
+ Return existing group
+
+ If the group already exists, return the existing group data and do not fail.
+
+.. describe:: <group-name>
+
+ New group name
+
+group delete
+------------
+
+Delete group
+
+.. program:: group delete
+.. code:: bash
+
+ openstack group delete
+ [--domain <domain>]
+ <group> [<group> ...]
+
+.. option:: --domain <domain>
+
+ Domain containing group(s) (name or ID)
+
+.. describe:: <group>
+
+ Group(s) to delete (name or ID)
+
+group list
+----------
+
+List groups
+
+.. program:: group list
+.. code:: bash
+
+ openstack group list
+ [--domain <domain>]
+ [--user <user> [--user-domain <user-domain>]]
+ [--long]
+
+.. option:: --domain <domain>
+
+ Filter group list by <domain> (name or ID)
+
+.. option:: --user <user>
+
+ Filter group list by <user> (name or ID)
+
+.. option:: --user-domain <user-domain>
+
+ Domain the user belongs to (name or ID). This can be
+ used in case collisions between user names exist.
+
+ .. versionadded:: 3
+
+.. option:: --long
+
+ List additional fields in output
+
+group remove user
+-----------------
+
+Remove user from group
+
+.. program:: group remove user
+.. code:: bash
+
+ openstack group remove user
+ [--group-domain <group-domain>]
+ [--user-domain <user-domain>]
+ <group>
+ <user> [<user> ...]
+
+.. option:: --group-domain <group-domain>
+
+ Domain the group belongs to (name or ID). This can be
+ used in case collisions between group names exist.
+
+ .. versionadded:: 3
+
+.. option:: --user-domain <user-domain>
+
+ Domain the user belongs to (name or ID). This can be
+ used in case collisions between user names exist.
+
+ .. versionadded:: 3
+
+.. describe:: <group>
+
+ Group containing <user> (name or ID)
+
+.. describe:: <user>
+
+ User(s) to remove from <group> (name or ID)
+ (repeat option to remove multiple users)
+
+group set
+---------
+
+Set group properties
+
+.. program:: group set
+.. code:: bash
+
+ openstack group set
+ [--domain <domain>]
+ [--name <name>]
+ [--description <description>]
+ <group>
+
+.. option:: --domain <domain>
+
+ Domain containing <group> (name or ID)
+
+.. option:: --name <name>
+
+ New group name
+
+.. option:: --description <description>
+
+ New group description
+
+.. describe:: <group>
+
+ Group to modify (name or ID)
+
+group show
+----------
+
+Display group details
+
+.. program:: group show
+.. code:: bash
+
+ openstack group show
+ [--domain <domain>]
+ <group>
+
+.. option:: --domain <domain>
+
+ Domain containing <group> (name or ID)
+
+.. describe:: <group>
+
+ Group to display (name or ID)
diff --git a/doc/source/cli/command-objects/host.rst b/doc/source/cli/command-objects/host.rst
new file mode 100644
index 00000000..cbf34398
--- /dev/null
+++ b/doc/source/cli/command-objects/host.rst
@@ -0,0 +1,72 @@
+====
+host
+====
+
+Compute v2
+
+The physical computer running a hypervisor.
+
+host list
+---------
+
+List hosts
+
+.. program:: host list
+.. code:: bash
+
+ openstack host list
+ [--zone <availability-zone>]
+
+.. option:: --zone <availability-zone>
+
+ Only return hosts in the availability zone
+
+host set
+--------
+
+Set host properties
+
+.. program:: host set
+.. code:: bash
+
+ openstack host set
+ [--enable | --disable]
+ [--enable-maintenance | --disable-maintenance]
+ <host>
+
+.. _host-set:
+.. option:: --enable
+
+ Enable the host
+
+.. option:: --disable
+
+ Disable the host
+
+.. _maintenance-set:
+.. option:: --enable-maintenance
+
+ Enable maintenance mode for the host
+
+.. option:: --disable-maintenance
+
+ Disable maintenance mode for the host
+
+.. describe:: <host>
+
+ Host to modify (name only)
+
+host show
+---------
+
+Display host details
+
+.. program:: host show
+.. code:: bash
+
+ openstack host show
+ <host>
+
+.. describe:: <host>
+
+ Name of host
diff --git a/doc/source/cli/command-objects/hypervisor-stats.rst b/doc/source/cli/command-objects/hypervisor-stats.rst
new file mode 100644
index 00000000..89faf135
--- /dev/null
+++ b/doc/source/cli/command-objects/hypervisor-stats.rst
@@ -0,0 +1,16 @@
+================
+hypervisor stats
+================
+
+Compute v2
+
+hypervisor stats show
+---------------------
+
+Display hypervisor stats details
+
+.. program:: hypervisor stats show
+.. code:: bash
+
+ openstack hypervisor stats show
+
diff --git a/doc/source/cli/command-objects/hypervisor.rst b/doc/source/cli/command-objects/hypervisor.rst
new file mode 100644
index 00000000..9db384a2
--- /dev/null
+++ b/doc/source/cli/command-objects/hypervisor.rst
@@ -0,0 +1,41 @@
+==========
+hypervisor
+==========
+
+Compute v2
+
+hypervisor list
+---------------
+
+List hypervisors
+
+.. program:: hypervisor list
+.. code:: bash
+
+ openstack hypervisor list
+ [--matching <hostname>]
+ [--long]
+
+.. option:: --matching <hostname>
+
+ Filter hypervisors using <hostname> substring
+
+.. option:: --long
+
+ List additional fields in output
+
+hypervisor show
+---------------
+
+Display hypervisor details
+
+.. program:: hypervisor show
+.. code:: bash
+
+ openstack hypervisor show
+ <hypervisor>
+
+.. _hypervisor_show-flavor:
+.. describe:: <hypervisor>
+
+ Hypervisor to display (name or ID)
diff --git a/doc/source/cli/command-objects/identity-provider.rst b/doc/source/cli/command-objects/identity-provider.rst
new file mode 100644
index 00000000..0c2d02bd
--- /dev/null
+++ b/doc/source/cli/command-objects/identity-provider.rst
@@ -0,0 +1,127 @@
+=================
+identity provider
+=================
+
+Identity v3
+
+`Requires: OS-FEDERATION extension`
+
+identity provider create
+------------------------
+
+Create new identity provider
+
+.. program:: identity provider create
+.. code:: bash
+
+ openstack identity provider create
+ [--remote-id <remote-id> [...] | --remote-id-file <file-name>]
+ [--description <description>]
+ [--enable | --disable]
+ <name>
+
+.. option:: --remote-id <remote-id>
+
+ Remote IDs to associate with the Identity Provider
+ (repeat option to provide multiple values)
+
+.. option:: --remote-id-file <file-name>
+
+ Name of a file that contains many remote IDs to associate with the identity
+ provider, one per line
+
+.. option:: --description
+
+ New identity provider description
+
+.. option:: --enable
+
+ Enable the identity provider (default)
+
+.. option:: --disable
+
+ Disable the identity provider
+
+.. describe:: <name>
+
+ New identity provider name (must be unique)
+
+identity provider delete
+------------------------
+
+Delete identity provider(s)
+
+.. program:: identity provider delete
+.. code:: bash
+
+ openstack identity provider delete
+ <identity-provider> [<identity-provider> ...]
+
+.. describe:: <identity-provider>
+
+ Identity provider(s) to delete
+
+identity provider list
+----------------------
+
+List identity providers
+
+.. program:: identity provider list
+.. code:: bash
+
+ openstack identity provider list
+
+identity provider set
+---------------------
+
+Set identity provider properties
+
+.. program:: identity provider set
+.. code:: bash
+
+ openstack identity provider set
+ [--remote-id <remote-id> [...] | --remote-id-file <file-name>]
+ [--description <description>]
+ [--enable | --disable]
+ <identity-provider>
+
+.. option:: --remote-id <remote-id>
+
+ Remote IDs to associate with the Identity Provider
+ (repeat option to provide multiple values)
+
+.. option:: --remote-id-file <file-name>
+
+ Name of a file that contains many remote IDs to associate with the identity
+ provider, one per line
+
+.. option:: --description
+
+ Set identity provider description
+
+.. option:: --enable
+
+ Enable the identity provider
+
+.. option:: --disable
+
+ Disable the identity provider
+
+.. describe:: <identity-provider>
+
+ Identity provider to modify
+
+identity provider show
+----------------------
+
+Display identity provider details
+
+.. program:: identity provider show
+.. code:: bash
+
+ openstack identity provider show
+ <identity-provider>
+
+.. describe:: <identity-provider>
+
+ Identity provider to display
diff --git a/doc/source/cli/command-objects/image.rst b/doc/source/cli/command-objects/image.rst
new file mode 100644
index 00000000..ec51fa93
--- /dev/null
+++ b/doc/source/cli/command-objects/image.rst
@@ -0,0 +1,576 @@
+=====
+image
+=====
+
+Image v1, v2
+
+image add project
+-----------------
+
+*Only supported for Image v2*
+
+Associate project with image
+
+.. program:: image add project
+.. code:: bash
+
+ openstack image add project
+ [--project-domain <project-domain>]
+ <image> <project>
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. _image_add_project-image:
+.. describe:: <image>
+
+ Image to share (name or ID).
+
+.. _image_add_project-project:
+.. describe:: <project>
+
+ Project to associate with image (name or ID)
+
+image create
+------------
+
+*Image v1, v2*
+
+Create/upload an image
+
+.. program:: image create
+.. code:: bash
+
+ openstack image create
+ [--id <id>]
+ [--store <store>]
+ [--container-format <container-format>]
+ [--disk-format <disk-format>]
+ [--size <size>]
+ [--min-disk <disk-gb>]
+ [--min-ram <ram-mb>]
+ [--location <image-url>]
+ [--copy-from <image-url>]
+ [--file <file> | --volume <volume>]
+ [--force]
+ [--checksum <checksum>]
+ [--protected | --unprotected]
+ [--public | --private]
+ [--property <key=value> [...] ]
+ [--tag <tag> [...] ]
+ [--project <project> [--project-domain <project-domain>]]
+ <image-name>
+
+.. option:: --id <id>
+
+ Image ID to reserve
+
+.. option:: --store <store>
+
+ Upload image to this store
+
+ *Image version 1 only.*
+
+.. option:: --container-format <container-format>
+
+ Image container format. The supported options are: ami, ari, aki,
+ bare, docker, ova, ovf. The default format is: bare
+
+.. option:: --disk-format <disk-format>
+
+ Image disk format. The supported options are: ami, ari, aki, vhd, vmdk,
+ raw, qcow2, vhdx, vdi, iso, and ploop. The default format is: raw
+
+.. option:: --size <size>
+
+ Image size, in bytes (only used with :option:`--location` and :option:`--copy-from`)
+
+ *Image version 1 only.*
+
+.. option:: --min-disk <disk-gb>
+
+ Minimum disk size needed to boot image, in gigabytes
+
+.. option:: --min-ram <ram-mb>
+
+ Minimum RAM size needed to boot image, in megabytes
+
+.. option:: --location <image-url>
+
+ Download image from an existing URL
+
+ *Image version 1 only.*
+
+.. option:: --copy-from <image-url>
+
+ Copy image from the data store (similar to :option:`--location`)
+
+ *Image version 1 only.*
+
+.. option:: --file <file>
+
+ Upload image from local file
+
+.. option:: --volume <volume>
+
+ Create image from a volume
+
+.. option:: --force
+
+ Force image creation if volume is in use (only meaningful with :option:`--volume`)
+
+.. option:: --checksum <checksum>
+
+ Image hash used for verification
+
+ *Image version 1 only.*
+
+.. option:: --protected
+
+ Prevent image from being deleted
+
+.. option:: --unprotected
+
+ Allow image to be deleted (default)
+
+.. option:: --public
+
+ Image is accessible to the public
+
+.. option:: --private
+
+ Image is inaccessible to the public (default)
+
+.. option:: --property <key=value>
+
+ Set a property on this image (repeat for multiple values)
+
+.. option:: --tag <tag>
+
+ Set a tag on this image (repeat for multiple values)
+
+ .. versionadded:: 2
+
+.. option:: --project <project>
+
+ Set an alternate project on this image (name or ID).
+ Previously known as `--owner`.
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ .. versionadded:: 2
+
+.. _image_create-image-name:
+.. describe:: <image-name>
+
+ New image name
+
+image delete
+------------
+
+Delete image(s)
+
+.. program:: image delete
+.. code:: bash
+
+ openstack image delete
+ <image>
+
+.. _image_delete-image:
+.. describe:: <image>
+
+ Image(s) to delete (name or ID)
+
+image list
+----------
+
+List available images
+
+.. program:: image list
+.. code:: bash
+
+ openstack image list
+ [--public | --private | --shared]
+ [--property <key=value>]
+ [--long]
+ [--sort <key>[:<direction>]]
+ [--limit <num-images>]
+ [--marker <image>]
+
+.. option:: --public
+
+ List only public images
+
+.. option:: --private
+
+ List only private images
+
+.. option:: --shared
+
+ List only shared images
+
+ *Image version 2 only.*
+
+.. option:: --property <key=value>
+
+ Filter output based on property
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --sort <key>[:<direction>]
+
+ Sort output by selected keys and directions(asc or desc) (default: name:asc),
+ multiple keys and directions can be specified separated by comma
+
+.. option:: --limit <num-images>
+
+ Maximum number of images to display.
+
+ *Image version 2 only*
+
+.. option:: --marker <image>
+
+ The last image of the previous page. Display list of images
+ after marker. Display all images if not specified. (name or ID)
+
+ *Image version 2 only*
+
+image remove project
+--------------------
+
+*Only supported for Image v2*
+
+Disassociate project with image
+
+.. program:: image remove project
+.. code:: bash
+
+ openstack image remove remove
+ [--project-domain <project-domain>]
+ <image>
+ <project>
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. _image_remove_project:
+.. describe:: <image>
+
+ Image to unshare (name or ID).
+
+.. describe:: <project>
+
+ Project to disassociate with image (name or ID)
+
+image save
+----------
+
+Save an image locally
+
+.. program:: image save
+.. code:: bash
+
+ openstack image save
+ --file <filename>
+ <image>
+
+.. option:: --file <filename>
+
+ Downloaded image save filename (default: stdout)
+
+.. _image_save-image:
+.. describe:: <image>
+
+ Image to save (name or ID)
+
+image set
+---------
+
+*Image v1, v2*
+
+Set image properties
+
+.. program:: image set
+.. code:: bash
+
+ openstack image set
+ [--name <name>]
+ [--min-disk <disk-gb>]
+ [--min-ram <ram-mb>]
+ [--container-format <container-format>]
+ [--disk-format <disk-format>]
+ [--size <size>]
+ [--protected | --unprotected]
+ [--public | --private]
+ [--store <store>]
+ [--location <image-url>]
+ [--copy-from <image-url>]
+ [--file <file>]
+ [--volume <volume>]
+ [--force]
+ [--checksum <checksum>]
+ [--stdin]
+ [--property <key=value> [...] ]
+ [--tag <tag> [...] ]
+ [--architecture <architecture>]
+ [--instance-id <instance-id>]
+ [--kernel-id <kernel-id>]
+ [--os-distro <os-distro>]
+ [--os-version <os-version>]
+ [--ramdisk-id <ramdisk-id>]
+ [--activate|--deactivate]
+ [--project <project> [--project-domain <project-domain>]]
+ [--accept | --reject | --pending]
+ <image>
+
+.. option:: --name <name>
+
+ New image name
+
+.. option:: --min-disk <disk-gb>
+
+ Minimum disk size needed to boot image, in gigabytes
+
+.. option:: --min-ram <ram-mb>
+
+ Minimum RAM size needed to boot image, in megabytes
+
+.. option:: --container-format <container-format>
+
+ Image container format. The supported options are: ami, ari, aki,
+ bare, docker, ova, ovf.
+
+.. option:: --disk-format <disk-format>
+
+ Image disk format. The supported options are: ami, ari, aki, vhd, vmdk,
+ raw, qcow2, vhdx, vdi, iso, and ploop.
+
+.. option:: --size <size>
+
+ Size of image data (in bytes)
+
+ *Image version 1 only.*
+
+.. option:: --protected
+
+ Prevent image from being deleted
+
+.. option:: --unprotected
+
+ Allow image to be deleted (default)
+
+.. option:: --public
+
+ Image is accessible to the public
+
+.. option:: --private
+
+ Image is inaccessible to the public (default)
+
+.. option:: --store <store>
+
+ Upload image to this store
+
+ *Image version 1 only.*
+
+.. option:: --location <image-url>
+
+ Download image from an existing URL
+
+ *Image version 1 only.*
+
+.. option:: --copy-from <image-url>
+
+ Copy image from the data store (similar to :option:`--location`)
+
+ *Image version 1 only.*
+
+.. option:: --file <file>
+
+ Upload image from local file
+
+ *Image version 1 only.*
+
+.. option:: --volume <volume>
+
+ Update image with a volume
+
+ *Image version 1 only.*
+
+.. option:: --force
+
+ Force image update if volume is in use (only meaningful with :option:`--volume`)
+
+ *Image version 1 only.*
+
+.. option:: --checksum <checksum>
+
+ Image hash used for verification
+
+ *Image version 1 only.*
+
+.. option:: --stdin
+
+ Allow to read image data from standard input
+
+ *Image version 1 only.*
+
+.. option:: --property <key=value>
+
+ Set a property on this image (repeat option to set multiple properties)
+
+ .. versionadded:: 2
+
+.. option:: --tag <tag>
+
+ Set a tag on this image (repeat for multiple values)
+
+ .. versionadded:: 2
+
+.. option:: --architecture <architecture>
+
+ Operating system architecture
+
+ .. versionadded:: 2
+
+.. option:: --instance-id <instance-id>
+
+ ID of server instance used to create this image
+
+ .. versionadded:: 2
+
+.. option:: --kernel-id <kernel-id>
+
+ ID of kernel image used to boot this disk image
+
+ .. versionadded:: 2
+
+.. option:: --os-distro <os-distro>
+
+ Operating system distribution name
+
+ .. versionadded:: 2
+
+.. option:: --os-version <os-version>
+
+ Operating system distribution version
+
+ .. versionadded:: 2
+
+.. option:: --ramdisk-id <ramdisk-id>
+
+ ID of ramdisk image used to boot this disk image
+
+ .. versionadded:: 2
+
+.. option:: --activate
+
+ Activate the image.
+
+ .. versionadded:: 2
+
+.. option:: --deactivate
+
+ Deactivate the image.
+
+ .. versionadded:: 2
+
+.. option:: --project <project>
+
+ Set an alternate project on this image (name or ID).
+ Previously known as `--owner`.
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ .. versionadded:: 2
+
+.. option:: --accept
+
+ Accept the image membership.
+
+ If `--project` is passed, this will update the membership status for the
+ given project, otherwise `--project` will default to the project the user
+ is authenticated to.
+
+ .. versionadded:: 2
+
+.. option:: --reject
+
+ Reject the image membership.
+
+ If `--project` is passed, this will update the membership status for the
+ given project, otherwise `--project` will default to the project the user
+ is authenticated to.
+
+ .. versionadded:: 2
+
+.. option:: --pending
+
+ Reset the image membership to 'pending'.
+
+ If `--project` is passed, this will update the membership status for the
+ given project, otherwise `--project` will default to the project the user
+ is authenticated to.
+
+ .. versionadded:: 2
+
+.. _image_set-image:
+.. describe:: <image>
+
+ Image to modify (name or ID)
+
+image show
+----------
+
+Display image details
+
+.. program:: image show
+.. code:: bash
+
+ openstack image show
+ <image>
+
+.. _image_show-image:
+.. describe:: <image>
+
+ Image to display (name or ID)
+
+image unset
+-----------
+
+*Only supported for Image v2*
+
+Unset image tags or properties
+
+.. program:: image unset
+.. code:: bash
+
+ openstack image set
+ [--tag <tag>]
+ [--property <property>]
+ <image>
+
+.. option:: --tag <tag>
+
+ Unset a tag on this image (repeat option to unset multiple tags)
+
+.. option:: --property <property>
+
+ Unset a property on this image (repeat option to unset multiple properties)
+
+.. _image_unset-image:
+.. describe:: <image>
+
+ Image to modify (name or ID)
diff --git a/doc/source/cli/command-objects/ip-availability.rst b/doc/source/cli/command-objects/ip-availability.rst
new file mode 100644
index 00000000..dd39e649
--- /dev/null
+++ b/doc/source/cli/command-objects/ip-availability.rst
@@ -0,0 +1,60 @@
+===============
+ip availability
+===============
+
+Network v2
+
+ip availability list
+--------------------
+
+List IP availability for network
+
+This command retrieves information about IP availability.
+Useful for admins who need a quick way to check the
+IP availability for all associated networks.
+List specifically returns total IP capacity and the
+number of allocated IP addresses from that pool.
+
+.. program:: ip availability list
+.. code:: bash
+
+ openstack ip availability list
+ [--ip-version {4,6}]
+ [--project <project>]
+
+.. option:: --ip-version {4,6}
+
+ List IP availability of given IP version networks
+ (default is 4)
+
+.. option:: --project <project>
+
+ List IP availability of given project
+ (name or ID)
+
+ip availability show
+--------------------
+
+Show network IP availability details
+
+This command retrieves information about IP availability.
+Useful for admins who need a quick way to
+check the IP availability and details for a
+specific network.
+
+This command will return information about
+IP availability for the network as a whole, and
+return availability information for each individual
+subnet within the network as well.
+
+
+.. program:: ip availability show
+.. code:: bash
+
+ openstack ip availability show
+ <network>
+
+.. _ip_availability_show-network:
+.. describe:: <network>
+
+ Show IP availability for a specific network (name or ID)
diff --git a/doc/source/cli/command-objects/ip-fixed.rst b/doc/source/cli/command-objects/ip-fixed.rst
new file mode 100644
index 00000000..f5b11dc6
--- /dev/null
+++ b/doc/source/cli/command-objects/ip-fixed.rst
@@ -0,0 +1,47 @@
+========
+ip fixed
+========
+
+Compute v2
+
+ip fixed add
+------------
+
+Add fixed IP address to server
+(Deprecated, please use ``server add fixed ip`` instead)
+
+.. program:: ip fixed add
+.. code:: bash
+
+ openstack ip fixed add
+ <network>
+ <server>
+
+.. describe:: <network>
+
+ Network to fetch an IP address from (name or ID)
+
+.. describe:: <server>
+
+ Server to receive the IP address (name or ID)
+
+ip fixed remove
+---------------
+
+Remove fixed IP address from server
+(Deprecated, please use ``server remove fixed ip`` instead)
+
+.. program:: ip fixed remove
+.. code:: bash
+
+ openstack ip fixed remove
+ <ip-address>
+ <server>
+
+.. describe:: <ip-address>
+
+ IP address to remove from server (name only)
+
+.. describe:: <server>
+
+ Server to remove the IP address from (name or ID)
diff --git a/doc/source/cli/command-objects/ip-floating-pool.rst b/doc/source/cli/command-objects/ip-floating-pool.rst
new file mode 100644
index 00000000..6d00355a
--- /dev/null
+++ b/doc/source/cli/command-objects/ip-floating-pool.rst
@@ -0,0 +1,16 @@
+================
+ip floating pool
+================
+
+Compute v2
+
+ip floating pool list
+---------------------
+
+List pools of floating IP addresses
+(Deprecated, please use ``floating ip pool list`` instead)
+
+.. program:: ip floating pool list
+.. code:: bash
+
+ openstack ip floating pool list
diff --git a/doc/source/cli/command-objects/ip-floating.rst b/doc/source/cli/command-objects/ip-floating.rst
new file mode 100644
index 00000000..4e5f7b00
--- /dev/null
+++ b/doc/source/cli/command-objects/ip-floating.rst
@@ -0,0 +1,129 @@
+===========
+ip floating
+===========
+
+Compute v2, Network v2
+
+ip floating add
+---------------
+
+Add floating IP address to server
+(Deprecated, please use ``server add floating ip`` instead)
+
+.. program:: ip floating add
+.. code:: bash
+
+ openstack ip floating add
+ <ip-address>
+ <server>
+
+.. describe:: <ip-address>
+
+ IP address to add to server (name only)
+
+.. describe:: <server>
+
+ Server to receive the IP address (name or ID)
+
+ip floating create
+------------------
+
+Create new floating IP address
+(Deprecated, please use ``floating ip create`` instead)
+
+.. program:: ip floating create
+.. code:: bash
+
+ openstack ip floating create
+ [--subnet <subnet>]
+ [--port <port>]
+ [--floating-ip-address <floating-ip-address>]
+ [--fixed-ip-address <fixed-ip-address>]
+ <network>
+
+.. option:: --subnet <subnet>
+
+ Subnet on which you want to create the floating IP (name or ID)
+ (Network v2 only)
+
+.. option:: --port <port>
+
+ Port to be associated with the floating IP (name or ID)
+ (Network v2 only)
+
+.. option:: --floating-ip-address <floating-ip-address>
+
+ Floating IP address
+ (Network v2 only)
+
+.. option:: --fixed-ip-address <fixed-ip-address>
+
+ Fixed IP address mapped to the floating IP
+ (Network v2 only)
+
+.. describe:: <network>
+
+ Network to allocate floating IP from (name or ID)
+
+ip floating delete
+------------------
+
+Delete floating IP(s)
+(Deprecated, please use ``floating ip delete`` instead)
+
+.. program:: ip floating delete
+.. code:: bash
+
+ openstack ip floating delete
+ <floating-ip> [<floating-ip> ...]
+
+.. describe:: <floating-ip>
+
+ Floating IP(s) to delete (IP address or ID)
+
+ip floating list
+----------------
+
+List floating IP addresses
+(Deprecated, please use ``floating ip list`` instead)
+
+.. program:: ip floating list
+.. code:: bash
+
+ openstack ip floating list
+
+ip floating remove
+------------------
+
+Remove floating IP address from server
+(Deprecated, please use ``server remove floating ip`` instead)
+
+.. program:: ip floating remove
+.. code:: bash
+
+ openstack ip floating remove
+ <ip-address>
+ <server>
+
+.. describe:: <ip-address>
+
+ IP address to remove from server (name only)
+
+.. describe:: <server>
+
+ Server to remove the IP address from (name or ID)
+
+ip floating show
+----------------
+
+Display floating IP details
+(Deprecated, please use ``floating ip show`` instead)
+
+.. program:: ip floating show
+.. code:: bash
+
+ openstack ip floating show <floating-ip>
+
+.. describe:: <floating-ip>
+
+ Floating IP to display (IP address or ID)
diff --git a/doc/source/cli/command-objects/keypair.rst b/doc/source/cli/command-objects/keypair.rst
new file mode 100644
index 00000000..a539f0a2
--- /dev/null
+++ b/doc/source/cli/command-objects/keypair.rst
@@ -0,0 +1,80 @@
+=======
+keypair
+=======
+
+The badly named keypair is really the public key of an OpenSSH key pair to be
+used for access to created servers. You can also create a private key for
+access to a created server by not passing any argument to the keypair create
+command.
+
+Compute v2
+
+keypair create
+--------------
+
+Create new public or private key for server ssh access
+
+.. program:: keypair create
+.. code:: bash
+
+ openstack keypair create
+ [--public-key <file> | --private-key <file>]
+ <name>
+
+.. option:: --public-key <file>
+
+ Filename for public key to add. If not used, creates a private key.
+
+.. option:: --private-key <file>
+
+ Filename for private key to save. If not used, print private key in
+ console.
+
+.. describe:: <name>
+
+ New public or private key name
+
+keypair delete
+--------------
+
+Delete public or private key(s)
+
+.. program:: keypair delete
+.. code:: bash
+
+ openstack keypair delete
+ <key> [<key> ...]
+
+.. describe:: <key>
+
+ Name of key(s) to delete (name only)
+
+keypair list
+------------
+
+List key fingerprints
+
+.. program:: keypair list
+.. code:: bash
+
+ openstack keypair list
+
+keypair show
+------------
+
+Display key details
+
+.. program:: keypair show
+.. code:: bash
+
+ openstack keypair show
+ [--public-key]
+ <key>
+
+.. option:: --public-key
+
+ Show only bare public key paired with the generated key
+
+.. describe:: <key>
+
+ Public or private key to display (name only)
diff --git a/doc/source/cli/command-objects/limits.rst b/doc/source/cli/command-objects/limits.rst
new file mode 100644
index 00000000..92614209
--- /dev/null
+++ b/doc/source/cli/command-objects/limits.rst
@@ -0,0 +1,41 @@
+======
+limits
+======
+
+The Compute and Block Storage APIs have resource usage limits.
+
+Compute v2, Block Storage v1
+
+limits show
+-----------
+
+Show compute and block storage limits
+
+.. program:: limits show
+.. code:: bash
+
+ openstack limits show
+ --absolute | --rate
+ [--reserved]
+ [--project <project>]
+ [--domain <domain>]
+
+.. option:: --absolute
+
+ Show absolute limits
+
+.. option:: --rate
+
+ Show rate limits
+
+.. option:: --reserved
+
+ Include reservations count [only valid with :option:`--absolute`]
+
+.. option:: --project <project>
+
+ Show limits for a specific project (name or ID) [only valid with :option:`--absolute`]
+
+.. option:: --domain <domain>
+
+ Domain the project belongs to (name or ID) [only valid with :option:`--absolute`]
diff --git a/doc/source/cli/command-objects/mapping.rst b/doc/source/cli/command-objects/mapping.rst
new file mode 100644
index 00000000..1f657ed2
--- /dev/null
+++ b/doc/source/cli/command-objects/mapping.rst
@@ -0,0 +1,91 @@
+=======
+mapping
+=======
+
+Identity v3
+
+`Requires: OS-FEDERATION extension`
+
+mapping create
+--------------
+
+Create new mapping
+
+.. program:: mapping create
+.. code:: bash
+
+ openstack mapping create
+ --rules <filename>
+ <name>
+
+.. option:: --rules <filename>
+
+ Filename that contains a set of mapping rules (required)
+
+.. _mapping_create-mapping:
+.. describe:: <name>
+
+ New mapping name (must be unique)
+
+mapping delete
+--------------
+
+Delete mapping(s)
+
+.. program:: mapping delete
+.. code:: bash
+
+ openstack mapping delete
+ <mapping> [<mapping> ...]
+
+.. _mapping_delete-mapping:
+.. describe:: <mapping>
+
+ Mapping(s) to delete
+
+mapping list
+------------
+
+List mappings
+
+.. program:: mapping list
+.. code:: bash
+
+ openstack mapping list
+
+mapping set
+-----------
+
+Set mapping properties
+
+.. program:: mapping set
+.. code:: bash
+
+ openstack mapping set
+ [--rules <filename>]
+ <mapping>
+
+.. option:: --rules <filename>
+
+ Filename that contains a new set of mapping rules
+
+.. _mapping_set-mapping:
+.. describe:: <mapping>
+
+ Mapping to modify
+
+mapping show
+------------
+
+Display mapping details
+
+.. program:: mapping show
+.. code:: bash
+
+ openstack mapping show
+ <mapping>
+
+.. _mapping_show-mapping:
+.. describe:: <mapping>
+
+ Mapping to display
diff --git a/doc/source/cli/command-objects/module.rst b/doc/source/cli/command-objects/module.rst
new file mode 100644
index 00000000..f4b32e75
--- /dev/null
+++ b/doc/source/cli/command-objects/module.rst
@@ -0,0 +1,22 @@
+======
+module
+======
+
+Internal
+
+Installed Python modules in the OSC process.
+
+module list
+-----------
+
+List module versions
+
+.. program:: module list
+.. code:: bash
+
+ openstack module list
+ [--all]
+
+.. option:: --all
+
+ Show all modules that have version information
diff --git a/doc/source/cli/command-objects/network-agent.rst b/doc/source/cli/command-objects/network-agent.rst
new file mode 100644
index 00000000..f69d0ece
--- /dev/null
+++ b/doc/source/cli/command-objects/network-agent.rst
@@ -0,0 +1,151 @@
+=============
+network agent
+=============
+
+A **network agent** is an agent that handles various tasks used to
+implement virtual networks. These agents include neutron-dhcp-agent,
+neutron-l3-agent, neutron-metering-agent, and neutron-lbaas-agent,
+among others. The agent is available when the alive status of the
+agent is "True".
+
+Network v2
+
+network agent add network
+-------------------------
+
+Add network to an agent
+
+.. program:: network agent add network
+.. code:: bash
+
+ openstack network agent add network
+ [--dhcp]
+ <agent-id>
+ <network>
+
+.. describe:: --dhcp
+
+ Add a network to DHCP agent
+
+.. describe:: <agent-id>
+
+ Agent to which a network is added (ID only)
+
+.. describe:: <network>
+
+ Network to be added to an agent (ID or name)
+
+network agent delete
+--------------------
+
+Delete network agent(s)
+
+.. program:: network agent delete
+.. code:: bash
+
+ openstack network agent delete
+ <network-agent> [<network-agent> ...]
+
+.. _network_agent_delete-network-agent:
+.. describe:: <network-agent>
+
+ Network agent(s) to delete (ID only)
+
+network agent list
+------------------
+
+List network agents
+
+.. program:: network agent list
+.. code:: bash
+
+ openstack network agent list
+ [--agent-type <agent-type>]
+ [--host <host>]
+ [--network <network>]
+
+.. option:: --agent-type <agent-type>
+
+ List only agents with the specified agent type.
+ The supported agent types are: dhcp, open-vswitch,
+ linux-bridge, ofa, l3, loadbalancer, metering,
+ metadata, macvtap, nic.
+
+.. option:: --host <host>
+
+ List only agents running on the specified host
+
+.. option:: --network <network>
+
+ List agents hosting a network (ID or name)
+
+network agent set
+-----------------
+
+Set network agent properties
+
+.. program:: network agent set
+.. code:: bash
+
+ openstack network agent set
+ [--description <description>]
+ [--enable | --disable]
+ <network-agent>
+
+.. option:: --description <description>
+
+ Set network agent description
+
+.. option:: --enable
+
+ Enable network agent
+
+.. option:: --disable
+
+ Disable network agent
+
+.. _network_agent_set-network-agent:
+.. describe:: <network-agent>
+
+ Network agent to modify (ID only)
+
+network agent show
+------------------
+
+Display network agent details
+
+.. program:: network agent show
+.. code:: bash
+
+ openstack network agent show
+ <network-agent>
+
+.. _network_agent_show-network-agent:
+.. describe:: <network-agent>
+
+ Network agent to display (ID only)
+
+network agent remove network
+----------------------------
+
+Remove network from an agent
+
+.. program:: network agent remove network
+.. code:: bash
+
+ openstack network agent remove network
+ [--dhcp]
+ <agent-id>
+ <network>
+
+.. describe:: --dhcp
+
+ Remove network from DHCP agent.
+
+.. describe:: <agent-id>
+
+ Agent to which a network is removed (ID only)
+
+.. describe:: <network>
+
+ Network to be removed from an agent (ID or name)
diff --git a/doc/source/cli/command-objects/network-auto-allocated-topology.rst b/doc/source/cli/command-objects/network-auto-allocated-topology.rst
new file mode 100644
index 00000000..4ed68cda
--- /dev/null
+++ b/doc/source/cli/command-objects/network-auto-allocated-topology.rst
@@ -0,0 +1,69 @@
+===============================
+network auto allocated topology
+===============================
+
+An **auto allocated topology** allows admins to quickly set up external
+connectivity for end-users. Only one auto allocated topology is allowed per
+project. For more information on how to set up the resources required
+for auto allocated topology review the documentation at:
+http://docs.openstack.org/newton/networking-guide/config-auto-allocation.html
+
+Network v2
+
+network auto allocated topology create
+--------------------------------------
+
+Create the auto allocated topology for project
+
+.. program:: network auto allocated topology create
+.. code:: bash
+
+ openstack network auto allocated topology create
+ [--or-show]
+ [--check-resources]
+ [--project <project> [--project-domain <project-domain>]]
+
+.. option:: --or-show
+
+ If topology exists returns the topologies information (Default).
+
+.. option:: --check-resources
+
+ Validate the requirements for auto allocated topology.
+ Does not return a topology.
+
+.. option:: --project <project>
+
+ Return the auto allocated topology for a given project.
+ Default is current project.
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. _network_auto_allocated_topology_create:
+
+
+network auto allocated topology delete
+--------------------------------------
+
+Delete auto allocated topology for project
+
+.. program:: network auto allocated topology delete
+.. code:: bash
+
+ openstack network auto allocated topology delete
+ [--project <project> [--project-domain <project-domain>]]
+
+.. option:: --project <project>
+
+ Delete auto allocated topology for a given project.
+ Default is the current project.
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. _network_auto_allocated_topology_delete:
diff --git a/doc/source/cli/command-objects/network-flavor-profile.rst b/doc/source/cli/command-objects/network-flavor-profile.rst
new file mode 100644
index 00000000..fdb95059
--- /dev/null
+++ b/doc/source/cli/command-objects/network-flavor-profile.rst
@@ -0,0 +1,145 @@
+======================
+network flavor profile
+======================
+
+A **network flavor profile** allows administrators to create, delete, list,
+show and update network service profile, which details a framework to enable
+operators to configure and users to select from different abstract
+representations of a service implementation in the Networking service.
+It decouples the logical configuration from its instantiation enabling
+operators to create user options according to deployment needs.
+
+Network v2
+
+network flavor profile create
+-----------------------------
+
+Create a new network flavor profile
+
+.. program:: network flavor profile create
+.. code:: bash
+
+ openstack network flavor profile create
+ [--project <project> [--project-domain <project-domain>]]
+ [--description <description>]
+ [--enable | --disable]
+ (--driver <driver> | --metainfo <metainfo> | --driver <driver> --metainfo <metainfo>)
+
+.. option:: --project <project>
+
+ Owner's project (name or ID)
+
+ *Network version 2 only*
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID). This can
+ be used in case collisions between project names
+ exist
+
+.. option:: --description <description>
+
+ Description for the flavor profile
+
+ *Network version 2 only*
+
+.. option:: --enable
+
+ Enable the flavor profile (default)
+
+.. option:: --disable
+
+ Disable the flavor profile
+
+.. option:: --driver <driver>
+
+ Python module path to driver
+
+ *Network version 2 only*
+
+.. option:: --metainfo <metainfo>
+
+ Metainfo for the flavor profile
+
+ *Network version 2 only*
+
+
+network flavor profile delete
+-----------------------------
+
+Delete network flavor profile
+
+.. program:: network flavor profile delete
+.. code:: bash
+
+ openstack network flavor profile delete
+ <flavor-profile-id> [<flavor-profile-id> ...]
+
+.. describe:: <flavor-profile-id>
+
+ Flavor profile(s) to delete (ID only)
+
+network flavor profile list
+---------------------------
+
+List network flavor profiles
+
+.. program:: network flavor profile list
+.. code:: bash
+
+ openstack network flavor profile list
+
+network flavor profile set
+--------------------------
+
+Set network flavor profile properties
+
+.. program:: network flavor profile set
+.. code:: bash
+
+ openstack network flavor profile set
+ [--description <description>]
+ [--driver <driver>]
+ [--enable | --disable]
+ [--metainfo <metainfo>]
+ <flavor-profile-id>
+
+
+.. option:: --description <description>
+
+ Description of the flavor profile
+
+.. option:: --driver <driver>
+
+ Python module path to driver
+
+.. option:: --enable (Default)
+
+ Enable the flavor profile
+
+.. option:: --disable
+
+ Disable the flavor profile
+
+.. option:: --metainfo <metainfo>
+
+ Metainfo for the flavor profile
+
+.. describe:: <flavor-profile-id>
+
+ Flavor profile to update (ID only)
+
+network flavor profile show
+---------------------------
+
+Show network flavor profile
+
+.. program:: network flavor profile show
+.. code:: bash
+
+ openstack network flavor profile show
+ <flavor-profile-id>
+
+.. describe:: <flavor-profile-id>
+
+ Flavor profile to display (ID only)
diff --git a/doc/source/cli/command-objects/network-flavor.rst b/doc/source/cli/command-objects/network-flavor.rst
new file mode 100644
index 00000000..2d23bf05
--- /dev/null
+++ b/doc/source/cli/command-objects/network-flavor.rst
@@ -0,0 +1,183 @@
+==============
+network flavor
+==============
+
+A **network flavor** extension allows the user selection of operator-curated
+flavors during resource creations. It allows administrators to create network
+service flavors.
+
+Network v2
+
+network flavor add profile
+--------------------------
+
+Add network flavor to service profile
+
+.. program:: network flavor add profile
+.. code:: bash
+
+ openstack network flavor add profile
+ <flavor>
+ <service-profile-id>
+
+.. describe:: <flavor>
+
+ Flavor to which service profile is added. (Name or ID)
+
+.. describe:: <service-profile-id>
+
+ Service profile to be added to flavor. (ID only)
+
+.. _network_flavor_add_profile:
+
+network flavor create
+---------------------
+
+Create network flavor
+
+.. program:: network flavor create
+.. code:: bash
+
+ openstack network flavor create
+ --service-type <service-type>
+ [--description <description>]
+ [--enable | --disable]
+ [--project <project> [--project-domain <project-domain>]]
+ <name>
+
+.. option:: --service-type <service-type>
+
+ Service type to which the flavor applies to: e.g. VPN.
+ (See openstack :ref:`\<service providers\> <network_service_provider_list>`) (required)
+
+.. option:: --description <description>
+
+ Description for the flavor
+
+.. option:: --enable
+
+ Enable the flavor (default)
+
+.. option:: --disable
+
+ Disable the flavor
+
+.. option:: --project <project>
+
+ Owner's project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID). This can
+ be used in case collisions between project names
+ exist.
+
+.. describe:: <name>
+
+ Name for the flavor
+
+.. _network_flavor_create:
+
+network flavor delete
+---------------------
+
+Delete network flavor(s)
+
+.. program:: network flavor delete
+.. code:: bash
+
+ openstack network flavor delete
+ <flavor> [<flavor> ...]
+
+.. describe:: <flavor>
+
+ Flavor(s) to delete (name or ID)
+
+.. _network_flavor_delete:
+
+network flavor list
+-------------------
+
+List network flavors
+
+.. program:: network flavor list
+.. code:: bash
+
+ openstack network flavor list
+
+.. _network_flavor_list:
+
+network flavor remove profile
+-----------------------------
+
+Remove network flavor from service profile
+
+.. program:: network flavor remove profile
+.. code:: bash
+
+ openstack network flavor remove profile
+ <flavor>
+ <service-profile-id>
+
+.. describe:: <flavor>
+
+ Flavor from which service profile is removed. (Name or ID)
+
+.. describe:: <service-profile-id>
+
+ Service profile to be removed from flavor. (ID only)
+
+.. _network_flavor_remove_profile:
+
+network flavor set
+------------------
+
+Set network flavor properties
+
+.. program:: network flavor set
+.. code:: bash
+
+ openstack network flavor set
+ [--name <name>]
+ [--description <description>]
+ [--enable | --disable]
+ <flavor>
+
+.. option:: --name <name>
+
+ Set flavor name
+
+.. option:: --description <description>
+
+ Set network flavor description
+
+.. option:: --enable
+
+ Enable network flavor
+
+.. option:: --disable
+
+ Disable network flavor
+
+.. describe:: <flavor>
+
+ Flavor to update (name or ID)
+
+.. _network_flavor_set:
+
+network flavor show
+-------------------
+
+Show network flavor
+
+.. program:: network flavor show
+.. code:: bash
+
+ openstack network flavor show
+ <flavor>
+
+.. describe:: <flavor>
+
+ Flavor to display (name or ID)
+
+.. _network_flavor_show:
diff --git a/doc/source/cli/command-objects/network-meter-rule.rst b/doc/source/cli/command-objects/network-meter-rule.rst
new file mode 100644
index 00000000..22d50aa9
--- /dev/null
+++ b/doc/source/cli/command-objects/network-meter-rule.rst
@@ -0,0 +1,101 @@
+==================
+network meter rule
+==================
+
+A **meter rule** sets the rule for
+a meter to measure traffic for a specific IP range.
+The following uses **meter** and requires the L3
+metering extension.
+
+Network v2
+
+network meter rule create
+-------------------------
+
+Create meter rule
+
+.. program:: network meter rule create
+.. code:: bash
+
+ openstack network meter rule create
+ --remote-ip-prefix <remote-ip-prefix>
+ [--ingress | --egress]
+ [--exclude | --include]
+ [--project <project> [--project-domain <project-domain>]]
+ <meter>
+
+.. option:: --project <project>
+
+ Owner's project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name of ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --ingress
+
+ Rule is applied to incoming traffic (default)
+
+.. option:: --egress
+
+ Rule is applied to outgoing traffic
+
+.. option:: --exclude
+
+ Exclude remote_ip_prefix from count of the traffic of IP addresses
+
+.. option:: --include
+
+ Include remote_ip_prefix into count of the traffic of IP addresses
+ (default)
+
+.. option:: --remote-ip-prefix <remote-ip-prefix>
+
+ The remote IP prefix to associate with this metering rule packet
+
+.. _network_meter_rule_create:
+.. describe:: <meter>
+
+ Meter to associate with this meter rule (name or ID)
+
+
+network meter rule delete
+-------------------------
+
+Delete meter rule(s)
+
+.. program:: network meter rule delete
+.. code:: bash
+
+ openstack network meter rule delete <id> [<id> ...]
+
+.. _network_meter_rule_delete:
+.. describe:: <meter-rule-id>
+
+ ID of meter rule(s) to delete
+
+network meter rule list
+-----------------------
+
+List meter rules
+
+.. program:: network meter rule list
+.. code:: bash
+
+ openstack network meter rule list
+
+network meter rule show
+-----------------------
+
+Show meter rule
+
+.. program:: network meter rule show
+.. code:: bash
+
+ openstack network meter rule show <meter-rule-id>
+
+.. _network_meter_show:
+.. describe:: <meter-rule-id>
+
+ Meter rule to display (ID only)
diff --git a/doc/source/cli/command-objects/network-meter.rst b/doc/source/cli/command-objects/network-meter.rst
new file mode 100644
index 00000000..6077ce92
--- /dev/null
+++ b/doc/source/cli/command-objects/network-meter.rst
@@ -0,0 +1,91 @@
+=============
+network meter
+=============
+
+A **network meter** allows operators to measure
+traffic for a specific IP range. The following commands
+are specific to the L3 metering extension.
+
+Network v2
+
+network meter create
+--------------------
+
+Create network meter
+
+.. program:: network meter create
+.. code:: bash
+
+ openstack network meter create
+ [--project <project> [--project-domain <project-domain>]]
+ [--description <description>]
+ [--share | --no-share]
+ <name>
+
+.. option:: --project <project>
+
+ Owner's project (name of ID)
+
+ *Network version 2 only*
+
+.. option:: --description <description>
+
+ Description of meter
+
+ *Network version 2 only*
+
+.. option:: --share
+
+ Share the meter between projects
+
+.. option:: --no-share
+
+ Do not share the meter between projects (Default)
+
+.. _network_meter_create:
+.. describe:: <name>
+
+ New meter name
+
+network meter delete
+--------------------
+
+Delete network meter(s)
+
+.. program:: network meter delete
+.. code:: bash
+
+ openstack network meter delete
+ <meter> [<meter> ...]
+
+.. _network_meter_delete:
+.. describe:: <meter>
+
+ Meter(s) to delete (name or ID)
+
+network meter list
+------------------
+
+List network meters
+
+.. program:: network meter list
+.. code:: bash
+
+ openstack network meter list
+
+
+network meter show
+------------------
+
+Show network meter
+
+.. program:: network meter show
+.. code:: bash
+
+ openstack network meter show
+ <meter>
+
+.. _network_meter_show:
+.. describe:: <meter>
+
+ Meter to display (name or ID)
diff --git a/doc/source/cli/command-objects/network-qos-policy.rst b/doc/source/cli/command-objects/network-qos-policy.rst
new file mode 100644
index 00000000..a75c32fe
--- /dev/null
+++ b/doc/source/cli/command-objects/network-qos-policy.rst
@@ -0,0 +1,145 @@
+==================
+network qos policy
+==================
+
+A **Network QoS policy** groups a number of Network QoS rules, applied to a
+network or a port.
+
+Network v2
+
+network qos policy create
+-------------------------
+
+Create new Network QoS policy
+
+.. program:: network qos policy create
+.. code:: bash
+
+ openstack network qos policy create
+ [--description <description>]
+ [--share | --no-share]
+ [--project <project>]
+ [--project-domain <project-domain>]
+ <name>
+
+.. option:: --description <description>
+
+ Description of the QoS policy
+
+.. option:: --share
+
+ Make the QoS policy accessible by other projects
+
+.. option:: --no-share
+
+ Make the QoS policy not accessible by other projects (default)
+
+.. option:: --project <project>
+
+ Owner's project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. _network_qos_policy_create-name:
+.. describe:: <name>
+
+ New QoS policy specification name
+
+network qos policy delete
+-------------------------
+
+Delete Network QoS policy
+
+.. program:: network qos policy delete
+.. code:: bash
+
+ openstack network qos policy delete
+ <qos-policy> [<qos-policy> ...]
+
+.. _network_qos_policy_delete-qos-policy:
+.. describe:: <qos-policy>
+
+ Network QoS policy(s) to delete (name or ID)
+
+network qos policy list
+-----------------------
+
+List Network QoS policies
+
+.. program:: network qos policy list
+.. code:: bash
+
+ openstack network qos policy list
+ [--project <project> [--project-domain <project-domain>]]
+ [--share | --no-share]
+
+.. option:: --project <project>
+
+ List qos policies according to their project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --share
+
+ List qos policies shared between projects
+
+.. option:: --no-share
+
+ List qos policies not shared between projects
+
+network qos policy set
+----------------------
+
+Set Network QoS policy properties
+
+.. program:: network qos policy set
+.. code:: bash
+
+ openstack network qos policy set
+ [--name <name>]
+ [--description <description>]
+ [--share | --no-share]
+ <qos-policy>
+
+.. option:: --name <name>
+
+ Name of the QoS policy
+
+.. option:: --description <description>
+
+ Description of the QoS policy
+
+.. option:: --share
+
+ Make the QoS policy accessible by other projects
+
+.. option:: --no-share
+
+ Make the QoS policy not accessible by other projects
+
+.. _network_qos_policy_set-qos-policy:
+.. describe:: <qos-policy>
+
+ Network QoS policy to modify (name or ID)
+
+network qos policy show
+-----------------------
+
+Display Network QoS policy details
+
+.. program:: network qos policy show
+.. code:: bash
+
+ openstack network qos policy show
+ <qos-policy>
+
+.. _network_qos_policy_show-qos-policy:
+.. describe:: <qos-policy>
+
+ Network QoS policy to display (name or ID)
diff --git a/doc/source/cli/command-objects/network-qos-rule-type.rst b/doc/source/cli/command-objects/network-qos-rule-type.rst
new file mode 100644
index 00000000..ee53e30b
--- /dev/null
+++ b/doc/source/cli/command-objects/network-qos-rule-type.rst
@@ -0,0 +1,18 @@
+=====================
+network qos rule type
+=====================
+
+A **Network QoS rule type** is a specific Network QoS rule type available to be
+used.
+
+Network v2
+
+network qos rule type list
+--------------------------
+
+List Network QoS rule types
+
+.. program:: network qos rule type list
+.. code:: bash
+
+ openstack network qos rule type list
diff --git a/doc/source/cli/command-objects/network-qos-rule.rst b/doc/source/cli/command-objects/network-qos-rule.rst
new file mode 100644
index 00000000..1baf5dbf
--- /dev/null
+++ b/doc/source/cli/command-objects/network-qos-rule.rst
@@ -0,0 +1,165 @@
+================
+network qos rule
+================
+
+A **Network QoS rule** specifies a rule defined in a Network QoS policy; its
+type is defined by the parameter 'type'. Can be assigned, within a Network QoS
+policy, to a port or a network. Each Network QoS policy can contain several
+rules, each of them
+
+Network v2
+
+network qos rule create
+-----------------------
+
+Create new Network QoS rule
+
+.. program:: network qos rule create
+.. code:: bash
+
+ openstack network qos rule create
+ --type <type>
+ [--max-kbps <max-kbps>]
+ [--max-burst-kbits <max-burst-kbits>]
+ [--dscp-marks <dscp-marks>]
+ [--min-kbps <min-kbps>]
+ [--ingress | --egress]
+ <qos-policy>
+
+.. option:: --type <type>
+
+ QoS rule type (minimum-bandwidth, dscp-marking, bandwidth-limit)
+
+.. option:: --max-kbps <min-kbps>
+
+ Maximum bandwidth in kbps
+
+.. option:: --max-burst-kbits <max-burst-kbits>
+
+ Maximum burst in kilobits, 0 means automatic
+
+.. option:: --dscp-mark <dscp-mark>
+
+ DSCP mark: value can be 0, even numbers from 8-56, excluding 42, 44, 50,
+ 52, and 54
+
+.. option:: --min-kbps <min-kbps>
+
+ Minimum guaranteed bandwidth in kbps
+
+.. option:: --ingress
+
+ Ingress traffic direction from the project point of view
+
+.. option:: --egress
+
+ Egress traffic direction from the project point of view
+
+.. describe:: <qos-policy>
+
+ QoS policy that contains the rule (name or ID)
+
+network qos rule delete
+-----------------------
+
+Delete Network QoS rule
+
+.. program:: network qos rule delete
+.. code:: bash
+
+ openstack network qos rule delete
+ <qos-policy>
+ <rule-id>
+
+.. describe:: <qos-policy>
+
+ QoS policy that contains the rule (name or ID)
+
+.. describe:: <rule-id>
+
+ Network QoS rule to delete (ID)
+
+network qos rule list
+---------------------
+
+List Network QoS rules
+
+.. program:: network qos rule list
+.. code:: bash
+
+ openstack network qos rule list
+ <qos-policy>
+
+.. describe:: <qos-policy>
+
+ QoS policy that contains the rule (name or ID)
+
+network qos rule set
+--------------------
+
+Set Network QoS rule properties
+
+.. program:: network qos rule set
+.. code:: bash
+
+ openstack network qos rule set
+ [--max-kbps <max-kbps>]
+ [--max-burst-kbits <max-burst-kbits>]
+ [--dscp-marks <dscp-marks>]
+ [--min-kbps <min-kbps>]
+ [--ingress | --egress]
+ <qos-policy>
+ <rule-id>
+
+.. option:: --max-kbps <min-kbps>
+
+ Maximum bandwidth in kbps
+
+.. option:: --max-burst-kbits <max-burst-kbits>
+
+ Maximum burst in kilobits, 0 means automatic
+
+.. option:: --dscp-mark <dscp-mark>
+
+ DSCP mark: value can be 0, even numbers from 8-56, excluding 42, 44, 50,
+ 52, and 54
+
+.. option:: --min-kbps <min-kbps>
+
+ Minimum guaranteed bandwidth in kbps
+
+.. option:: --ingress
+
+ Ingress traffic direction from the project point of view
+
+.. option:: --egress
+
+ Egress traffic direction from the project point of view
+
+.. describe:: <qos-policy>
+
+ QoS policy that contains the rule (name or ID)
+
+.. describe:: <rule-id>
+
+ Network QoS rule to delete (ID)
+
+network qos rule show
+---------------------
+
+Display Network QoS rule details
+
+.. program:: network qos rule show
+.. code:: bash
+
+ openstack network qos rule show
+ <qos-policy>
+ <rule-id>
+
+.. describe:: <qos-policy>
+
+ QoS policy that contains the rule (name or ID)
+
+.. describe:: <rule-id>
+
+ Network QoS rule to delete (ID)
diff --git a/doc/source/cli/command-objects/network-rbac.rst b/doc/source/cli/command-objects/network-rbac.rst
new file mode 100644
index 00000000..c49f29bb
--- /dev/null
+++ b/doc/source/cli/command-objects/network-rbac.rst
@@ -0,0 +1,138 @@
+============
+network rbac
+============
+
+A **network rbac** is a Role-Based Access Control (RBAC) policy for
+network resources. It enables both operators and users to grant access
+to network resources for specific projects.
+
+Network v2
+
+network rbac create
+-------------------
+
+Create network RBAC policy
+
+.. program:: network rbac create
+.. code:: bash
+
+ openstack network rbac create
+ --type <type>
+ --action <action>
+ --target-project <target-project> [--target-project-domain <target-project-domain>]
+ [--project <project> [--project-domain <project-domain>]]
+ <rbac-policy>
+
+.. option:: --type <type>
+
+ Type of the object that RBAC policy affects ("qos_policy" or "network") (required)
+
+.. option:: --action <action>
+
+ Action for the RBAC policy ("access_as_external" or "access_as_shared") (required)
+
+.. option:: --target-project <target-project>
+
+ The project to which the RBAC policy will be enforced (name or ID) (required)
+
+.. option:: --target-project-domain <target-project-domain>
+
+ Domain the target project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --project <project>
+
+ The owner project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. _network_rbac_create-rbac-policy:
+.. describe:: <rbac-object>
+
+ The object to which this RBAC policy affects (name or ID)
+
+network rbac delete
+-------------------
+
+Delete network RBAC policy(s)
+
+.. program:: network rbac delete
+.. code:: bash
+
+ openstack network rbac delete
+ <rbac-policy> [<rbac-policy> ...]
+
+.. _network_rbac_delete-rbac-policy:
+.. describe:: <rbac-policy>
+
+ RBAC policy(s) to delete (ID only)
+
+network rbac list
+-----------------
+
+List network RBAC policies
+
+.. program:: network rbac list
+.. code:: bash
+
+ openstack network rbac list
+ [--type <type>]
+ [--action <action>]
+ [--long]
+
+.. option:: --type <type>
+
+ List network RBAC policies according to given object type ("qos_policy" or "network")
+
+.. option:: --action <action>
+
+ List network RBAC policies according to given action ("access_as_external" or "access_as_shared")
+
+.. option:: --long
+
+ List additional fields in output
+
+network rbac set
+----------------
+
+Set network RBAC policy properties
+
+.. program:: network rbac set
+.. code:: bash
+
+ openstack network rbac set
+ [--target-project <target-project> [--target-project-domain <target-project-domain>]]
+ <rbac-policy>
+
+.. option:: --target-project <target-project>
+
+ The project to which the RBAC policy will be enforced (name or ID)
+
+.. option:: --target-project-domain <target-project-domain>
+
+ Domain the target project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. _network_rbac_set-rbac-policy:
+.. describe:: <rbac-policy>
+
+ RBAC policy to be modified (ID only)
+
+network rbac show
+-----------------
+
+Display network RBAC policy details
+
+.. program:: network rbac show
+.. code:: bash
+
+ openstack network rbac show
+ <rbac-policy>
+
+.. _network_rbac_show-rbac-policy:
+.. describe:: <rbac-policy>
+
+ RBAC policy (ID only)
diff --git a/doc/source/cli/command-objects/network-segment.rst b/doc/source/cli/command-objects/network-segment.rst
new file mode 100644
index 00000000..d6a66aa0
--- /dev/null
+++ b/doc/source/cli/command-objects/network-segment.rst
@@ -0,0 +1,133 @@
+===============
+network segment
+===============
+
+A **network segment** is an isolated Layer 2 segment within a network.
+A network may contain multiple network segments. Depending on the
+network configuration, Layer 2 connectivity between network segments
+within a network may not be guaranteed.
+
+Network v2
+
+network segment create
+----------------------
+
+Create new network segment
+
+.. program:: network segment create
+.. code:: bash
+
+ openstack network segment create
+ [--description <description>]
+ [--physical-network <physical-network>]
+ [--segment <segment>]
+ --network <network>
+ --network-type <network-type>
+ <name>
+
+.. option:: --description <description>
+
+ Network segment description
+
+.. option:: --physical-network <physical-network>
+
+ Physical network name of this network segment
+
+.. option:: --segment <segment>
+
+ Segment identifier for this network segment which is
+ based on the network type, VLAN ID for vlan network
+ type and tunnel ID for geneve, gre and vxlan network
+ types
+
+.. option:: --network <network>
+
+ Network this network segment belongs to (name or ID)
+
+.. option:: --network-type <network-type>
+
+ Network type of this network segment
+ (flat, geneve, gre, local, vlan or vxlan)
+
+.. _network_segment_create-name:
+.. describe:: <name>
+
+ New network segment name
+
+network segment delete
+----------------------
+
+Delete network segment(s)
+
+.. program:: network segment delete
+.. code:: bash
+
+ openstack network segment delete
+ <network-segment> [<network-segment> ...]
+
+.. _network_segment_delete-segment:
+.. describe:: <network-segment>
+
+ Network segment(s) to delete (name or ID)
+
+network segment list
+--------------------
+
+List network segments
+
+.. program:: network segment list
+.. code:: bash
+
+ openstack network segment list
+ [--long]
+ [--network <network>]
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --network <network>
+
+ List network segments that belong to this network (name or ID)
+
+network segment set
+-------------------
+
+Set network segment properties
+
+.. program:: network segment set
+.. code:: bash
+
+ openstack network segment set
+ [--description <description>]
+ [--name <name>]
+ <network-segment>
+
+.. option:: --description <description>
+
+ Set network segment description
+
+.. option:: --name <name>
+
+ Set network segment name
+
+.. _network_segment_set-segment:
+.. describe:: <network-segment>
+
+ Network segment to modify (name or ID)
+
+network segment show
+--------------------
+
+Display network segment details
+
+.. program:: network segment show
+.. code:: bash
+
+ openstack network segment show
+ <network-segment>
+
+.. _network_segment_show-segment:
+.. describe:: <network-segment>
+
+ Network segment to display (name or ID)
diff --git a/doc/source/cli/command-objects/network-service-provider.rst b/doc/source/cli/command-objects/network-service-provider.rst
new file mode 100644
index 00000000..f46073f6
--- /dev/null
+++ b/doc/source/cli/command-objects/network-service-provider.rst
@@ -0,0 +1,20 @@
+========================
+network service provider
+========================
+
+A **network service provider** is a particular driver that implements a
+networking service
+
+Network v2
+
+.. _network_service_provider_list:
+
+network service provider list
+-----------------------------
+
+List service providers
+
+.. program:: network service provider list
+.. code:: bash
+
+ openstack network service provider list
diff --git a/doc/source/cli/command-objects/network.rst b/doc/source/cli/command-objects/network.rst
new file mode 100644
index 00000000..ed9fd13d
--- /dev/null
+++ b/doc/source/cli/command-objects/network.rst
@@ -0,0 +1,414 @@
+=======
+network
+=======
+
+A **network** is an isolated Layer 2 networking segment. There are two types
+of networks, project and provider networks. Project networks are fully isolated
+and are not shared with other projects. Provider networks map to existing
+physical networks in the data center and provide external network access for
+servers and other resources. Only an OpenStack administrator can create
+provider networks. Networks can be connected via routers.
+
+Compute v2, Network v2
+
+network create
+--------------
+
+Create new network
+
+.. program:: network create
+.. code:: bash
+
+ openstack network create
+ [--project <project> [--project-domain <project-domain>]]
+ [--enable | --disable]
+ [--share | --no-share]
+ [--description <description>]
+ [--availability-zone-hint <availability-zone>]
+ [--enable-port-security | --disable-port-security]
+ [--external [--default | --no-default] | --internal]
+ [--provider-network-type <provider-network-type>]
+ [--provider-physical-network <provider-physical-network>]
+ [--provider-segment <provider-segment>]
+ [--qos-policy <qos-policy>]
+ [--transparent-vlan | --no-transparent-vlan]
+ <name>
+
+.. option:: --project <project>
+
+ Owner's project (name or ID)
+
+ *Network version 2 only*
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ *Network version 2 only*
+
+.. option:: --enable
+
+ Enable network (default)
+
+ *Network version 2 only*
+
+.. option:: --disable
+
+ Disable network
+
+ *Network version 2 only*
+
+.. option:: --share
+
+ Share the network between projects
+
+.. option:: --no-share
+
+ Do not share the network between projects
+
+.. option:: --description <description>
+
+ Set network description
+
+ *Network version 2 only*
+
+.. option:: --availability-zone-hint <availability-zone>
+
+ Availability Zone in which to create this network
+ (Network Availability Zone extension required,
+ repeat option to set multiple availability zones)
+
+ *Network version 2 only*
+
+.. option:: --enable-port-security
+
+ Enable port security by default for ports created on
+ this network (default)
+
+ *Network version 2 only*
+
+.. option:: --disable-port-security
+
+ Disable port security by default for ports created on
+ this network
+
+ *Network version 2 only*
+
+.. option:: --subnet <subnet>
+
+ IPv4 subnet for fixed IPs (in CIDR notation)
+
+ *Compute version 2 only*
+
+.. option:: --external
+
+ Set this network as an external network
+ (external-net extension required)
+
+ *Network version 2 only*
+
+.. option:: --internal
+
+ Set this network as an internal network (default)
+
+ *Network version 2 only*
+
+.. option:: --default
+
+ Specify if this network should be used as
+ the default external network
+
+ *Network version 2 only*
+
+.. option:: --no-default
+
+ Do not use the network as the default external network
+ (default)
+
+ *Network version 2 only*
+
+.. option:: --provider-network-type <provider-network-type>
+
+ The physical mechanism by which the virtual network is implemented.
+ The supported options are: flat, geneve, gre, local, vlan, vxlan.
+
+ *Network version 2 only*
+
+.. option:: --provider-physical-network <provider-physical-network>
+
+ Name of the physical network over which the virtual network is implemented
+
+ *Network version 2 only*
+
+.. option:: --provider-segment <provider-segment>
+
+ VLAN ID for VLAN networks or Tunnel ID for GENEVE/GRE/VXLAN networks
+
+ *Network version 2 only*
+
+.. option:: --qos-policy <qos-policy>
+
+ QoS policy to attach to this network (name or ID)
+
+ *Network version 2 only*
+
+.. option:: --transparent-vlan
+
+ Make the network VLAN transparent
+
+ *Network version 2 only*
+
+.. option:: --no-transparent-vlan
+
+ Do not make the network VLAN transparent
+
+ *Network version 2 only*
+
+.. _network_create-name:
+.. describe:: <name>
+
+ New network name
+
+network delete
+--------------
+
+Delete network(s)
+
+.. program:: network delete
+.. code:: bash
+
+ openstack network delete
+ <network> [<network> ...]
+
+.. _network_delete-network:
+.. describe:: <network>
+
+ Network(s) to delete (name or ID)
+
+network list
+------------
+
+List networks
+
+.. program:: network list
+.. code:: bash
+
+ openstack network list
+ [--external | --internal]
+ [--long]
+ [--name <name>]
+ [--enable | --disable]
+ [--project <project> [--project-domain <project-domain>]]
+ [--share | --no-share]
+ [--status <status>]
+ [--provider-network-type <provider-network-type>]
+ [--provider-physical-network <provider-physical-network>]
+ [--provider-segment <provider-segment>]
+ [--agent <agent-id>]
+
+.. option:: --external
+
+ List external networks
+
+ *Network version 2 only*
+
+.. option:: --internal
+
+ List internal networks
+
+ *Network version 2 only*
+
+.. option:: --long
+
+ List additional fields in output
+
+ *Network version 2 only*
+
+.. option:: --name <name>
+
+ List networks according to their name
+
+ *Network version 2 only*
+
+.. option:: --enable
+
+ List enabled networks
+
+ *Network version 2 only*
+
+.. option:: --disable
+
+ List disabled networks
+
+ *Network version 2 only*
+
+.. option:: --project <project>
+
+ List networks according to their project (name or ID)
+
+ *Network version 2 only*
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ *Network version 2 only*
+
+.. option:: --share
+
+ List networks shared between projects
+
+ *Network version 2 only*
+
+.. option:: --no-share
+
+ List networks not shared between projects
+
+ *Network version 2 only*
+
+.. option:: --status <status>
+
+ List networks according to their status
+ ('ACTIVE', 'BUILD', 'DOWN', 'ERROR')
+
+.. option:: --provider-network-type <provider-network-type>
+
+ List networks according to their physical mechanisms.
+ The supported options are: flat, geneve, gre, local, vlan, vxlan.
+
+ *Network version 2 only*
+
+.. option:: --provider-physical-network <provider-physical-network>
+
+ List networks according to name of the physical network
+
+ *Network version 2 only*
+
+.. option:: --provider-segment <provider-segment>
+
+ List networks according to VLAN ID for VLAN networks
+ or Tunnel ID for GENEVE/GRE/VXLAN networks
+
+ *Network version 2 only*
+
+.. option:: --agent <agent-id>
+
+ List networks hosted by agent (ID only)
+
+network set
+-----------
+
+Set network properties
+
+*Network version 2 only*
+
+.. program:: network set
+.. code:: bash
+
+ openstack network set
+ [--name <name>]
+ [--enable | --disable]
+ [--share | --no-share]
+ [--description <description>]
+ [--enable-port-security | --disable-port-security]
+ [--external [--default | --no-default] | --internal]
+ [--provider-network-type <provider-network-type>]
+ [--provider-physical-network <provider-physical-network>]
+ [--provider-segment <provider-segment>]
+ [--qos-policy <qos-policy> | --no-qos-policy]
+ <network>
+
+.. option:: --name <name>
+
+ Set network name
+
+.. option:: --enable
+
+ Enable network
+
+.. option:: --disable
+
+ Disable network
+
+.. option:: --share
+
+ Share the network between projects
+
+.. option:: --no-share
+
+ Do not share the network between projects
+
+.. option:: --description <description>
+
+ Set network description
+
+.. option:: --enable-port-security
+
+ Enable port security by default for ports created on
+ this network
+
+.. option:: --disable-port-security
+
+ Disable port security by default for ports created on
+ this network
+
+.. option:: --external
+
+ Set this network as an external network.
+ (external-net extension required)
+
+.. option:: --internal
+
+ Set this network as an internal network
+
+.. option:: --default
+
+ Set the network as the default external network
+
+.. option:: --no-default
+
+ Do not use the network as the default external network.
+
+.. option:: --provider-network-type <provider-network-type>
+
+ The physical mechanism by which the virtual network is implemented.
+ The supported options are: flat, gre, local, vlan, vxlan.
+
+.. option:: --provider-physical-network <provider-physical-network>
+
+ Name of the physical network over which the virtual network is implemented
+
+.. option:: --provider-segment <provider-segment>
+
+ VLAN ID for VLAN networks or Tunnel ID for GRE/VXLAN networks
+
+.. option:: --qos-policy <qos-policy>
+
+ QoS policy to attach to this network (name or ID)
+
+.. option:: --no-qos-policy
+
+ Remove the QoS policy attached to this network
+
+.. _network_set-network:
+.. describe:: <network>
+
+ Network to modify (name or ID)
+
+network show
+------------
+
+Display network details
+
+.. program:: network show
+.. code:: bash
+
+ openstack network show
+ <network>
+
+.. _network_show-network:
+.. describe:: <network>
+
+ Network to display (name or ID)
diff --git a/doc/source/cli/command-objects/object-store-account.rst b/doc/source/cli/command-objects/object-store-account.rst
new file mode 100644
index 00000000..e8f09d45
--- /dev/null
+++ b/doc/source/cli/command-objects/object-store-account.rst
@@ -0,0 +1,45 @@
+====================
+object store account
+====================
+
+Object Storage v1
+
+object store account set
+------------------------
+
+Set account properties
+
+.. program:: object store account set
+.. code:: bash
+
+ openstack object store account set
+ [--property <key=value> [...] ]
+
+.. option:: --property <key=value>
+
+ Set a property on this account (repeat option to set multiple properties)
+
+object store account show
+-------------------------
+
+Display account details
+
+.. program:: object store account show
+.. code:: bash
+
+ openstack object store account show
+
+object store account unset
+--------------------------
+
+Unset account properties
+
+.. program:: object store account unset
+.. code:: bash
+
+ openstack object store account unset
+ [--property <key>]
+
+.. option:: --property <key>
+
+ Property to remove from account (repeat option to remove multiple properties)
diff --git a/doc/source/cli/command-objects/object.rst b/doc/source/cli/command-objects/object.rst
new file mode 100644
index 00000000..6323c4ed
--- /dev/null
+++ b/doc/source/cli/command-objects/object.rst
@@ -0,0 +1,195 @@
+======
+object
+======
+
+Object Storage v1
+
+object create
+-------------
+
+Upload object to container
+
+.. program:: object create
+.. code:: bash
+
+ openstack object create
+ [--name <name>]
+ <container>
+ <filename> [<filename> ...]
+
+.. option:: --name <name>
+
+ Upload a file and rename it. Can only be used when uploading a single object
+
+.. describe:: <container>
+
+ Container for new object
+
+.. describe:: <filename>
+
+ Local filename(s) to upload
+
+object delete
+-------------
+
+Delete object from container
+
+.. program:: object delete
+.. code:: bash
+
+ openstack object delete
+ <container>
+ <object> [<object> ...]
+
+.. describe:: <container>
+
+ Delete object(s) from <container>
+
+.. describe:: <object>
+
+ Object(s) to delete
+
+object list
+-----------
+
+List objects
+
+.. program object list
+.. code:: bash
+
+ openstack object list
+ [--prefix <prefix>]
+ [--delimiter <delimiter>]
+ [--marker <marker>]
+ [--end-marker <end-marker>]
+ [--limit <num-objects>]
+ [--long]
+ [--all]
+ <container>
+
+.. option:: --prefix <prefix>
+
+ Filter list using <prefix>
+
+.. option:: --delimiter <delimiter>
+
+ Roll up items with <delimiter>
+
+.. option:: --marker <marker>
+
+ Anchor for paging
+
+.. option:: --end-marker <end-marker>
+
+ End anchor for paging
+
+.. option:: --limit <num-objects>
+
+ Limit number of objects returned
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --all
+
+ List all objects in <container> (default is 10000)
+
+.. describe:: <container>
+
+ Container to list
+
+object save
+-----------
+
+Save object locally
+
+.. program:: object save
+.. code:: bash
+
+ openstack object save
+ [--file <filename>]
+ <container>
+ <object>
+
+.. option:: --file <filename>
+
+ Destination filename (defaults to object name)
+
+.. describe:: <container>
+
+ Download <object> from <container>
+
+.. describe:: <object>
+
+ Object to save
+
+object set
+----------
+
+Set object properties
+
+.. program:: object set
+.. code:: bash
+
+ openstack object set
+ [--property <key=value> [...] ]
+ <container>
+ <object>
+
+.. option:: --property <key=value>
+
+ Set a property on this object (repeat option to set multiple properties)
+
+.. describe:: <container>
+
+ Modify <object> from <container>
+
+.. describe:: <object>
+
+ Object to modify
+
+object show
+-----------
+
+Display object details
+
+.. program:: object show
+.. code:: bash
+
+ openstack object show
+ <container>
+ <object>
+
+.. describe:: <container>
+
+ Display <object> from <container>
+
+.. describe:: <object>
+
+ Object to display
+
+object unset
+------------
+
+Unset object properties
+
+.. program:: object unset
+.. code:: bash
+
+ openstack object unset
+ [--property <key>]
+ <container>
+ <object>
+
+.. option:: --property <key>
+
+ Property to remove from object (repeat option to remove multiple properties)
+
+.. describe:: <container>
+
+ Modify <object> from <container>
+
+.. describe:: <object>
+
+ Object to modify
diff --git a/doc/source/cli/command-objects/policy.rst b/doc/source/cli/command-objects/policy.rst
new file mode 100644
index 00000000..deddf2c4
--- /dev/null
+++ b/doc/source/cli/command-objects/policy.rst
@@ -0,0 +1,95 @@
+======
+policy
+======
+
+Identity v3
+
+policy create
+-------------
+
+Create new policy
+
+.. program:: policy create
+.. code:: bash
+
+ openstack policy create
+ [--type <type>]
+ <filename>
+
+.. option:: --type <type>
+
+ New MIME type of the policy rules file (defaults to application/json)
+
+.. describe:: <filename>
+
+ New serialized policy rules file
+
+policy delete
+-------------
+
+Delete policy(s)
+
+.. program:: policy delete
+.. code:: bash
+
+ openstack policy delete
+ <policy> [<policy> ...]
+
+.. describe:: <policy>
+
+ Policy(s) to delete
+
+policy list
+-----------
+
+List policies
+
+.. program:: policy list
+.. code:: bash
+
+ openstack policy list
+ [--long]
+
+.. option:: --long
+
+ List additional fields in output
+
+policy set
+----------
+
+Set policy properties
+
+.. program:: policy set
+.. code:: bash
+
+ openstack policy set
+ [--type <type>]
+ [--rules <filename>]
+ <policy>
+
+.. option:: --type <type>
+
+ New MIME type of the policy rules file
+
+.. describe:: --rules <filename>
+
+ New serialized policy rules file
+
+.. describe:: <policy>
+
+ Policy to modify
+
+policy show
+-----------
+
+Display policy details
+
+.. program:: policy show
+.. code:: bash
+
+ openstack policy show
+ <policy>
+
+.. describe:: <policy>
+
+ Policy to display
diff --git a/doc/source/cli/command-objects/port.rst b/doc/source/cli/command-objects/port.rst
new file mode 100644
index 00000000..b3f4c7f9
--- /dev/null
+++ b/doc/source/cli/command-objects/port.rst
@@ -0,0 +1,404 @@
+====
+port
+====
+
+A **port** is a connection point for attaching a single device, such as the
+NIC of a server, to a network. The port also describes the associated network
+configuration, such as the MAC and IP addresses to be used on that port.
+
+Network v2
+
+port create
+-----------
+
+Create new port
+
+.. program:: port create
+.. code:: bash
+
+ openstack port create
+ --network <network>
+ [--description <description>]
+ [--fixed-ip subnet=<subnet>,ip-address=<ip-address>]
+ [--device <device-id>]
+ [--device-owner <device-owner>]
+ [--vnic-type <vnic-type>]
+ [--binding-profile <binding-profile>]
+ [--host <host-id>]
+ [--enable | --disable]
+ [--mac-address <mac-address>]
+ [--security-group <security-group> | --no-security-group]
+ [--dns-name <dns-name>]
+ [--allowed-address ip-address=<ip-address>[,mac-address=<mac-address>]]
+ [--qos-policy <qos-policy>]
+ [--project <project> [--project-domain <project-domain>]]
+ [--enable-port-security | --disable-port-security]
+ <name>
+
+.. option:: --network <network>
+
+ Network this port belongs to (name or ID)
+
+.. option:: --description <description>
+
+ Description of this port
+
+.. option:: --fixed-ip subnet=<subnet>,ip-address=<ip-address>
+
+ Desired IP and/or subnet for this port (name or ID):
+ subnet=<subnet>,ip-address=<ip-address>
+ (repeat option to set multiple fixed IP addresses)
+
+.. option:: --device <device-id>
+
+ Port device ID
+
+.. option:: --device-owner <device-owner>
+
+ Device owner of this port. This is the entity that uses
+ the port (for example, network:dhcp).
+
+.. option:: --vnic-type <vnic-type>
+
+ VNIC type for this port (direct | direct-physical | macvtap | normal | baremetal,
+ default: normal)
+
+.. option:: --binding-profile <binding-profile>
+
+ Custom data to be passed as binding:profile. Data may
+ be passed as <key>=<value> or JSON.
+ (repeat option to set multiple binding:profile data)
+
+.. option:: --host <host-id>
+
+ Allocate port on host ``<host-id>`` (ID only)
+
+.. option:: --enable
+
+ Enable port (default)
+
+.. option:: --disable
+
+ Disable port
+
+.. option:: --mac-address <mac-address>
+
+ MAC address of this port
+
+.. option:: --security-group <security-group>
+
+ Security group to associate with this port (name or ID)
+ (repeat option to set multiple security groups)
+
+.. option:: --no-security-group
+
+ Associate no security groups with this port
+
+.. option:: --dns-name <dns-name>
+
+ Set DNS name to this port
+ (requires DNS integration extension)
+
+.. option:: --allowed-address ip-address=<ip-address>[,mac-address=<mac-address>]
+
+ Add allowed-address pair associated with this port:
+ ip-address=<ip-address>[,mac-address=<mac-address>]
+ (repeat option to set multiple allowed-address pairs)
+
+.. option:: --qos-policy <qos-policy>
+
+ Attach QoS policy to this port (name or ID)
+
+.. option:: --project <project>
+
+ Owner's project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --enable-port-security
+
+ Enable port security for this port (Default)
+
+.. option:: --disable-port-security
+
+ Disable port security for this port
+
+.. _port_create-name:
+.. describe:: <name>
+
+ Name of this port
+
+port delete
+-----------
+
+Delete port(s)
+
+.. program:: port delete
+.. code:: bash
+
+ openstack port delete
+ <port> [<port> ...]
+
+.. _port_delete-port:
+.. describe:: <port>
+
+ Port(s) to delete (name or ID)
+
+port list
+---------
+
+List ports
+
+.. program:: port list
+.. code:: bash
+
+ openstack port list
+ [--device-owner <device-owner>]
+ [--router <router> | --server <server>]
+ [--network <network>]
+ [--mac-address <mac-address>]
+ [--fixed-ip subnet=<subnet>,ip-address=<ip-address>]
+ [--long]
+ [--project <project> [--project-domain <project-domain>]]
+
+.. option:: --device-owner <device-owner>
+
+ List only ports with the specified device owner. This is
+ the entity that uses the port (for example, network:dhcp).
+
+.. option:: --router <router>
+
+ List only ports attached to this router (name or ID)
+
+.. option:: --server <server>
+
+ List only ports attached to this server (name or ID)
+
+.. option:: --network <network>
+
+ List only ports attached to this network (name or ID)
+
+.. option:: --mac-address <mac-address>
+
+ List only ports with this MAC address
+
+.. option:: --fixed-ip subnet=<subnet>,ip-address=<ip-address>
+
+ Desired IP and/or subnet for filtering ports (name or ID):
+ subnet=<subnet>,ip-address=<ip-address>
+ (repeat option to set multiple fixed IP addresses)
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --project <project>
+
+ List ports according to their project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+port set
+--------
+
+Set port properties
+
+.. program:: port set
+.. code:: bash
+
+ openstack port set
+ [--description <description>]
+ [--fixed-ip subnet=<subnet>,ip-address=<ip-address>]
+ [--no-fixed-ip]
+ [--device <device-id>]
+ [--device-owner <device-owner>]
+ [--vnic-type <vnic-type>]
+ [--binding-profile <binding-profile>]
+ [--no-binding-profile]
+ [--host <host-id>]
+ [--qos-policy <qos-policy>]
+ [--enable | --disable]
+ [--name <name>]
+ [--mac-address <mac-address>]
+ [--security-group <security-group>]
+ [--no-security-group]
+ [--enable-port-security | --disable-port-security]
+ [--dns-name <dns-name>]
+ [--allowed-address ip-address=<ip-address>[,mac-address=<mac-address>]]
+ [--no-allowed-address]
+ <port>
+
+.. option:: --description <description>
+
+ Description of this port
+
+.. option:: --fixed-ip subnet=<subnet>,ip-address=<ip-address>
+
+ Desired IP and/or subnet for this port (name or ID):
+ subnet=<subnet>,ip-address=<ip-address>
+ (repeat option to set multiple fixed IP addresses)
+
+.. option:: --no-fixed-ip
+
+ Clear existing information of fixed IP addresses.
+ Specify both :option:`--fixed-ip` and :option:`--no-fixed-ip`
+ to overwrite the current fixed IP addresses.
+
+.. option:: --device <device-id>
+
+ Port device ID
+
+.. option:: --device-owner <device-owner>
+
+ Device owner of this port. This is the entity that uses
+ the port (for example, network:dhcp).
+
+.. option:: --vnic-type <vnic-type>
+
+ VNIC type for this port (direct | direct-physical | macvtap | normal | baremetal,
+ default: normal)
+
+.. option:: --binding-profile <binding-profile>
+
+ Custom data to be passed as binding:profile. Data may
+ be passed as <key>=<value> or JSON.
+ (repeat option to set multiple binding:profile data)
+
+.. option:: --no-binding-profile
+
+ Clear existing information of binding:profile.
+ Specify both :option:`--binding-profile` and :option:`--no-binding-profile`
+ to overwrite the current binding:profile information.
+
+.. option:: --host <host-id>
+
+ Allocate port on host ``<host-id>`` (ID only)
+
+.. option:: --qos-policy <qos-policy>
+
+ Attach QoS policy to this port (name or ID)
+
+.. option:: --enable
+
+ Enable port
+
+.. option:: --disable
+
+ Disable port
+
+.. option:: --name
+
+ Set port name
+
+.. option:: --mac-address
+
+ Set port's MAC address (admin only)
+
+.. option:: --security-group <security-group>
+
+ Security group to associate with this port (name or ID)
+ (repeat option to set multiple security groups)
+
+.. option:: --no-security-group
+
+ Clear existing security groups associated with this port
+
+.. option:: --enable-port-security
+
+ Enable port security for this port
+
+.. option:: --disable-port-security
+
+ Disable port security for this port
+
+.. option:: --dns-name <dns-name>
+
+ Set DNS name to this port
+ (requires DNS integration extension)
+
+.. option:: --allowed-address ip-address=<ip-address>[,mac-address=<mac-address>]
+
+ Add allowed-address pair associated with this port:
+ ip-address=<ip-address>[,mac-address=<mac-address>]
+ (repeat option to set multiple allowed-address pairs)
+
+.. option:: --no-allowed-address
+
+ Clear existing allowed-address pairs associated
+ with this port.
+ (Specify both --allowed-address and --no-allowed-address
+ to overwrite the current allowed-address pairs)
+
+.. _port_set-port:
+.. describe:: <port>
+
+ Port to modify (name or ID)
+
+port show
+---------
+
+Display port details
+
+.. program:: port show
+.. code:: bash
+
+ openstack port show
+ <port>
+
+.. _port_show-port:
+.. describe:: <port>
+
+ Port to display (name or ID)
+
+port unset
+----------
+
+Unset port properties
+
+.. program:: port unset
+.. code:: bash
+
+ openstack port unset
+ [--fixed-ip subnet=<subnet>,ip-address=<ip-address> [...]]
+ [--binding-profile <binding-profile-key> [...]]
+ [--security-group <security-group> [...]]
+ [--allowed-address ip-address=<ip-address>[,mac-address=<mac-address>] [...]]
+ [--qos-policy]
+ <port>
+
+.. option:: --fixed-ip subnet=<subnet>,ip-address=<ip-address>
+
+ Desired IP and/or subnet which should be removed
+ from this port (name or ID): subnet=<subnet>,ip-address=<ip-address>
+ (repeat option to unset multiple fixed IP addresses)
+
+.. option:: --binding-profile <binding-profile-key>
+
+ Desired key which should be removed from binding-profile
+ (repeat option to unset multiple binding:profile data)
+
+.. option:: --security-group <security-group>
+
+ Security group which should be removed from this port (name or ID)
+ (repeat option to unset multiple security groups)
+
+.. option:: --allowed-address ip-address=<ip-address>[,mac-address=<mac-address>]
+
+ Desired allowed-address pair which should be removed from this port:
+ ip-address=<ip-address>[,mac-address=<mac-address>]
+ (repeat option to unset multiple allowed-address pairs)
+
+.. option:: --qos-policy
+
+ Remove the QoS policy attached to the port
+
+.. _port_unset-port:
+.. describe:: <port>
+
+ Port to modify (name or ID)
diff --git a/doc/source/cli/command-objects/project-purge.rst b/doc/source/cli/command-objects/project-purge.rst
new file mode 100644
index 00000000..0ad0bbf9
--- /dev/null
+++ b/doc/source/cli/command-objects/project-purge.rst
@@ -0,0 +1,42 @@
+=============
+project purge
+=============
+
+Clean resources associated with a specific project.
+
+Block Storage v1, v2; Compute v2; Image v1, v2
+
+project purge
+-------------
+
+Clean resources associated with a project
+
+.. program:: project purge
+.. code:: bash
+
+ openstack project purge
+ [--dry-run]
+ [--keep-project]
+ [--auth-project | --project <project>]
+ [--project-domain <project-domain>]
+
+.. option:: --dry-run
+
+ List a project's resources
+
+.. option:: --keep-project
+
+ Clean project resources, but don't delete the project.
+
+.. option:: --auth-project
+
+ Delete resources of the project used to authenticate
+
+.. option:: --project <project>
+
+ Project to clean (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID). This can be
+ used in case collisions between project names exist.
diff --git a/doc/source/cli/command-objects/project.rst b/doc/source/cli/command-objects/project.rst
new file mode 100644
index 00000000..cb0941ca
--- /dev/null
+++ b/doc/source/cli/command-objects/project.rst
@@ -0,0 +1,235 @@
+=======
+project
+=======
+
+Identity v2, v3
+
+project create
+--------------
+
+Create new project
+
+.. program:: project create
+.. code:: bash
+
+ openstack project create
+ [--domain <domain>]
+ [--parent <project>]
+ [--description <description>]
+ [--enable | --disable]
+ [--property <key=value>]
+ [--or-show]
+ <name>
+
+.. option:: --domain <domain>
+
+ Domain owning the project (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --parent <project>
+
+ Parent of the project (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --description <description>
+
+ Project description
+
+.. option:: --enable
+
+ Enable project (default)
+
+.. option:: --disable
+
+ Disable project
+
+.. option:: --property <key=value>
+
+ Add a property to :ref:`\<name\> <project_create-name>`
+ (repeat option to set multiple properties)
+
+.. option:: --or-show
+
+ Return existing project
+
+ If the project already exists return the existing project data and do not fail.
+
+.. _project_create-name:
+.. describe:: <name>
+
+ New project name
+
+project delete
+--------------
+
+Delete project(s)
+
+.. program:: project delete
+.. code:: bash
+
+ openstack project delete
+ [--domain <domain>]
+ <project> [<project> ...]
+
+.. option:: --domain <domain>
+
+ Domain owning :ref:`\<project\> <project_delete-project>` (name or ID)
+
+ .. versionadded:: 3
+
+.. _project_delete-project:
+.. describe:: <project>
+
+ Project to delete (name or ID)
+
+project list
+------------
+
+List projects
+
+.. program:: project list
+.. code:: bash
+
+ openstack project list
+ [--domain <domain>]
+ [--user <user>]
+ [--my-projects]
+ [--long]
+ [--sort <key>[:<direction>,<key>:<direction>,..]]
+
+.. option:: --domain <domain>
+
+ Filter projects by :option:`\<domain\> <--domain>` (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --user <user>
+
+ Filter projects by :option:`\<user\> <--user>` (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --my-projects
+
+ List projects for the authenticated user. Supersedes other filters.
+
+ .. versionadded:: 3
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --sort <key>[:<direction>,<key>:<direction>,..]
+
+ Sort output by selected keys and directions (asc or desc) (default: asc),
+ multiple keys and directions can be specified --sort
+ <key>[:<direction>,<key>:<direction>,..]
+
+project set
+-----------
+
+Set project properties
+
+.. program:: project set
+.. code:: bash
+
+ openstack project set
+ [--name <name>]
+ [--domain <domain>]
+ [--description <description>]
+ [--enable | --disable]
+ [--property <key=value>]
+ <project>
+
+.. option:: --name <name>
+
+ Set project name
+
+.. option:: --domain <domain>
+
+ Domain owning :ref:`\<project\> <project_set-project>` (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --description <description>
+
+ Set project description
+
+.. option:: --enable
+
+ Enable project (default)
+
+.. option:: --disable
+
+ Disable project
+
+.. option:: --property <key=value>
+
+ Set a property on :ref:`\<project\> <project_set-project>`
+ (repeat option to set multiple properties)
+
+ *Identity version 2 only*
+
+.. _project_set-project:
+.. describe:: <project>
+
+ Project to modify (name or ID)
+
+project show
+------------
+
+Display project details
+
+.. program:: project show
+.. code:: bash
+
+ openstack project show
+ [--domain <domain>]
+ <project>
+
+.. option:: --domain <domain>
+
+ Domain owning :ref:`\<project\> <project_show-project>` (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --parents
+
+ Show the project\'s parents as a list
+
+ .. versionadded:: 3
+
+.. option:: --children
+
+ Show project\'s subtree (children) as a list
+
+ .. versionadded:: 3
+
+.. _project_show-project:
+.. describe:: <project>
+
+ Project to display (name or ID)
+
+project unset
+-------------
+
+Unset project properties
+
+*Identity version 2 only*
+
+.. program:: project unset
+.. code:: bash
+
+ openstack project unset
+ --property <key> [--property <key> ...]
+ <project>
+
+.. option:: --property <key>
+
+ Property key to remove from project (repeat option to remove multiple properties)
+
+.. describe:: <project>
+
+ Project to modify (name or ID)
diff --git a/doc/source/cli/command-objects/quota.rst b/doc/source/cli/command-objects/quota.rst
new file mode 100644
index 00000000..f39536af
--- /dev/null
+++ b/doc/source/cli/command-objects/quota.rst
@@ -0,0 +1,269 @@
+=====
+quota
+=====
+
+Resource quotas appear in multiple APIs, OpenStackClient presents them as a
+single object with multiple properties.
+
+Block Storage v1, v2, Compute v2, Network v2
+
+quota list
+----------
+
+List quotas for all projects with non-default quota values
+
+.. program:: quota list
+.. code:: bash
+
+ openstack quota list
+ --compute | --network | --volume
+
+.. option:: --network
+
+ List network quotas
+
+.. option:: --compute
+
+ List compute quotas
+
+.. option:: --volume
+
+ List volume quotas
+
+quota set
+---------
+
+Set quotas for project
+
+.. program:: quota set
+.. code:: bash
+
+ openstack quota set
+ # Compute settings
+ [--cores <num-cores>]
+ [--fixed-ips <num-fixed-ips>]
+ [--floating-ips <num-floating-ips>]
+ [--injected-file-size <injected-file-bytes>]
+ [--injected-files <num-injected-files>]
+ [--instances <num-instances>]
+ [--key-pairs <num-key-pairs>]
+ [--properties <num-properties>]
+ [--ram <ram-mb>]
+ [--server-groups <num-server-groups>]
+ [--server-group-members <num-server-group-members>]
+
+ # Block Storage settings
+ [--backups <new-backups>]
+ [--backup-gigabytes <new-backup-gigabytes>]
+ [--gigabytes <new-gigabytes>]
+ [--per-volume-gigabytes <new-per-volume-gigabytes>]
+ [--snapshots <new-snapshots>]
+ [--volumes <new-volumes>]
+ [--volume-type <volume-type>]
+
+ # Network settings
+ [--floating-ips <num-floatingips>]
+ [--secgroup-rules <num-security-group-rules>]
+ [--secgroups <num-security-groups>]
+ [--networks <num-networks>]
+ [--subnets <num-subnets>]
+ [--ports <num-ports>]
+ [--routers <num-routers>]
+ [--rbac-policies <num-rbac-policies>]
+ [--vips <num-vips>]
+ [--subnetpools <num-subnetpools>]
+ [--members <num-members>]
+ [--health-monitors <num-health-monitors>]
+
+ <project>
+
+Set quotas for class
+
+.. code:: bash
+
+ openstack quota set
+ --class
+ # Compute settings
+ [--cores <num-cores>]
+ [--fixed-ips <num-fixed-ips>]
+ [--floating-ips <num-floating-ips>]
+ [--injected-file-size <injected-file-bytes>]
+ [--injected-files <num-injected-files>]
+ [--instances <num-instances>]
+ [--key-pairs <num-key-pairs>]
+ [--properties <num-properties>]
+ [--ram <ram-mb>]
+ [--server-groups <num-server-groups>]
+ [--server-group-members <num-server-group-members>]
+
+ # Block Storage settings
+ [--backups <new-backups>]
+ [--backup-gigabytes <new-backup-gigabytes>]
+ [--gigabytes <new-gigabytes>]
+ [--per-volume-gigabytes <new-per-volume-gigabytes>]
+ [--snapshots <new-snapshots>]
+ [--volumes <new-volumes>]
+
+ <class>
+
+.. option:: --class
+
+ Set quotas for ``<class>``
+
+.. option:: --properties <new-properties>
+
+ New value for the properties quota
+
+.. option:: --ram <new-ram>
+
+ New value for the ram quota
+
+.. option:: --secgroup-rules <new-secgroup-rules>
+
+ New value for the secgroup-rules quota
+
+.. option:: --instances <new-instances>
+
+ New value for the instances quota
+
+.. option:: --key-pairs <new-key-pairs>
+
+ New value for the key-pairs quota
+
+.. option:: --fixed-ips <new-fixed-ips>
+
+ New value for the fixed-ips quota
+
+.. option:: --secgroups <new-secgroups>
+
+ New value for the secgroups quota
+
+.. option:: --injected-file-size <new-injected-file-size>
+
+ New value for the injected-file-size quota
+
+.. option:: --server-groups <new-server-groups>
+
+ New value for the server-groups quota
+
+.. option:: --server-group-members <new-server-group-members>
+
+ New value for the server-group-members quota
+
+.. option:: --floating-ips <new-floating-ips>
+
+ New value for the floating-ips quota
+
+.. option:: --injected-files <new-injected-files>
+
+ New value for the injected-files quota
+
+.. option:: --cores <new-cores>
+
+ New value for the cores quota
+
+.. option:: --injected-path-size <new-injected-path-size>
+
+ New value for the injected-path-size quota
+
+.. option:: --backups <new-backups>
+
+ New value for the backups quota
+
+.. option:: --backup-gigabytes <new-backup-gigabytes>
+
+ New value for the backup gigabytes quota
+
+.. option:: --gigabytes <new-gigabytes>
+
+ New value for the gigabytes quota
+
+.. option:: --per-volume-gigabytes <new-per-volume-gigabytes>
+
+ New value for the gigabytes quota of per volume
+
+.. option:: --volumes <new-volumes>
+
+ New value for the volumes quota
+
+.. option:: --snapshots <new-snapshots>
+
+ New value for the snapshots quota
+
+.. option:: --volume-type <volume-type>
+
+ Set quotas for a specific <volume-type>. The supported quotas are:
+ gigabytes, snapshots, volumes.
+
+.. option:: --networks <num-networks>
+
+ New value for the networks quota
+
+.. option:: --subnets <num-subnets>
+
+ New value for the subnets quota
+
+.. option:: --ports <num-ports>
+
+ New value for the ports quota
+
+.. option:: --routers <num-routers>
+
+ New value for the routers quota
+
+.. option:: --rbac-policies <num-rbac-policies>
+
+ New value for the rbac-policies quota
+
+.. option:: --vips <num-vips>
+
+ New value for the vips quota
+
+.. option:: --subnetpools <num-subnetpools>
+
+ New value for the subnetpools quota
+
+.. option:: --members <num-members>
+
+ New value for the members quota
+
+.. option:: --health-monitors <num-health-monitors>
+
+ New value for the health-monitors quota
+
+quota show
+----------
+
+Show quotas for project or class
+
+.. program:: quota show
+.. code:: bash
+
+ openstack quota show
+ [--default]
+ [<project>]
+
+
+.. option:: --default
+
+ Show default quotas for :ref:`\<project\> <quota_show-project>`
+
+.. _quota_show-project:
+.. describe:: <project>
+
+ Show quotas for this project (name or ID)
+
+.. code:: bash
+
+ openstack quota show
+ --class
+ [<class>]
+
+.. option:: --class
+
+ Show quotas for :ref:`\<class\> <quota_show-class>`
+
+.. _quota_show-class:
+.. describe:: <class>
+
+ Show quotas for this class (name or ID)
diff --git a/doc/source/cli/command-objects/region.rst b/doc/source/cli/command-objects/region.rst
new file mode 100644
index 00000000..d2c63c1b
--- /dev/null
+++ b/doc/source/cli/command-objects/region.rst
@@ -0,0 +1,104 @@
+======
+region
+======
+
+Identity v3
+
+region create
+-------------
+
+Create new region
+
+.. program:: region create
+.. code:: bash
+
+ openstack region create
+ [--parent-region <region-id>]
+ [--description <description>]
+ <region-id>
+
+.. option:: --parent-region <region-id>
+
+ Parent region ID
+
+.. option:: --description <description>
+
+ New region description
+
+.. _region_create-region-id:
+.. describe:: <region-id>
+
+ New region ID
+
+region delete
+-------------
+
+Delete region(s)
+
+.. program:: region delete
+.. code:: bash
+
+ openstack region delete
+ <region-id> [<region-id> ...]
+
+.. _region_delete-region-id:
+.. describe:: <region-id>
+
+ Region ID(s) to delete
+
+region list
+-----------
+
+List regions
+
+.. program:: region list
+.. code:: bash
+
+ openstack region list
+ [--parent-region <region-id>]
+
+.. option:: --parent-region <region-id>
+
+ Filter by parent region ID
+
+region set
+----------
+
+Set region properties
+
+.. program:: region set
+.. code:: bash
+
+ openstack region set
+ [--parent-region <region-id>]
+ [--description <description>]
+ <region-id>
+
+.. option:: --parent-region <region-id>
+
+ New parent region ID
+
+.. option:: --description <description>
+
+ New region description
+
+.. _region_set-region-id:
+.. describe:: <region-id>
+
+ Region to modify
+
+region show
+-----------
+
+Display region details
+
+.. program:: region show
+.. code:: bash
+
+ openstack region show
+ <region-id>
+
+.. _region_show-region-id:
+.. describe:: <region-id>
+
+ Region to display
diff --git a/doc/source/cli/command-objects/request-token.rst b/doc/source/cli/command-objects/request-token.rst
new file mode 100644
index 00000000..3c80780f
--- /dev/null
+++ b/doc/source/cli/command-objects/request-token.rst
@@ -0,0 +1,58 @@
+=============
+request token
+=============
+
+Identity v3
+
+`Requires: OS-OAUTH1 extension`
+
+request token authorize
+-----------------------
+
+Authorize a request token
+
+.. program:: request token authorize
+.. code:: bash
+
+ openstack request token authorize
+ --request-key <consumer-key>
+ --role <role>
+
+.. option:: --request-key <request-key>
+
+ Request token to authorize (ID only) (required)
+
+.. option:: --role <role>
+
+ Roles to authorize (name or ID)
+ (repeat option to set multiple values) (required)
+
+request token create
+--------------------
+
+Create a request token
+
+.. program:: request token create
+.. code:: bash
+
+ openstack request token create
+ --consumer-key <consumer-key>
+ --consumer-secret <consumer-secret>
+ --project <project>
+ [--domain <domain>]
+
+.. option:: --consumer-key <consumer-key>
+
+ Consumer key (required)
+
+.. option:: --description <description>
+
+ Consumer secret (required)
+
+.. option:: --project <project>
+
+ Project that consumer wants to access (name or ID) (required)
+
+.. option:: --domain <domain>
+
+ Domain owning <project> (name or ID)
diff --git a/doc/source/cli/command-objects/role-assignment.rst b/doc/source/cli/command-objects/role-assignment.rst
new file mode 100644
index 00000000..b29f32c6
--- /dev/null
+++ b/doc/source/cli/command-objects/role-assignment.rst
@@ -0,0 +1,106 @@
+===============
+role assignment
+===============
+
+Identity v2, v3
+
+role assignment list
+--------------------
+
+List role assignments
+
+.. program:: role assignment list
+.. code:: bash
+
+ openstack role assignment list
+ [--role <role>]
+ [--role-domain <role-domain>]
+ [--user <user>]
+ [--user-domain <user-domain>]
+ [--group <group>]
+ [--group-domain <group-domain>]
+ [--domain <domain>]
+ [--project <project>]
+ [--project-domain <project-domain>]
+ [--effective]
+ [--inherited]
+ [--names]
+
+.. option:: --role <role>
+
+ Role to filter (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --role-domain <role-domain>
+
+ Domain the role belongs to (name or ID).
+ This can be used in case collisions between role names exist.
+
+ .. versionadded:: 3
+
+.. option:: --user <user>
+
+ User to filter (name or ID)
+
+.. option:: --user-domain <user-domain>
+
+ Domain the user belongs to (name or ID).
+ This can be used in case collisions between user names exist.
+
+ .. versionadded:: 3
+
+.. option:: --group <group>
+
+ Group to filter (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --group-domain <group-domain>
+
+ Domain the group belongs to (name or ID).
+ This can be used in case collisions between group names exist.
+
+ .. versionadded:: 3
+
+.. option:: --domain <domain>
+
+ Domain to filter (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --project <project>
+
+ Project to filter (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ .. versionadded:: 3
+
+.. option:: --effective
+
+ Returns only effective role assignments (defaults to False)
+
+ .. versionadded:: 3
+
+.. option:: --inherited
+
+ Specifies if the role grant is inheritable to the sub projects
+
+ .. versionadded:: 3
+
+.. option:: --names
+
+ Returns role assignments with names instead of IDs
+
+.. option:: --auth-user
+
+ Returns role assignments for the authenticated user.
+
+.. option:: --auth-project
+
+ Returns role assignments for the project to which the authenticated user
+ is scoped.
diff --git a/doc/source/cli/command-objects/role.rst b/doc/source/cli/command-objects/role.rst
new file mode 100644
index 00000000..fe3126c0
--- /dev/null
+++ b/doc/source/cli/command-objects/role.rst
@@ -0,0 +1,326 @@
+====
+role
+====
+
+Identity v2, v3
+
+role add
+--------
+
+Add role assignment to a user or group in a project or domain
+
+.. program:: role add
+.. code:: bash
+
+ openstack role add
+ --domain <domain> | --project <project> [--project-domain <project-domain>]
+ --user <user> [--user-domain <user-domain>] | --group <group> [--group-domain <group-domain>]
+ --role-domain <role-domain>
+ --inherited
+ <role>
+
+.. option:: --domain <domain>
+
+ Include <domain> (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --project <project>
+
+ Include <project> (name or ID)
+
+.. option:: --user <user>
+
+ Include <user> (name or ID)
+
+.. option:: --group <group>
+
+ Include <group> (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --user-domain <user-domain>
+
+ Domain the user belongs to (name or ID).
+ This can be used in case collisions between user names exist.
+
+ .. versionadded:: 3
+
+.. option:: --group-domain <group-domain>
+
+ Domain the group belongs to (name or ID).
+ This can be used in case collisions between group names exist.
+
+ .. versionadded:: 3
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ .. versionadded:: 3
+
+.. option:: --inherited
+
+ Specifies if the role grant is inheritable to the sub projects.
+
+ .. versionadded:: 3
+
+.. option:: --role-domain <role-domain>
+
+ Domain the role belongs to (name or ID).
+ This must be specified when the name of a domain specific role is used.
+
+ .. versionadded:: 3
+
+.. describe:: <role>
+
+ Role to add to <project>:<user> (name or ID)
+
+role create
+-----------
+
+Create new role
+
+.. program:: role create
+.. code:: bash
+
+ openstack role create
+ [--or-show]
+ [--domain <domain>]
+ <name>
+
+.. option:: --domain <domain>
+
+ Domain the role belongs to (name or ID).
+
+ .. versionadded:: 3
+
+.. option:: --or-show
+
+ Return existing role
+
+ If the role already exists return the existing role data and do not fail.
+
+.. describe:: <name>
+
+ New role name
+
+role delete
+-----------
+
+Delete role(s)
+
+.. program:: role delete
+.. code:: bash
+
+ openstack role delete
+ <role> [<role> ...]
+ [--domain <domain>]
+
+.. describe:: <role>
+
+ Role to delete (name or ID)
+
+.. option:: --domain <domain>
+
+ Domain the role belongs to (name or ID).
+
+ .. versionadded:: 3
+
+role list
+---------
+
+List roles
+
+.. program:: role list
+.. code:: bash
+
+ openstack role list
+ --domain <domain> | --project <project> [--project-domain <project-domain>]
+ --user <user> [--user-domain <user-domain>] | --group <group> [--group-domain <group-domain>]
+ --inherited
+
+.. option:: --domain <domain>
+
+ Filter roles by <domain> (name or ID)
+
+ (Deprecated if being used to list assignments in conjunction with the
+ ``--user <user>``, option, please use ``role assignment list`` instead)
+
+.. option:: --project <project>
+
+ Filter roles by <project> (name or ID)
+
+ (Deprecated, please use ``role assignment list`` instead)
+
+.. option:: --user <user>
+
+ Filter roles by <user> (name or ID)
+
+ (Deprecated, please use ``role assignment list`` instead)
+
+.. option:: --group <group>
+
+ Filter roles by <group> (name or ID)
+
+ (Deprecated, please use ``role assignment list`` instead)
+
+.. option:: --user-domain <user-domain>
+
+ Domain the user belongs to (name or ID).
+ This can be used in case collisions between user names exist.
+
+ (Deprecated, please use ``role assignment list`` instead)
+
+ .. versionadded:: 3
+
+.. option:: --group-domain <group-domain>
+
+ Domain the group belongs to (name or ID).
+ This can be used in case collisions between group names exist.
+
+ (Deprecated, please use ``role assignment list`` instead)
+
+ .. versionadded:: 3
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ (Deprecated, please use ``role assignment list`` instead)
+
+ .. versionadded:: 3
+
+.. option:: --inherited
+
+ Specifies if the role grant is inheritable to the sub projects.
+
+ (Deprecated, please use ``role assignment list`` instead)
+
+ .. versionadded:: 3
+
+role remove
+-----------
+
+Remove role assignment from domain/project : user/group
+
+.. program:: role remove
+.. code:: bash
+
+ openstack role remove
+ --domain <domain> | --project <project> [--project-domain <project-domain>]
+ --user <user> [--user-domain <user-domain>] | --group <group> [--group-domain <group-domain>]
+ --role-domain <role-domain>
+ --inherited
+ <role>
+
+.. option:: --domain <domain>
+
+ Include <domain> (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --project <project>
+
+ Include <project> (name or ID)
+
+.. option:: --user <user>
+
+ Include <user> (name or ID)
+
+.. option:: --group <group>
+
+ Include <group> (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --user-domain <user-domain>
+
+ Domain the user belongs to (name or ID).
+ This can be used in case collisions between user names exist.
+
+ .. versionadded:: 3
+
+.. option:: --group-domain <group-domain>
+
+ Domain the group belongs to (name or ID).
+ This can be used in case collisions between group names exist.
+
+ .. versionadded:: 3
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ .. versionadded:: 3
+
+.. option:: --inherited
+
+ Specifies if the role grant is inheritable to the sub projects.
+
+ .. versionadded:: 3
+
+.. option:: --role-domain <role-domain>
+
+ Domain the role belongs to (name or ID).
+ This must be specified when the name of a domain specific role is used.
+
+ .. versionadded:: 3
+
+.. describe:: <role>
+
+ Role to remove (name or ID)
+
+role set
+--------
+
+Set role properties
+
+.. versionadded:: 3
+
+.. program:: role set
+.. code:: bash
+
+ openstack role set
+ [--name <name>]
+ [--domain <domain>]
+ <role>
+
+.. option:: --name <name>
+
+ Set role name
+
+.. option:: --domain <domain>
+
+ Domain the role belongs to (name or ID).
+
+ .. versionadded:: 3
+
+.. describe:: <role>
+
+ Role to modify (name or ID)
+
+role show
+---------
+
+Display role details
+
+.. program:: role show
+.. code:: bash
+
+ openstack role show
+ [--domain <domain>]
+ <role>
+
+.. option:: --domain <domain>
+
+ Domain the role belongs to (name or ID).
+
+ .. versionadded:: 3
+
+.. describe:: <role>
+
+ Role to display (name or ID)
diff --git a/doc/source/cli/command-objects/router.rst b/doc/source/cli/command-objects/router.rst
new file mode 100644
index 00000000..50e791ea
--- /dev/null
+++ b/doc/source/cli/command-objects/router.rst
@@ -0,0 +1,357 @@
+======
+router
+======
+
+A **router** is a logical component that forwards data packets between
+networks. It also provides Layer 3 and NAT forwarding to provide external
+network access for servers on project networks.
+
+Network v2
+
+router add port
+---------------
+
+Add a port to a router
+
+.. program:: router add port
+.. code:: bash
+
+ openstack router add port
+ <router>
+ <port>
+
+.. _router_add_port:
+
+.. describe:: <router>
+
+ Router to which port will be added (name or ID)
+
+.. describe:: <port>
+
+ Port to be added (name or ID)
+
+router add subnet
+-----------------
+
+Add a subnet to a router
+
+.. program:: router add subnet
+.. code:: bash
+
+ openstack router add subnet
+ <router>
+ <subnet>
+
+.. _router_add_subnet:
+
+.. describe:: <router>
+
+ Router to which subnet will be added (name or ID)
+
+.. describe:: <subnet>
+
+ Subnet to be added (name or ID)
+
+router create
+-------------
+
+Create new router
+
+.. program:: router create
+.. code:: bash
+
+ openstack router create
+ [--project <project> [--project-domain <project-domain>]]
+ [--enable | --disable]
+ [--distributed | --centralized]
+ [--ha | --no-ha]
+ [--description <description>]
+ [--availability-zone-hint <availability-zone>]
+ <name>
+
+.. option:: --project <project>
+
+ Owner's project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --enable
+
+ Enable router (default)
+
+.. option:: --disable
+
+ Disable router
+
+.. option:: --distributed
+
+ Create a distributed router
+
+ The default router type (distributed vs centralized) is determined by a
+ configuration setting in the OpenStack deployment. Since we are unable
+ to know that default wihtout attempting to actually create a router it
+ is suggested to use either :option:`--distributed` or :option:`--centralized`
+ in situations where multiple cloud deployments may be used.
+
+.. option:: --centralized
+
+ Create a centralized router
+
+ See the note in :option:`--distributed` regarding the default used when
+ creating a new router.
+
+.. option:: --ha
+
+ Create a highly available router
+
+.. option:: --no-ha
+
+ Create a legacy router
+
+.. option:: --description <description>
+
+ Set router description
+
+.. option:: --availability-zone-hint <availability-zone>
+
+ Availability Zone in which to create this router
+ (Router Availability Zone extension required,
+ repeat option to set multiple availability zones)
+
+.. _router_create-name:
+.. describe:: <name>
+
+ New router name
+
+router delete
+-------------
+
+Delete router(s)
+
+.. program:: router delete
+.. code:: bash
+
+ openstack router delete
+ <router> [<router> ...]
+
+.. _router_delete-router:
+.. describe:: <router>
+
+ Router(s) to delete (name or ID)
+
+router list
+-----------
+
+List routers
+
+.. program:: router list
+.. code:: bash
+
+ openstack router list
+ [--name <name>]
+ [--enable | --disable]
+ [--long]
+ [--project <project> [--project-domain <project-domain>]]
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --name <name>
+
+ List routers according to their name
+
+.. option:: --enable
+
+ List enabled routers
+
+.. option:: --disable
+
+ List disabled routers
+
+.. option:: --project <project>
+
+ List routers according to their project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+router remove port
+------------------
+
+Remove a port from a router
+
+.. program:: router remove port
+.. code:: bash
+
+ openstack router remove port
+ <router>
+ <port>
+
+.. _router_remove_port:
+
+.. describe:: <router>
+
+ Router from which port will be removed (name or ID)
+
+.. describe:: <port>
+
+ Port to be removed and deleted (name or ID)
+
+router remove subnet
+--------------------
+
+Remove a subnet from a router
+
+.. program:: router remove subnet
+.. code:: bash
+
+ openstack router remove subnet
+ <router>
+ <subnet>
+
+.. _router_remove_subnet:
+
+.. describe:: <router>
+
+ Router from which subnet will be removed (name or ID)
+
+.. describe:: <subnet>
+
+ Subnet to be removed (name or ID)
+
+router set
+----------
+
+Set router properties
+
+.. program:: router set
+.. code:: bash
+
+ openstack router set
+ [--name <name>]
+ [--enable | --disable]
+ [--distributed | --centralized]
+ [--description <description>]
+ [--route destination=<subnet>,gateway=<ip-address> | --no-route]
+ [--ha | --no-ha]
+ [--external-gateway <network> [--enable-snat|--disable-snat] [--fixed-ip subnet=<subnet>,ip-address=<ip-address>]]
+ <router>
+
+.. option:: --name <name>
+
+ Set router name
+
+.. option:: --enable
+
+ Enable router
+
+.. option:: --disable
+
+ Disable router
+
+.. option:: --distributed
+
+ Set router to distributed mode (disabled router only)
+
+.. option:: --centralized
+
+ Set router to centralized mode (disabled router only)
+
+.. option:: --description <description>
+
+ Set router description
+
+.. option:: --route destination=<subnet>,gateway=<ip-address>
+
+ Routes associated with the router
+ destination: destination subnet (in CIDR notation)
+ gateway: nexthop IP address
+ (repeat option to set multiple routes)
+
+.. option:: --no-route
+
+ Clear routes associated with the router.
+ Specify both --route and --no-route to overwrite
+ current value of route.
+
+.. option:: --ha
+
+ Set the router as highly available (disabled router only)
+
+.. option:: --no-ha
+
+ Clear high availablability attribute of the router (disabled router only)
+
+.. option:: --external-gateway <network>
+
+ External Network used as router's gateway (name or ID)
+
+.. option:: --enable-snat
+
+ Enable Source NAT on external gateway
+
+.. option:: --disable-snat
+
+ Disable Source NAT on external gateway
+
+.. option:: --fixed-ip subnet=<subnet>,ip-address=<ip-address>
+
+ Desired IP and/or subnet (name or ID) on external gateway:
+ subnet=<subnet>,ip-address=<ip-address>
+ (repeat option to set multiple fixed IP addresses)
+
+.. _router_set-router:
+.. describe:: <router>
+
+ Router to modify (name or ID)
+
+router show
+-----------
+
+Display router details
+
+.. program:: router show
+.. code:: bash
+
+ openstack router show
+ <router>
+
+.. _router_show-router:
+.. describe:: <router>
+
+ Router to display (name or ID)
+
+router unset
+------------
+
+Unset router properties
+
+.. program:: router unset
+.. code:: bash
+
+ openstack router unset
+ [--route destination=<subnet>,gateway=<ip-address>]
+ [--external-gateway]
+ <router>
+
+.. option:: --route destination=<subnet>,gateway=<ip-address>
+
+ Routes to be removed from the router
+ destination: destination subnet (in CIDR notation)
+ gateway: nexthop IP address
+ (repeat option to unset multiple routes)
+
+.. option:: --external-gateway
+
+ Remove external gateway information from the router
+
+.. _router_unset-router:
+.. describe:: <router>
+
+ Router to modify (name or ID)
diff --git a/doc/source/cli/command-objects/security-group-rule.rst b/doc/source/cli/command-objects/security-group-rule.rst
new file mode 100644
index 00000000..1dbf16d2
--- /dev/null
+++ b/doc/source/cli/command-objects/security-group-rule.rst
@@ -0,0 +1,193 @@
+===================
+security group rule
+===================
+
+A **security group rule** specifies the network access rules for servers
+and other resources on the network.
+
+Compute v2, Network v2
+
+security group rule create
+--------------------------
+
+Create a new security group rule
+
+.. program:: security group rule create
+.. code:: bash
+
+ openstack security group rule create
+ [--remote-ip <ip-address> | --remote-group <group>]
+ [--dst-port <port-range> | [--icmp-type <icmp-type> [--icmp-code <icmp-code>]]]
+ [--protocol <protocol>]
+ [--ingress | --egress]
+ [--ethertype <ethertype>]
+ [--project <project> [--project-domain <project-domain>]]
+ [--description <description>]
+ <group>
+
+.. option:: --remote-ip <ip-address>
+
+ Remote IP address block
+ (may use CIDR notation; default for IPv4 rule: 0.0.0.0/0)
+
+.. option:: --remote-group <group>
+
+ Remote security group (name or ID)
+
+.. option:: --dst-port <port-range>
+
+ Destination port, may be a single port or a starting and
+ ending port range: 137:139. Required for IP protocols TCP
+ and UDP. Ignored for ICMP IP protocols.
+
+.. option:: --icmp-type <icmp-type>
+
+ ICMP type for ICMP IP protocols
+
+ *Network version 2 only*
+
+.. option:: --icmp-code <icmp-code>
+
+ ICMP code for ICMP IP protocols
+
+ *Network version 2 only*
+
+.. option:: --protocol <protocol>
+
+ IP protocol (icmp, tcp, udp; default: tcp)
+
+ *Compute version 2*
+
+ IP protocol (ah, dccp, egp, esp, gre, icmp, igmp,
+ ipv6-encap, ipv6-frag, ipv6-icmp, ipv6-nonxt,
+ ipv6-opts, ipv6-route, ospf, pgm, rsvp, sctp, tcp,
+ udp, udplite, vrrp and integer representations [0-255];
+ default: tcp)
+
+ *Network version 2*
+
+.. option:: --ingress
+
+ Rule applies to incoming network traffic (default)
+
+ *Network version 2 only*
+
+.. option:: --egress
+
+ Rule applies to outgoing network traffic
+
+ *Network version 2 only*
+
+.. option:: --ethertype <ethertype>
+
+ Ethertype of network traffic
+ (IPv4, IPv6; default: based on IP protocol)
+
+ *Network version 2 only*
+
+.. option:: --project <project>
+
+ Owner's project (name or ID)
+
+ *Network version 2 only*
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ *Network version 2 only*
+
+.. option:: --description <description>
+
+ Set security group rule description
+
+ *Network version 2 only*
+
+.. describe:: <group>
+
+ Create rule in this security group (name or ID)
+
+security group rule delete
+--------------------------
+
+Delete security group rule(s)
+
+.. program:: security group rule delete
+.. code:: bash
+
+ openstack security group rule delete
+ <rule> [<rule> ...]
+
+.. describe:: <rule>
+
+ Security group rule(s) to delete (ID only)
+
+security group rule list
+------------------------
+
+List security group rules
+
+.. program:: security group rule list
+.. code:: bash
+
+ openstack security group rule list
+ [--all-projects]
+ [--protocol <protocol>]
+ [--ingress | --egress]
+ [--long]
+ [<group>]
+
+.. option:: --all-projects
+
+ Display information from all projects (admin only)
+
+ *Network version 2 ignores this option and will always display information*
+ *for all projects (admin only).*
+
+.. option:: --long
+
+ List additional fields in output
+
+ *Compute version 2 does not have additional fields to display.*
+
+
+.. option:: --protocol
+
+ List rules by the IP protocol (ah, dhcp, egp, esp, gre, icmp, igmp,
+ ipv6-encap, ipv6-frag, ipv6-icmp, ipv6-nonxt,ipv6-opts, ipv6-route,
+ ospf, pgm, rsvp, sctp, tcp, udp, udplite, vrrp and integer
+ representations [0-255])
+
+ *Network version 2*
+
+.. option:: --ingress
+
+ List rules applied to incoming network traffic
+
+ *Network version 2 only*
+
+.. option:: --egress
+
+ List rules applied to outgoing network traffic
+
+ *Network version 2 only*
+
+.. describe:: <group>
+
+ List all rules in this security group (name or ID)
+
+security group rule show
+------------------------
+
+Display security group rule details
+
+.. program:: security group rule show
+.. code:: bash
+
+ openstack security group rule show
+ <rule>
+
+.. describe:: <rule>
+
+ Security group rule to display (ID only)
diff --git a/doc/source/cli/command-objects/security-group.rst b/doc/source/cli/command-objects/security-group.rst
new file mode 100644
index 00000000..a95a96f4
--- /dev/null
+++ b/doc/source/cli/command-objects/security-group.rst
@@ -0,0 +1,130 @@
+==============
+security group
+==============
+
+A **security group** acts as a virtual firewall for servers and other
+resources on a network. It is a container for security group rules
+which specify the network access rules.
+
+Compute v2, Network v2
+
+security group create
+---------------------
+
+Create a new security group
+
+.. program:: security group create
+.. code:: bash
+
+ openstack security group create
+ [--description <description>]
+ [--project <project> [--project-domain <project-domain>]]
+ <name>
+
+.. option:: --description <description>
+
+ Security group description
+
+.. option:: --project <project>
+
+ Owner's project (name or ID)
+
+ *Network version 2 only*
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ *Network version 2 only*
+
+.. describe:: <name>
+
+ New security group name
+
+security group delete
+---------------------
+
+Delete security group(s)
+
+.. program:: security group delete
+.. code:: bash
+
+ openstack security group delete
+ <group> [<group> ...]
+
+.. describe:: <group>
+
+ Security group(s) to delete (name or ID)
+
+security group list
+-------------------
+
+List security groups
+
+.. program:: security group list
+.. code:: bash
+
+ openstack security group list
+ [--all-projects]
+ [--project <project> [--project-domain <project-domain>]]
+
+.. option:: --all-projects
+
+ Display information from all projects (admin only)
+
+ *Network version 2 ignores this option and will always display information*
+ *for all projects (admin only).*
+
+.. option:: --project <project>
+
+ List security groups according to the project (name or ID)
+
+ *Network version 2 only*
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ *Network version 2 only*
+
+security group set
+------------------
+
+Set security group properties
+
+.. program:: security group set
+.. code:: bash
+
+ openstack security group set
+ [--name <new-name>]
+ [--description <description>]
+ <group>
+
+.. option:: --name <new-name>
+
+ New security group name
+
+.. option:: --description <description>
+
+ New security group description
+
+.. describe:: <group>
+
+ Security group to modify (name or ID)
+
+security group show
+-------------------
+
+Display security group details
+
+.. program:: security group show
+.. code:: bash
+
+ openstack security group show
+ <group>
+
+.. describe:: <group>
+
+ Security group to display (name or ID)
diff --git a/doc/source/cli/command-objects/server-backup.rst b/doc/source/cli/command-objects/server-backup.rst
new file mode 100644
index 00000000..9ddb2cdf
--- /dev/null
+++ b/doc/source/cli/command-objects/server-backup.rst
@@ -0,0 +1,44 @@
+=============
+server backup
+=============
+
+A server backup is a disk image created in the Image store from a running server
+instance. The backup command manages the number of archival copies to retain.
+
+Compute v2
+
+server backup create
+--------------------
+
+Create a server backup image
+
+.. program:: server create
+.. code:: bash
+
+ openstack server backup create
+ [--name <image-name>]
+ [--type <backup-type>]
+ [--rotate <count>]
+ [--wait]
+ <server>
+
+.. option:: --name <image-name>
+
+ Name of the backup image (default: server name)
+
+.. option:: --type <backup-type>
+
+ Used to populate the ``backup_type`` property of the backup
+ image (default: empty)
+
+.. option:: --rotate <count>
+
+ Number of backup images to keep (default: 1)
+
+.. option:: --wait
+
+ Wait for operation to complete
+
+.. describe:: <server>
+
+ Server to back up (name or ID)
diff --git a/doc/source/cli/command-objects/server-event.rst b/doc/source/cli/command-objects/server-event.rst
new file mode 100644
index 00000000..ef4685f8
--- /dev/null
+++ b/doc/source/cli/command-objects/server-event.rst
@@ -0,0 +1,45 @@
+============
+server event
+============
+
+Server event is the event record that had been done on a server, include: event
+type(create, delete, reboot and so on), event result(success, error), start
+time, finish time and so on. These are important information for server
+maintains.
+
+Compute v2
+
+server event list
+-----------------
+
+List recent events of a server
+
+.. program:: server event list
+.. code:: bash
+
+ openstack server event list
+ <server>
+
+.. describe:: <server>
+
+ Server to list events (name or ID)
+
+server event show
+-----------------
+
+Show server event details
+
+.. program:: server event show
+.. code:: bash
+
+ openstack server event show
+ <server>
+ <request-id>
+
+.. describe:: <server>
+
+ Server to show event details (name or ID)
+
+.. describe:: <request-id>
+
+ Request ID of the event to show (ID only)
diff --git a/doc/source/cli/command-objects/server-group.rst b/doc/source/cli/command-objects/server-group.rst
new file mode 100644
index 00000000..97696350
--- /dev/null
+++ b/doc/source/cli/command-objects/server-group.rst
@@ -0,0 +1,80 @@
+============
+server group
+============
+
+Server group provides a mechanism to group servers according to certain policy.
+
+Compute v2
+
+server group create
+-------------------
+
+Create a new server group
+
+.. program:: server group create
+.. code-block:: bash
+
+ openstack server group create
+ --policy <policy>
+ <name>
+
+.. option:: --policy <policy>
+
+ Add a policy to :ref:`\<name\> <server_group_create-name>`
+ ('affinity' or 'anti-affinity', default to 'affinity')
+
+.. _server_group_create-name:
+.. describe:: <name>
+
+ New server group name
+
+server group delete
+-------------------
+
+Delete existing server group(s)
+
+.. program:: server group delete
+.. code-block:: bash
+
+ openstack server group delete
+ <server-group> [<server-group> ...]
+
+.. describe:: <server-group>
+
+ Server group(s) to delete (name or ID)
+ (repeat to delete multiple server groups)
+
+server group list
+-----------------
+
+List all server groups
+
+.. program:: server group list
+.. code-block:: bash
+
+ openstack server group list
+ [--all-projects]
+ [--long]
+
+.. option:: --all-projects
+
+ Display information from all projects (admin only)
+
+.. option:: --long
+
+ List additional fields in output
+
+server group show
+-----------------
+
+Display server group details
+
+.. program:: server group show
+.. code-block:: bash
+
+ openstack server group show
+ <server-group>
+
+.. describe:: <server-group>
+
+ Server group to display (name or ID)
diff --git a/doc/source/cli/command-objects/server-image.rst b/doc/source/cli/command-objects/server-image.rst
new file mode 100644
index 00000000..7e625d9e
--- /dev/null
+++ b/doc/source/cli/command-objects/server-image.rst
@@ -0,0 +1,33 @@
+============
+server image
+============
+
+A server image is a disk image created from a running server instance. The
+image is created in the Image store.
+
+Compute v2
+
+server image create
+-------------------
+
+Create a new server disk image from an existing server
+
+.. program:: server image create
+.. code:: bash
+
+ openstack server image create
+ [--name <image-name>]
+ [--wait]
+ <server>
+
+.. option:: --name <image-name>
+
+ Name of new disk image (default: server name)
+
+.. option:: --wait
+
+ Wait for operation to complete
+
+.. describe:: <server>
+
+ Server to create image (name or ID)
diff --git a/doc/source/cli/command-objects/server.rst b/doc/source/cli/command-objects/server.rst
new file mode 100644
index 00000000..cc580603
--- /dev/null
+++ b/doc/source/cli/command-objects/server.rst
@@ -0,0 +1,986 @@
+======
+server
+======
+
+Compute v2
+
+server add fixed ip
+-------------------
+
+Add fixed IP address to server
+
+.. program:: server add fixed ip
+.. code:: bash
+
+ openstack server add fixed ip
+ [--fixed-ip-address <ip-address>]
+ <server>
+ <network>
+
+.. option:: --fixed-ip-address <ip-address>
+
+ Requested fixed IP address
+
+.. describe:: <server>
+
+ Server to receive the fixed IP address (name or ID)
+
+.. describe:: <network>
+
+ Network to allocate the fixed IP address from (name or ID)
+
+server add floating ip
+----------------------
+
+Add floating IP address to server
+
+.. program:: server add floating ip
+.. code:: bash
+
+ openstack server add floating ip
+ [--fixed-ip-address <ip-address>]
+ <server>
+ <ip-address>
+
+.. option:: --fixed-ip-address <ip-address>
+
+ Fixed IP address to associate with this floating IP address
+
+.. describe:: <server>
+
+ Server to receive the floating IP address (name or ID)
+
+.. describe:: <ip-address>
+
+ Floating IP address to assign to server (IP only)
+
+server add port
+---------------
+
+Add port to server
+
+.. program:: server add port
+.. code:: bash
+
+ openstack server add port
+ <server>
+ <port>
+
+.. describe:: <server>
+
+ Server to add the port to (name or ID)
+
+.. describe:: <port>
+
+ Port to add to the server (name or ID)
+
+server add security group
+-------------------------
+
+Add security group to server
+
+.. program:: server add security group
+.. code:: bash
+
+ openstack server add security group
+ <server>
+ <group>
+
+.. describe:: <server>
+
+ Server (name or ID)
+
+.. describe:: <group>
+
+ Security group to add (name or ID)
+
+server add volume
+-----------------
+
+Add volume to server
+
+.. program:: server add volume
+.. code:: bash
+
+ openstack server add volume
+ [--device <device>]
+ <server>
+ <volume>
+
+.. option:: --device <device>
+
+ Server internal device name for volume
+
+.. describe:: <server>
+
+ Server (name or ID)
+
+.. describe:: <volume>
+
+ Volume to add (name or ID)
+
+server create
+-------------
+
+Create a new server
+
+.. program:: server create
+.. code:: bash
+
+ openstack server create
+ --image <image> | --volume <volume>
+ --flavor <flavor>
+ [--security-group <security-group-name> [...] ]
+ [--key-name <key-name>]
+ [--property <key=value> [...] ]
+ [--file <dest-filename=source-filename>] [...] ]
+ [--user-data <user-data>]
+ [--availability-zone <zone-name>]
+ [--block-device-mapping <dev-name=mapping> [...] ]
+ [--nic <net-id=net-uuid,v4-fixed-ip=ip-addr,v6-fixed-ip=ip-addr,port-id=port-uuid,auto,none> [...] ]
+ [--network <network>]
+ [--port <port>]
+ [--hint <key=value> [...] ]
+ [--config-drive <value>|True ]
+ [--min <count>]
+ [--max <count>]
+ [--wait]
+ <server-name>
+
+.. option:: --image <image>
+
+ Create server boot disk from this image (name or ID)
+
+.. option:: --volume <volume>
+
+ Create server using this volume as the boot disk (name or ID)
+
+ This option automatically creates a block device mapping with a boot
+ index of 0. On many hypervisors (libvirt/kvm for example) this will
+ be device ``vda``. Do not create a duplicate mapping using
+ :option:`--block-device-mapping` for this volume.
+
+.. option:: --flavor <flavor>
+
+ Create server with this flavor (name or ID)
+
+.. option:: --security-group <security-group>
+
+ Security group to assign to this server (name or ID)
+ (repeat option to set multiple groups)
+
+.. option:: --key-name <key-name>
+
+ Keypair to inject into this server (optional extension)
+
+.. option:: --property <key=value>
+
+ Set a property on this server
+ (repeat option to set multiple values)
+
+.. option:: --file <dest-filename=source-filename>
+
+ File to inject into image before boot
+ (repeat option to set multiple files)
+
+.. option:: --user-data <user-data>
+
+ User data file to serve from the metadata server
+
+.. option:: --availability-zone <zone-name>
+
+ Select an availability zone for the server
+
+.. option:: --block-device-mapping <dev-name=mapping>
+
+ Create a block device on the server.
+
+ Block device mapping in the format
+
+ <dev-name>=<id>:<type>:<size(GB)>:<delete-on-terminate>
+
+ <dev-name>: block device name, like: vdb, xvdc (required)
+
+ <id>: UUID of the volume or snapshot (required)
+
+ <type>: volume or snapshot; default: volume (optional)
+
+ <size(GB)>: volume size if create from snapshot (optional)
+
+ <delete-on-terminate>: true or false; default: false (optional)
+
+ (optional extension)
+
+.. option:: --nic <net-id=net-uuid,v4-fixed-ip=ip-addr,v6-fixed-ip=ip-addr,port-id=port-uuid,auto,none>
+
+ Create a NIC on the server. Specify option multiple times to create
+ multiple NICs. Either net-id or port-id must be provided, but not both.
+ net-id: attach NIC to network with this UUID,
+ port-id: attach NIC to port with this UUID,
+ v4-fixed-ip: IPv4 fixed address for NIC (optional),
+ v6-fixed-ip: IPv6 fixed address for NIC (optional).
+ none: (v2.37+) no network is attached.
+ auto: (v2.37+) the compute service will automatically allocate a network.
+ Specifying a --nic of auto or none cannot be used with any other
+ --nic value.
+
+.. option:: --network <network>
+
+ Create a NIC on the server and connect it to network.
+ Specify option multiple times to create multiple NICs.
+ For more options on NICs see --nic parameter.
+ network: attach NIC to this network
+
+.. option:: --port <port>
+
+ Create a NIC on the server and connect it to port.
+ Specify option multiple times to create multiple NICs.
+ For more options on NICs see --nic parameter.
+ port: attach NIC to this port
+
+.. option:: --hint <key=value>
+
+ Hints for the scheduler (optional extension)
+
+.. option:: --config-drive <config-drive-volume>|True
+
+ Use specified volume as the config drive, or 'True' to use an ephemeral drive
+
+.. option:: --min <count>
+
+ Minimum number of servers to launch (default=1)
+
+.. option:: --max <count>
+
+ Maximum number of servers to launch (default=1)
+
+.. option:: --wait
+
+ Wait for build to complete
+
+.. describe:: <server-name>
+
+ New server name
+
+..
+
+The parameters ``--network <network>`` and ``--port <port>`` are actually
+wrappers to ``--nic net-id=<network>`` and ``--nic port-id=<port>``. ``--nic``
+also provides additional options to specify an IP address, automatic network
+assignment and NICs which are not assigned to any port. This functionality
+is not part of ``--network`` and ``--port``, which aim to provide a simple
+syntax for the standard use cases of connecting a new server to a given
+network or port.
+
+server delete
+-------------
+
+Delete server(s)
+
+.. program:: server delete
+.. code:: bash
+
+ openstack server delete
+ <server> [<server> ...] [--wait]
+
+.. option:: --wait
+
+ Wait for delete to complete
+
+.. describe:: <server>
+
+ Server(s) to delete (name or ID)
+
+server dump create
+------------------
+Create a dump file in server(s)
+
+Trigger crash dump in server(s) with features like kdump in Linux. It will
+create a dump file in the server(s) dumping the server(s)' memory, and also
+crash the server(s). OSC sees the dump file (server dump) as a kind of
+resource.
+
+.. program:: server dump create
+.. code:: bash
+
+ openstack server dump create
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to create dump file (name or ID)
+
+server list
+-----------
+
+List servers
+
+.. code:: bash
+
+ openstack server list
+ [--reservation-id <reservation-id>]
+ [--ip <ip-address-regex>]
+ [--ip6 <ip6-address-regex>]
+ [--name <name-regex>]
+ [--instance-name <instance-name-regex>]
+ [--status <status>]
+ [--flavor <flavor>]
+ [--image <image>]
+ [--host <hostname>]
+ [--all-projects]
+ [--project <project> [--project-domain <project-domain>]]
+ [--long]
+ [--marker <server>]
+ [--limit <num-servers>]
+ [--deleted]
+ [--changes-since <changes-since>]
+
+.. option:: --reservation-id <reservation-id>
+
+ Only return instances that match the reservation
+
+.. option:: --ip <ip-address-regex>
+
+ Regular expression to match IP addresses
+
+.. option:: --ip6 <ip-address-regex>
+
+ Regular expression to match IPv6 addresses
+
+.. option:: --name <name-regex>
+
+ Regular expression to match names
+
+.. option:: --instance-name <server-name-regex>
+
+ Regular expression to match instance name (admin only)
+
+.. option:: --status <status>
+
+ Search by server status
+
+.. option:: --flavor <flavor>
+
+ Search by flavor (name or ID)
+
+.. option:: --image <image>
+
+ Search by image (name or ID)
+
+.. option:: --host <hostname>
+
+ Search by hostname
+
+.. option:: --all-projects
+
+ Include all projects (admin only)
+
+.. option:: --project <project>
+
+ Search by project (admin only) (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --user <user>
+
+ Search by user (admin only) (name or ID)
+
+.. option:: --user-domain <user-domain>
+
+ Domain the user belongs to (name or ID).
+ This can be used in case collisions between user names exist.
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --marker <server>
+
+ The last server of the previous page. Display list of servers
+ after marker. Display all servers if not specified. (name or ID)
+
+.. option:: --limit <num-servers>
+
+ Maximum number of servers to display. If limit equals -1, all servers will
+ be displayed. If limit is greater than 'osapi_max_limit' option of Nova
+ API, 'osapi_max_limit' will be used instead.
+
+.. option:: --deleted
+
+ Only display deleted servers (Admin only).
+
+.. option:: --changes-since <changes-since>
+
+ List only servers changed after a certain point of time. The provided time
+ should be an ISO 8061 formatted time. ex 2016-03-04T06:27:59Z.
+
+server lock
+-----------
+
+Lock server(s). A non-admin user will not be able to execute actions
+
+.. program:: server lock
+.. code:: bash
+
+ openstack server lock
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to lock (name or ID)
+
+server migrate
+--------------
+
+Migrate server to different host
+
+.. program:: server migrate
+.. code:: bash
+
+ openstack server migrate
+ --live <host>
+ [--shared-migration | --block-migration]
+ [--disk-overcommit | --no-disk-overcommit]
+ [--wait]
+ <server>
+
+.. option:: --live <hostname>
+
+ Target hostname
+
+.. option:: --shared-migration
+
+ Perform a shared live migration (default)
+
+.. option:: --block-migration
+
+ Perform a block live migration
+
+.. option:: --disk-overcommit
+
+ Allow disk over-commit on the destination host
+
+.. option:: --no-disk-overcommit
+
+ Do not over-commit disk on the destination host (default)
+
+.. option:: --wait
+
+ Wait for migrate to complete
+
+.. describe:: <server>
+
+ Server to migrate (name or ID)
+
+server pause
+------------
+
+Pause server(s)
+
+.. program:: server pause
+.. code:: bash
+
+ openstack server pause
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to pause (name or ID)
+
+server reboot
+-------------
+
+Perform a hard or soft server reboot
+
+.. program:: server reboot
+.. code:: bash
+
+ openstack server reboot
+ [--hard | --soft]
+ [--wait]
+ <server>
+
+.. option:: --hard
+
+ Perform a hard reboot
+
+.. option:: --soft
+
+ Perform a soft reboot
+
+.. option:: --wait
+
+ Wait for reboot to complete
+
+.. describe:: <server>
+
+ Server (name or ID)
+
+server rebuild
+--------------
+
+Rebuild server
+
+.. program:: server rebuild
+.. code:: bash
+
+ openstack server rebuild
+ [--image <image>]
+ [--password <password>]
+ [--wait]
+ <server>
+
+.. option:: --image <image>
+
+ Recreate server from the specified image (name or ID). Defaults to the
+ currently used one.
+
+.. option:: --password <password>
+
+ Set the password on the rebuilt instance
+
+.. option:: --wait
+
+ Wait for rebuild to complete
+
+.. describe:: <server>
+
+ Server (name or ID)
+
+server remove fixed ip
+----------------------
+
+Remove fixed IP address from server
+
+.. program:: server remove fixed ip
+.. code:: bash
+
+ openstack server remove fixed ip
+ <server>
+ <ip-address>
+
+.. describe:: <server>
+
+ Server to remove the fixed IP address from (name or ID)
+
+.. describe:: <ip-address>
+
+ Fixed IP address to remove from the server (IP only)
+
+server remove floating ip
+-------------------------
+
+Remove floating IP address from server
+
+.. program:: server remove floating ip
+.. code:: bash
+
+ openstack server remove floating ip
+ <server>
+ <ip-address>
+
+.. describe:: <server>
+
+ Server to remove the floating IP address from (name or ID)
+
+.. describe:: <ip-address>
+
+ Floating IP address to remove from server (IP only)
+
+server remove port
+------------------
+
+Remove port from server
+
+.. program:: server remove port
+.. code:: bash
+
+ openstack server remove port
+ <server>
+ <port>
+
+.. describe:: <server>
+
+ Server to remove the port from (name or ID)
+
+.. describe:: <port>
+
+ Port to remove from the server (name or ID)
+
+server remove security group
+----------------------------
+
+Remove security group from server
+
+.. program:: server remove security group
+.. code:: bash
+
+ openstack server remove security group
+ <server>
+ <group>
+
+.. describe:: <server>
+
+ Name or ID of server to use
+
+.. describe:: <group>
+
+ Name or ID of security group to remove from server
+
+server remove volume
+--------------------
+
+Remove volume from server
+
+.. program:: server remove volume
+.. code:: bash
+
+ openstack server remove volume
+ <server>
+ <volume>
+
+.. describe:: <server>
+
+ Server (name or ID)
+
+.. describe:: <volume>
+
+ Volume to remove (name or ID)
+
+server rescue
+-------------
+
+Put server in rescue mode
+
+.. program:: server rescue
+.. code:: bash
+
+ openstack server rescue
+ <server>
+
+.. describe:: <server>
+
+ Server (name or ID)
+
+server resize
+-------------
+
+Scale server to a new flavor
+
+.. program:: server resize
+.. code:: bash
+
+ openstack server resize
+ --flavor <flavor>
+ [--wait]
+ <server>
+
+ openstack server resize
+ --confirm | --revert
+ <server>
+
+.. option:: --flavor <flavor>
+
+ Resize server to specified flavor
+
+.. option:: --confirm
+
+ Confirm server resize is complete
+
+.. option:: --revert
+
+ Restore server state before resize
+
+.. option:: --wait
+
+ Wait for resize to complete
+
+.. describe:: <server>
+
+ Server (name or ID)
+
+A resize operation is implemented by creating a new server and copying
+the contents of the original disk into a new one. It is also a two-step
+process for the user: the first is to perform the resize, the second is
+to either confirm (verify) success and release the old server, or to declare
+a revert to release the new server and restart the old one.
+
+server restore
+--------------
+
+Restore server(s) from soft-deleted state
+
+.. program:: server restore
+.. code:: bash
+
+ openstack server restore
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to restore (name or ID)
+
+server resume
+-------------
+
+Resume server(s)
+
+.. program:: server resume
+.. code:: bash
+
+ openstack server resume
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to resume (name or ID)
+
+server set
+----------
+
+Set server properties
+
+.. program:: server set
+.. code:: bash
+
+ openstack server set
+ --name <new-name>
+ --property <key=value>
+ [--property <key=value>] ...
+ --root-password
+ --state <state>
+ <server>
+
+.. option:: --name <new-name>
+
+ New server name
+
+.. option:: --root-password
+
+ Set new root password (interactive only)
+
+.. option:: --property <key=value>
+
+ Property to add/change for this server
+ (repeat option to set multiple properties)
+
+.. option:: --state <state>
+
+ New server state (valid value: active, error)
+
+.. describe:: <server>
+
+ Server (name or ID)
+
+server shelve
+-------------
+
+Shelve server(s)
+
+.. program:: server shelve
+.. code:: bash
+
+ openstack server shelve
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to shelve (name or ID)
+
+server show
+-----------
+
+Show server details
+
+.. program:: server show
+.. code:: bash
+
+ openstack server show
+ [--diagnostics]
+ <server>
+
+.. option:: --diagnostics
+
+ Display server diagnostics information
+
+.. describe:: <server>
+
+ Server (name or ID)
+
+server ssh
+----------
+
+SSH to server
+
+.. program:: server ssh
+.. code:: bash
+
+ openstack server ssh
+ [--login <login-name>]
+ [--port <port>]
+ [--identity <keyfile>]
+ [--option <config-options>]
+ [--public | --private | --address-type <address-type>]
+ <server>
+
+.. option:: --login <login-name>
+
+ Login name (ssh -l option)
+
+.. option:: --port <port>
+
+ Destination port (ssh -p option)
+
+.. option:: --identity <keyfile>
+
+ Private key file (ssh -i option)
+
+.. option:: --option <config-options>
+
+ Options in ssh_config(5) format (ssh -o option)
+
+.. option:: --public
+
+ Use public IP address
+
+.. option:: --private
+
+ Use private IP address
+
+.. option:: --address-type <address-type>
+
+ Use other IP address (public, private, etc)
+
+.. describe:: <server>
+
+ Server (name or ID)
+
+server start
+------------
+
+Start server(s)
+
+.. program:: server start
+.. code:: bash
+
+ openstack server start
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to start (name or ID)
+
+server stop
+-----------
+
+Stop server(s)
+
+.. program:: server stop
+.. code:: bash
+
+ openstack server stop
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to stop (name or ID)
+
+server suspend
+--------------
+
+Suspend server(s)
+
+.. program:: server suspend
+.. code:: bash
+
+ openstack server suspend
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to suspend (name or ID)
+
+server unlock
+-------------
+
+Unlock server(s)
+
+.. program:: server unlock
+.. code:: bash
+
+ openstack server unlock
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to unlock (name or ID)
+
+server unpause
+--------------
+
+Unpause server(s)
+
+.. program:: server unpause
+.. code:: bash
+
+ openstack server unpause
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to unpause (name or ID)
+
+server unrescue
+---------------
+
+Restore server from rescue mode
+
+.. program:: server unrescue
+.. code:: bash
+
+ openstack server unrescue
+ <server>
+
+.. describe:: <server>
+
+ Server (name or ID)
+
+server unset
+------------
+
+Unset server properties
+
+.. program:: server unset
+.. code:: bash
+
+ openstack server unset
+ --property <key>
+ [--property <key>] ...
+ <server>
+
+.. option:: --property <key>
+
+ Property key to remove from server
+ (repeat option to remove multiple values)
+
+.. describe:: <server>
+
+ Server (name or ID)
+
+server unshelve
+---------------
+
+Unshelve server(s)
+
+.. program:: server unshelve
+.. code:: bash
+
+ openstack server unshelve
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to unshelve (name or ID)
diff --git a/doc/source/cli/command-objects/service-provider.rst b/doc/source/cli/command-objects/service-provider.rst
new file mode 100644
index 00000000..63ef44e1
--- /dev/null
+++ b/doc/source/cli/command-objects/service-provider.rst
@@ -0,0 +1,125 @@
+================
+service provider
+================
+
+Identity v3
+
+`Requires: OS-FEDERATION extension`
+
+service provider create
+-----------------------
+
+Create new service provider
+
+.. program:: service provider create
+.. code:: bash
+
+ openstack service provider create
+ [--description <description>]
+ [--enable | --disable]
+ --auth-url <auth-url>
+ --service-provider-url <sp-url>
+ <name>
+
+.. option:: --auth-url
+
+ Authentication URL of remote federated service provider (required)
+
+.. option:: --service-provider-url
+
+ A service URL where SAML assertions are being sent (required)
+
+.. option:: --description
+
+ New service provider description
+
+.. option:: --enable
+
+ Enable the service provider (default)
+
+.. option:: --disable
+
+ Disable the service provider
+
+.. describe:: <name>
+
+ New service provider name (must be unique)
+
+service provider delete
+-----------------------
+
+Delete service provider(s)
+
+.. program:: service provider delete
+.. code:: bash
+
+ openstack service provider delete
+ <service-provider> [<service-provider> ...]
+
+.. describe:: <service-provider>
+
+ Service provider(s) to delete
+
+service provider list
+---------------------
+
+List service providers
+
+.. program:: service provider list
+.. code:: bash
+
+ openstack service provider list
+
+service provider set
+--------------------
+
+Set service provider properties
+
+.. program:: service provider set
+.. code:: bash
+
+ openstack service provider set
+ [--enable | --disable]
+ [--description <description>]
+ [--auth-url <auth-url>]
+ [--service-provider-url <sp-url>]
+ <service-provider>
+
+.. option:: --service-provider-url
+
+ New service provider URL, where SAML assertions are sent
+
+.. option:: --auth-url
+
+ New Authentication URL of remote federated service provider
+
+.. option:: --description
+
+ New service provider description
+
+.. option:: --enable
+
+ Enable the service provider
+
+.. option:: --disable
+
+ Disable the service provider
+
+.. describe:: <service-provider>
+
+ Service provider to modify
+
+service provider show
+---------------------
+
+Display service provider details
+
+.. program:: service provider show
+.. code:: bash
+
+ openstack service provider show
+ <service-provider>
+
+.. describe:: <service-provider>
+
+ Service provider to display
diff --git a/doc/source/cli/command-objects/service.rst b/doc/source/cli/command-objects/service.rst
new file mode 100644
index 00000000..a69c6950
--- /dev/null
+++ b/doc/source/cli/command-objects/service.rst
@@ -0,0 +1,143 @@
+=======
+service
+=======
+
+Identity v2, v3
+
+service create
+--------------
+
+Create new service
+
+.. program:: service create
+.. code-block:: bash
+
+ openstack service create
+ [--name <name>]
+ [--description <description>]
+ [--enable | --disable]
+ <type>
+
+.. option:: --name <name>
+
+ New service name
+
+.. option:: --description <description>
+
+ New service description
+
+.. option:: --enable
+
+ Enable service (default)
+
+ *Identity version 3 only*
+
+.. option:: --disable
+
+ Disable service
+
+ *Identity version 3 only*
+
+.. _service_create-type:
+.. describe:: <type>
+
+ New service type (compute, image, identity, volume, etc)
+
+service delete
+--------------
+
+Delete service(s)
+
+.. program:: service delete
+.. code-block:: bash
+
+ openstack service delete
+ <service> [<service> ...]
+
+.. _service_delete-service:
+.. describe:: <service>
+
+ Service(s) to delete (type, name or ID)
+
+service list
+------------
+
+List services
+
+.. program:: service list
+.. code-block:: bash
+
+ openstack service list
+ [--long]
+
+.. option:: --long
+
+ List additional fields in output
+
+Returns service fields ID, Name and Type. :option:`--long` adds Description
+and Enabled (*Identity version 3 only*) to the output.
+
+service set
+-----------
+
+Set service properties
+
+* Identity version 3 only*
+
+.. program:: service set
+.. code-block:: bash
+
+ openstack service set
+ [--type <type>]
+ [--name <name>]
+ [--description <description>]
+ [--enable | --disable]
+ <service>
+
+.. option:: --type <type>
+
+ New service type (compute, image, identity, volume, etc)
+
+.. option:: --name <name>
+
+ New service name
+
+.. option:: --description <description>
+
+ New service description
+
+.. option:: --enable
+
+ Enable service
+
+.. option:: --disable
+
+ Disable service
+
+.. _service_set-service:
+.. describe:: <service>
+
+ Service to modify (type, name or ID)
+
+service show
+------------
+
+Display service details
+
+.. program:: service show
+.. code-block:: bash
+
+ openstack service show
+ [--catalog]
+ <service>
+
+.. option:: --catalog
+
+ Show service catalog information
+
+ *Identity version 2 only*
+
+.. _service_show-service:
+.. describe:: <service>
+
+ Service to display (type, name or ID)
diff --git a/doc/source/cli/command-objects/snapshot.rst b/doc/source/cli/command-objects/snapshot.rst
new file mode 100644
index 00000000..fc516067
--- /dev/null
+++ b/doc/source/cli/command-objects/snapshot.rst
@@ -0,0 +1,176 @@
+========
+snapshot
+========
+
+Block Storage v1, v2
+
+snapshot create
+---------------
+
+Create new snapshot
+(Deprecated, please use ``volume snapshot create`` instead)
+
+.. program:: snapshot create
+.. code:: bash
+
+ openstack snapshot create
+ [--name <name>]
+ [--description <description>]
+ [--force]
+ [--property <key=value> [...] ]
+ <volume>
+
+.. option:: --name <name>
+
+ Name of the snapshot
+
+.. option:: --description <description>
+
+ Description of the snapshot
+
+.. option:: --force
+
+ Create a snapshot attached to an instance. Default is False
+
+.. option:: --property <key=value>
+
+ Set a property to this snapshot (repeat option to set multiple properties)
+
+ *Volume version 2 only*
+
+.. _snapshot_create-snapshot:
+.. describe:: <volume>
+
+ Volume to snapshot (name or ID)
+
+snapshot delete
+---------------
+
+Delete snapshot(s)
+(Deprecated, please use ``volume snapshot delete`` instead)
+
+.. program:: snapshot delete
+.. code:: bash
+
+ openstack snapshot delete
+ <snapshot> [<snapshot> ...]
+
+.. _snapshot_delete-snapshot:
+.. describe:: <snapshot>
+
+ Snapshot(s) to delete (name or ID)
+
+snapshot list
+-------------
+
+List snapshots
+(Deprecated, please use ``volume snapshot list`` instead)
+
+.. program:: snapshot list
+.. code:: bash
+
+ openstack snapshot list
+ [--all-projects]
+ [--long]
+ [--limit <num-snapshots>]
+ [--marker <snapshot>]
+
+.. option:: --all-projects
+
+ Include all projects (admin only)
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --limit <num-snapshots>
+
+ Maximum number of snapshots to display
+
+ *Volume version 2 only*
+
+.. option:: --marker <snapshot>
+
+ The last snapshot ID of the previous page
+
+ *Volume version 2 only*
+
+snapshot set
+------------
+
+Set snapshot properties
+(Deprecated, please use ``volume snapshot set`` instead)
+
+.. program:: snapshot set
+.. code:: bash
+
+ openstack snapshot set
+ [--name <name>]
+ [--description <description>]
+ [--property <key=value> [...] ]
+ [--state <state>]
+ <snapshot>
+
+.. _snapshot_restore-snapshot:
+.. option:: --name <name>
+
+ New snapshot name
+
+.. option:: --description <description>
+
+ New snapshot description
+
+.. option:: --property <key=value>
+
+ Property to add or modify for this snapshot (repeat option to set multiple properties)
+
+.. option:: --state <state>
+
+ New snapshot state.
+ ("available", "error", "creating", "deleting", or "error_deleting") (admin only)
+ (This option simply changes the state of the snapshot in the database with
+ no regard to actual status, exercise caution when using)
+
+ *Volume version 2 only*
+
+.. describe:: <snapshot>
+
+ Snapshot to modify (name or ID)
+
+snapshot show
+-------------
+
+Display snapshot details
+(Deprecated, please use ``volume snapshot show`` instead)
+
+.. program:: snapshot show
+.. code:: bash
+
+ openstack snapshot show
+ <snapshot>
+
+.. _snapshot_show-snapshot:
+.. describe:: <snapshot>
+
+ Snapshot to display (name or ID)
+
+snapshot unset
+--------------
+
+Unset snapshot properties
+(Deprecated, please use ``volume snapshot unset`` instead)
+
+.. program:: snapshot unset
+.. code:: bash
+
+ openstack snapshot unset
+ [--property <key>]
+ <snapshot>
+
+.. option:: --property <key>
+
+ Property to remove from snapshot (repeat option to remove multiple properties)
+
+.. describe:: <snapshot>
+
+ Snapshot to modify (name or ID)
diff --git a/doc/source/cli/command-objects/subnet-pool.rst b/doc/source/cli/command-objects/subnet-pool.rst
new file mode 100644
index 00000000..3a60974a
--- /dev/null
+++ b/doc/source/cli/command-objects/subnet-pool.rst
@@ -0,0 +1,269 @@
+===========
+subnet pool
+===========
+
+A **subnet pool** contains a collection of prefixes in CIDR notation
+that are available for IP address allocation.
+
+Network v2
+
+subnet pool create
+------------------
+
+Create subnet pool
+
+.. program:: subnet pool create
+.. code:: bash
+
+ openstack subnet pool create
+ [--default-prefix-length <default-prefix-length>]
+ [--min-prefix-length <min-prefix-length>]
+ [--max-prefix-length <max-prefix-length>]
+ [--description <description>]
+ [--project <project> [--project-domain <project-domain>]]
+ [--address-scope <address-scope>]
+ [--default | --no-default]
+ [--share | --no-share]
+ [--default-quota <num-ip-addresses>]
+ --pool-prefix <pool-prefix> [...]
+ <name>
+
+.. option:: --default-prefix-length <default-prefix-length>
+
+ Set subnet pool default prefix length
+
+.. option:: --min-prefix-length <min-prefix-length>
+
+ Set subnet pool minimum prefix length
+
+.. option:: --max-prefix-length <max-prefix-length>
+
+ Set subnet pool maximum prefix length
+
+.. option:: --description <description>
+
+ Set subnet pool description
+
+.. option:: --project <project>
+
+ Owner's project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID). This can be used in case
+ collisions between project names exist.
+
+.. option:: --address-scope <address-scope>
+
+ Set address scope associated with the subnet pool (name or ID),
+ prefixes must be unique across address scopes
+
+.. option:: --default
+
+ Set this as a default subnet pool
+
+.. option:: --no-default
+
+ Set this as a non-default subnet pool
+
+.. option:: --share
+
+ Set this subnet pool as shared
+
+.. option:: --no-share
+
+ Set this subnet pool as not shared
+
+.. option:: --default-quota <num-ip-addresses>
+
+ Set default quota for subnet pool as the number of
+ IP addresses allowed in a subnet
+
+.. option:: --pool-prefix <pool-prefix>
+
+ Set subnet pool prefixes (in CIDR notation)
+ (repeat option to set multiple prefixes)
+
+.. _subnet_pool_create-name:
+.. describe:: <name>
+
+ Name of the new subnet pool
+
+subnet pool delete
+------------------
+
+Delete subnet pool(s)
+
+.. program:: subnet pool delete
+.. code:: bash
+
+ openstack subnet pool delete
+ <subnet-pool> [<subnet-pool> ...]
+
+.. _subnet_pool_delete-subnet-pool:
+.. describe:: <subnet-pool>
+
+ Subnet pool(s) to delete (name or ID)
+
+subnet pool list
+----------------
+
+List subnet pools
+
+.. program:: subnet pool list
+.. code:: bash
+
+ openstack subnet pool list
+ [--long]
+ [--share | --no-share]
+ [--default | --no-default]
+ [--project <project> [--project-domain <project-domain>]]
+ [--name <name>]
+ [--address-scope <address-scope>]
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --share
+
+ List subnet pools shared between projects
+
+.. option:: --no-share
+
+ List subnet pools not shared between projects
+
+.. option:: --default
+
+ List subnet pools used as the default external subnet pool
+
+.. option:: --no-default
+
+ List subnet pools not used as the default external subnet pool
+
+.. option:: --project <project>
+
+ List subnet pools according to their project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --name <name>
+
+ List only subnet pools of given name in output
+
+.. option:: --address-scope <address-scope>
+
+ List only subnet pools of given address scope in output (name or ID)
+
+subnet pool set
+---------------
+
+Set subnet pool properties
+
+.. program:: subnet pool set
+.. code:: bash
+
+ openstack subnet pool set
+ [--name <name>]
+ [--pool-prefix <pool-prefix> [...]]
+ [--default-prefix-length <default-prefix-length>]
+ [--min-prefix-length <min-prefix-length>]
+ [--max-prefix-length <max-prefix-length>]
+ [--address-scope <address-scope> | --no-address-scope]
+ [--default | --no-default]
+ [--description <description>]
+ [--default-quota <num-ip-addresses>]
+ <subnet-pool>
+
+.. option:: --name <name>
+
+ Set subnet pool name
+
+.. option:: --pool-prefix <pool-prefix>
+
+ Set subnet pool prefixes (in CIDR notation)
+ (repeat option to set multiple prefixes)
+
+.. option:: --default-prefix-length <default-prefix-length>
+
+ Set subnet pool default prefix length
+
+.. option:: --min-prefix-length <min-prefix-length>
+
+ Set subnet pool minimum prefix length
+
+.. option:: --max-prefix-length <max-prefix-length>
+
+ Set subnet pool maximum prefix length
+
+.. option:: --address-scope <address-scope>
+
+ Set address scope associated with the subnet pool (name or ID),
+ prefixes must be unique across address scopes
+
+.. option:: --no-address-scope
+
+ Remove address scope associated with the subnet pool
+
+.. option:: --default
+
+ Set this as a default subnet pool
+
+.. option:: --no-default
+
+ Set this as a non-default subnet pool
+
+.. option:: --description <description>
+
+ Set subnet pool description
+
+.. option:: --default-quota <num-ip-addresses>
+
+ Set default quota for subnet pool as the number of
+ IP addresses allowed in a subnet
+
+.. _subnet_pool_set-subnet-pool:
+.. describe:: <subnet-pool>
+
+ Subnet pool to modify (name or ID)
+
+subnet pool show
+----------------
+
+Display subnet pool details
+
+.. program:: subnet pool show
+.. code:: bash
+
+ openstack subnet pool show
+ <subnet-pool>
+
+.. _subnet_pool_show-subnet-pool:
+.. describe:: <subnet-pool>
+
+ Subnet pool to display (name or ID)
+
+subnet pool unset
+-----------------
+
+Unset subnet pool properties
+
+.. program:: subnet pool unset
+.. code:: bash
+
+ openstack subnet pool unset
+ [--pool-prefix <pool-prefix> [...]]
+ <subnet-pool>
+
+.. option:: --pool-prefix <pool-prefix>
+
+ Remove subnet pool prefixes (in CIDR notation).
+ (repeat option to unset multiple prefixes).
+
+.. _subnet_pool_unset-subnet-pool:
+.. describe:: <subnet-pool>
+
+ Subnet pool to modify (name or ID)
diff --git a/doc/source/cli/command-objects/subnet.rst b/doc/source/cli/command-objects/subnet.rst
new file mode 100644
index 00000000..4e609361
--- /dev/null
+++ b/doc/source/cli/command-objects/subnet.rst
@@ -0,0 +1,374 @@
+======
+subnet
+======
+
+A **subnet** is a block of IP addresses and associated configuration state.
+Subnets are used to allocate IP addresses when new ports are created on a
+network.
+
+Network v2
+
+subnet create
+-------------
+
+Create new subnet
+
+.. program:: subnet create
+.. code:: bash
+
+ openstack subnet create
+ [--project <project> [--project-domain <project-domain>]]
+ [--subnet-pool <subnet-pool> | --use-default-subnet-pool [--prefix-length <prefix-length>]]
+ [--subnet-range <subnet-range>]
+ [--allocation-pool start=<ip-address>,end=<ip-address>]
+ [--dhcp | --no-dhcp]
+ [--dns-nameserver <dns-nameserver>]
+ [--gateway <gateway>]
+ [--host-route destination=<subnet>,gateway=<ip-address>]
+ [--ip-version {4,6}]
+ [--description <description>]
+ [--ipv6-ra-mode {dhcpv6-stateful,dhcpv6-stateless,slaac}]
+ [--ipv6-address-mode {dhcpv6-stateful,dhcpv6-stateless,slaac}]
+ [--network-segment <network-segment>]
+ [--service-type <service-type>]
+ --network <network>
+ <name>
+
+.. option:: --project <project>
+
+ Owner's project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --subnet-pool <subnet-pool>
+
+ Subnet pool from which this subnet will obtain a CIDR (name or ID)
+
+.. option:: --use-default-subnet-pool
+
+ Use default subnet pool for :option:`--ip-version`
+
+.. option:: --prefix-length <prefix-length>
+
+ Prefix length for subnet allocation from subnet pool
+
+.. option:: --subnet-range <subnet-range>
+
+ Subnet range in CIDR notation
+ (required if :option:`--subnet-pool` is not specified, optional otherwise)
+
+.. option:: --allocation-pool start=<ip-address>,end=<ip-address>
+
+ Allocation pool IP addresses for this subnet e.g.:
+ ``start=192.168.199.2,end=192.168.199.254``
+ (repeat option to add multiple IP addresses)
+
+.. option:: --dhcp
+
+ Enable DHCP (default)
+
+.. option:: --no-dhcp
+
+ Disable DHCP
+
+.. option:: --dns-nameserver <dns-nameserver>
+
+ DNS server for this subnet (repeat option to set multiple DNS servers)
+
+.. option:: --gateway <gateway>
+
+ Specify a gateway for the subnet. The three options are:
+ <ip-address>: Specific IP address to use as the gateway,
+ 'auto': Gateway address should automatically be chosen from
+ within the subnet itself, 'none': This subnet will not use
+ a gateway, e.g.: ``--gateway 192.168.9.1``, ``--gateway auto``,
+ ``--gateway none`` (default is 'auto').
+
+.. option:: --host-route destination=<subnet>,gateway=<ip-address>
+
+ Additional route for this subnet e.g.:
+ ``destination=10.10.0.0/16,gateway=192.168.71.254``
+ destination: destination subnet (in CIDR notation)
+ gateway: nexthop IP address
+ (repeat option to add multiple routes)
+
+.. option:: --ip-version {4,6}
+
+ IP version (default is 4). Note that when subnet pool is specified,
+ IP version is determined from the subnet pool and this option
+ is ignored.
+
+.. option:: --description <description>
+
+ Set subnet description
+
+.. option:: --ipv6-ra-mode {dhcpv6-stateful,dhcpv6-stateless,slaac}
+
+ IPv6 RA (Router Advertisement) mode,
+ valid modes: [dhcpv6-stateful, dhcpv6-stateless, slaac]
+
+.. option:: --ipv6-address-mode {dhcpv6-stateful,dhcpv6-stateless,slaac}
+
+ IPv6 address mode, valid modes: [dhcpv6-stateful, dhcpv6-stateless, slaac]
+
+.. option:: --network-segment <network-segment>
+
+ Network segment to associate with this subnet (name or ID)
+
+.. option:: --service-type <service-type>
+
+ Service type for this subnet e.g.:
+ ``network:floatingip_agent_gateway``.
+ Must be a valid device owner value for a network port
+ (repeat option to set multiple service types)
+
+.. option:: --network <network>
+
+ Network this subnet belongs to (name or ID)
+
+.. _subnet_create-name:
+.. describe:: <name>
+
+ Name of subnet to create
+
+subnet delete
+-------------
+
+Delete subnet(s)
+
+.. program:: subnet delete
+.. code:: bash
+
+ openstack subnet delete
+ <subnet> [<subnet> ...]
+
+.. _subnet_delete-subnet:
+.. describe:: <subnet>
+
+ Subnet(s) to delete (name or ID)
+
+subnet list
+-----------
+
+List subnets
+
+.. program:: subnet list
+.. code:: bash
+
+ openstack subnet list
+ [--long]
+ [--ip-version {4,6}]
+ [--dhcp | --no-dhcp]
+ [--project <project> [--project-domain <project-domain>]]
+ [--network <network>]
+ [--gateway <gateway>]
+ [--name <name>]
+ [--subnet-range <subnet-range>]
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --ip-version {4, 6}
+
+ List only subnets of given IP version in output.
+ Allowed values for IP version are 4 and 6.
+
+.. option:: --dhcp
+
+ List subnets which have DHCP enabled
+
+.. option:: --no-dhcp
+
+ List subnets which have DHCP disabled
+
+.. option:: --service-type <service-type>
+
+ List only subnets of a given service type in output
+ e.g.: ``network:floatingip_agent_gateway``.
+ Must be a valid device owner value for a network port
+ (repeat option to list multiple service types)
+
+.. option:: --project <project>
+
+ List only subnets which belong to a given project in output (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --network <network>
+
+ List only subnets which belong to a given network in output (name or ID)
+
+.. option:: --gateway <gateway>
+
+ List only subnets of given gateway IP in output
+
+.. option:: --name <name>
+
+ List only subnets of given name in output
+
+.. option:: --subnet-range <subnet-range>
+
+ List only subnets of given subnet range (in CIDR notation) in output
+ e.g.: ``--subnet-range 10.10.0.0/16``
+
+subnet set
+----------
+
+Set subnet properties
+
+.. program:: subnet set
+.. code:: bash
+
+ openstack subnet set
+ [--allocation-pool start=<ip-address>,end=<ip-address>]
+ [--no-allocation-pool]
+ [--dhcp | --no-dhcp]
+ [--dns-nameserver <dns-nameserver>]
+ [--no-dns-nameserver]
+ [--gateway <gateway-ip>]
+ [--host-route destination=<subnet>,gateway=<ip-address>]
+ [--no-host-route]
+ [--service-type <service-type>]
+ [--name <new-name>]
+ [--description <description>]
+ <subnet>
+
+.. option:: --allocation-pool start=<ip-address>,end=<ip-address>
+
+ Allocation pool IP addresses for this subnet e.g.:
+ ``start=192.168.199.2,end=192.168.199.254``
+ (repeat option to add multiple IP addresses)
+
+.. option:: --no-allocation-pool
+
+ Clear associated allocation pools from this subnet.
+ Specify both :option:`--allocation-pool` and :option:`--no-allocation-pool`
+ to overwrite the current allocation pool information.
+
+.. option:: --dhcp
+
+ Enable DHCP
+
+.. option:: --no-dhcp
+
+ Disable DHCP
+
+.. option:: --dns-nameserver <dns-nameserver>
+
+ DNS server for this subnet (repeat option to set multiple DNS servers)
+
+.. option:: --no-dns-nameservers
+
+ Clear existing information of DNS servers.
+ Specify both :option:`--dns-nameserver` and :option:`--no-dns-nameservers`
+ to overwrite the current DNS server information.
+
+.. option:: --gateway <gateway>
+
+ Specify a gateway for the subnet. The options are:
+ <ip-address>: Specific IP address to use as the gateway,
+ 'none': This subnet will not use a gateway,
+ e.g.: ``--gateway 192.168.9.1``, ``--gateway none``.
+
+.. option:: --host-route destination=<subnet>,gateway=<ip-address>
+
+ Additional route for this subnet e.g.:
+ ``destination=10.10.0.0/16,gateway=192.168.71.254``
+ destination: destination subnet (in CIDR notation)
+ gateway: nexthop IP address
+
+.. option:: --no-host-route
+
+ Clear associated host routes from this subnet.
+ Specify both :option:`--host-route` and :option:`--no-host-route`
+ to overwrite the current host route information.
+
+.. option:: --service-type <service-type>
+
+ Service type for this subnet e.g.:
+ ``network:floatingip_agent_gateway``.
+ Must be a valid device owner value for a network port
+ (repeat option to set multiple service types)
+
+.. option:: --description <description>
+
+ Set subnet description
+
+.. option:: --name
+
+ Updated name of the subnet
+
+.. _subnet_set-subnet:
+.. describe:: <subnet>
+
+ Subnet to modify (name or ID)
+
+
+subnet show
+-----------
+
+Display subnet details
+
+.. program:: subnet show
+.. code:: bash
+
+ openstack subnet show
+ <subnet>
+
+.. _subnet_show-subnet:
+.. describe:: <subnet>
+
+ Subnet to display (name or ID)
+
+subnet unset
+------------
+
+Unset subnet properties
+
+.. program:: subnet unset
+.. code:: bash
+
+ openstack subnet unset
+ [--allocation-pool start=<ip-address>,end=<ip-address> [...]]
+ [--dns-nameserver <dns-nameserver> [...]]
+ [--host-route destination=<subnet>,gateway=<ip-address> [...]]
+ [--service-type <service-type>]
+ <subnet>
+
+.. option:: --dns-nameserver <dns-nameserver>
+
+ DNS server to be removed from this subnet
+ (repeat option to unset multiple DNS servers)
+
+.. option:: --allocation-pool start=<ip-address>,end=<ip-address>
+
+ Allocation pool IP addresses to be removed from this
+ subnet e.g.: ``start=192.168.199.2,end=192.168.199.254``
+ (repeat option to unset multiple allocation pools)
+
+.. option:: --host-route destination=<subnet>,gateway=<ip-address>
+
+ Route to be removed from this subnet e.g.:
+ ``destination=10.10.0.0/16,gateway=192.168.71.254``
+ destination: destination subnet (in CIDR notation)
+ gateway: nexthop IP address
+ (repeat option to unset multiple host routes)
+
+.. option:: --service-type <service-type>
+
+ Service type to be removed from this subnet e.g.:
+ ``network:floatingip_agent_gateway``.
+ Must be a valid device owner value for a network port
+ (repeat option to unset multiple service types)
+
+.. _subnet_unset-subnet:
+.. describe:: <subnet>
+
+ Subnet to modify (name or ID)
diff --git a/doc/source/cli/command-objects/token.rst b/doc/source/cli/command-objects/token.rst
new file mode 100644
index 00000000..b4b14cd9
--- /dev/null
+++ b/doc/source/cli/command-objects/token.rst
@@ -0,0 +1,30 @@
+=====
+token
+=====
+
+Identity v2, v3
+
+token issue
+-----------
+
+Issue new token
+
+.. program:: token issue
+.. code:: bash
+
+ openstack token issue
+
+token revoke
+------------
+
+Revoke existing token
+
+.. program:: token revoke
+.. code:: bash
+
+ openstack token revoke
+ <token>
+
+.. describe:: <token>
+
+ Token to be deleted
diff --git a/doc/source/cli/command-objects/trust.rst b/doc/source/cli/command-objects/trust.rst
new file mode 100644
index 00000000..28459bca
--- /dev/null
+++ b/doc/source/cli/command-objects/trust.rst
@@ -0,0 +1,102 @@
+=====
+trust
+=====
+
+Identity v3
+
+trust create
+------------
+
+Create new trust
+
+.. program:: trust create
+.. code:: bash
+
+ openstack trust create
+ --project <project>
+ --role <role>
+ [--impersonate]
+ [--expiration <expiration>]
+ [--project-domain <domain>]
+ [--trustor-domain <domain>]
+ [--trustee-domain <domain>]
+ <trustor>
+ <trustee>
+
+.. option:: --project <project>
+
+ Project being delegated (name or ID) (required)
+
+.. option:: --role <role>
+
+ Roles to authorize (name or ID) (repeat option to set multiple values, required)
+
+.. option:: --impersonate
+
+ Tokens generated from the trust will represent <trustor> (defaults to False)
+
+.. option:: --expiration <expiration>
+
+ Sets an expiration date for the trust (format of YYYY-mm-ddTHH:MM:SS)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID). This can be
+ used in case collisions between user names exist.
+
+.. option:: --trustor-domain <trustor-domain>
+
+ Domain that contains <trustor> (name or ID)
+
+.. option:: --trustee-domain <trustee-domain>
+
+ Domain that contains <trustee> (name or ID)
+
+.. describe:: <trustor-user>
+
+ User that is delegating authorization (name or ID)
+
+.. describe:: <trustee-user>
+
+ User that is assuming authorization (name or ID)
+
+
+trust delete
+------------
+
+Delete trust(s)
+
+.. program:: trust delete
+.. code:: bash
+
+ openstack trust delete
+ <trust> [<trust> ...]
+
+.. describe:: <trust>
+
+ Trust(s) to delete
+
+trust list
+----------
+
+List trusts
+
+.. program:: trust list
+.. code:: bash
+
+ openstack trust list
+
+trust show
+----------
+
+Display trust details
+
+.. program:: trust show
+.. code:: bash
+
+ openstack trust show
+ <trust>
+
+.. describe:: <trust>
+
+ Trust to display
diff --git a/doc/source/cli/command-objects/usage.rst b/doc/source/cli/command-objects/usage.rst
new file mode 100644
index 00000000..9cd0f70e
--- /dev/null
+++ b/doc/source/cli/command-objects/usage.rst
@@ -0,0 +1,50 @@
+=====
+usage
+=====
+
+Compute v2
+
+usage list
+----------
+
+List resource usage per project
+
+.. program:: usage list
+.. code:: bash
+
+ openstack usage list
+ [--start <start>]
+ [--end <end>]
+
+.. option:: --start <start>
+
+ Usage range start date, ex 2012-01-20 (default: 4 weeks ago)
+
+.. option:: --end <end>
+
+ Usage range end date, ex 2012-01-20 (default: tomorrow)
+
+usage show
+----------
+
+Show resource usage for a single project
+
+.. program:: usage show
+.. code:: bash
+
+ openstack usage show
+ [--project <project>]
+ [--start <start>]
+ [--end <end>]
+
+.. option:: --project <project>
+
+ Name or ID of project to show usage for
+
+.. option:: --start <start>
+
+ Usage range start date, ex 2012-01-20 (default: 4 weeks ago)
+
+.. option:: --end <end>
+
+ Usage range end date, ex 2012-01-20 (default: tomorrow)
diff --git a/doc/source/cli/command-objects/user-role.rst b/doc/source/cli/command-objects/user-role.rst
new file mode 100644
index 00000000..4f443f31
--- /dev/null
+++ b/doc/source/cli/command-objects/user-role.rst
@@ -0,0 +1,27 @@
+=========
+user role
+=========
+
+Identity v2
+
+user role list
+--------------
+
+List user-role assignments
+
+*Removed in version 3.*
+
+.. program:: user role list
+.. code:: bash
+
+ openstack user role list
+ [--project <project>]
+ [<user>]
+
+.. option:: --project <project>
+
+ Filter users by `<project>` (name or ID)
+
+.. describe:: <user>
+
+ User to list (name or ID)
diff --git a/doc/source/cli/command-objects/user.rst b/doc/source/cli/command-objects/user.rst
new file mode 100644
index 00000000..632d0e25
--- /dev/null
+++ b/doc/source/cli/command-objects/user.rst
@@ -0,0 +1,223 @@
+====
+user
+====
+
+Identity v2, v3
+
+user create
+-----------
+
+Create new user
+
+.. program:: user create
+.. code:: bash
+
+ openstack user create
+ [--domain <domain>]
+ [--project <project> [--project-domain <project-domain>]]
+ [--password <password>]
+ [--password-prompt]
+ [--email <email-address>]
+ [--description <description>]
+ [--enable | --disable]
+ [--or-show]
+ <user-name>
+
+.. option:: --domain <domain>
+
+ Default domain (name or ID)
+
+ .. versionadded:: 3
+
+.. option:: --project <project>
+
+ Default project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --password <password>
+
+ Set user password
+
+.. option:: --password-prompt
+
+ Prompt interactively for password
+
+.. option:: --email <email-address>
+
+ Set user email address
+
+.. option:: --description <description>
+
+ User description
+
+ .. versionadded:: 3
+
+.. option:: --enable
+
+ Enable user (default)
+
+.. option:: --disable
+
+ Disable user
+
+.. option:: --or-show
+
+ Return existing user
+
+ If the username already exist return the existing user data and do not fail.
+
+.. describe:: <user-name>
+
+ New user name
+
+user delete
+-----------
+
+Delete user(s)
+
+.. program:: user delete
+.. code:: bash
+
+ openstack user delete
+ [--domain <domain>]
+ <user> [<user> ...]
+
+.. option:: --domain <domain>
+
+ Domain owning :ref:`\<user\> <user_delete-user>` (name or ID)
+
+ .. versionadded:: 3
+
+.. _user_delete-user:
+.. describe:: <user>
+
+ User(s) to delete (name or ID)
+
+user list
+---------
+
+List users
+
+.. program:: user list
+.. code:: bash
+
+ openstack user list
+ [--project <project>]
+ [--domain <domain>]
+ [--group <group> | --project <project>]
+ [--long]
+
+.. option:: --project <project>
+
+ Filter users by `<project>` (name or ID)
+
+.. option:: --domain <domain>
+
+ Filter users by `<domain>` (name or ID)
+
+ *Identity version 3 only*
+
+.. option:: --group <group>
+
+ Filter users by `<group>` membership (name or ID)
+
+ *Identity version 3 only*
+
+.. option:: --long
+
+ List additional fields in output
+
+user set
+--------
+
+Set user properties
+
+.. program:: user set
+.. code:: bash
+
+ openstack user set
+ [--name <name>]
+ [--project <project> [--project-domain <project-domain>]]
+ [--password <password>]
+ [--password-prompt]
+ [--email <email-address>]
+ [--description <description>]
+ [--enable|--disable]
+ <user>
+
+.. option:: --name <name>
+
+ Set user name
+
+.. option:: --domain <domain>
+
+ Domain the user belongs to (name or ID).
+ This can be used in case collisions between user names exist.
+
+ .. versionadded:: 3
+
+.. option:: --project <project>
+
+ Set default project (name or ID)
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --password <password>
+
+ Set user password
+
+.. option:: --password-prompt
+
+ Prompt interactively for password
+
+.. option:: --email <email-address>
+
+ Set user email address
+
+.. option:: --description <description>
+
+ Set user description
+
+ .. versionadded:: 3
+
+.. option:: --enable
+
+ Enable user (default)
+
+.. option:: --disable
+
+ Disable user
+
+.. describe:: <user>
+
+ User to modify (name or ID)
+
+user show
+---------
+
+Display user details
+
+.. program:: user show
+.. code:: bash
+
+ openstack user show
+ [--domain <domain>]
+ <user>
+
+.. option:: --domain <domain>
+
+ Domain owning :ref:`\<user\> <user_show-user>` (name or ID)
+
+ .. versionadded:: 3
+
+.. _user_show-user:
+.. describe:: <user>
+
+ User to display (name or ID)
diff --git a/doc/source/cli/command-objects/volume-backup.rst b/doc/source/cli/command-objects/volume-backup.rst
new file mode 100644
index 00000000..585f47d4
--- /dev/null
+++ b/doc/source/cli/command-objects/volume-backup.rst
@@ -0,0 +1,201 @@
+=============
+volume backup
+=============
+
+Block Storage v1, v2
+
+volume backup create
+--------------------
+
+Create new volume backup
+
+.. program:: volume backup create
+.. code:: bash
+
+ openstack volume backup create
+ [--container <container>]
+ [--name <name>]
+ [--description <description>]
+ [--snapshot <snapshot>]
+ [--force]
+ [--incremental]
+ <volume>
+
+.. option:: --container <container>
+
+ Optional backup container name
+
+.. option:: --name <name>
+
+ Name of the backup
+
+.. option:: --description <description>
+
+ Description of the backup
+
+.. option:: --snapshot <snapshot>
+
+ Snapshot to backup (name or ID)
+
+ *Volume version 2 only*
+
+.. option:: --force
+
+ Allow to back up an in-use volume
+
+ *Volume version 2 only*
+
+.. option:: --incremental
+
+ Perform an incremental backup
+
+ *Volume version 2 only*
+
+.. _volume_backup_create-backup:
+.. describe:: <volume>
+
+ Volume to backup (name or ID)
+
+volume backup delete
+--------------------
+
+Delete volume backup(s)
+
+.. program:: volume backup delete
+.. code:: bash
+
+ openstack volume backup delete
+ [--force]
+ <backup> [<backup> ...]
+
+.. option:: --force
+
+ Allow delete in state other than error or available
+
+ *Volume version 2 only*
+
+.. _volume_backup_delete-backup:
+.. describe:: <backup>
+
+ Backup(s) to delete (name or ID)
+
+volume backup list
+------------------
+
+List volume backups
+
+.. program:: volume backup list
+.. code:: bash
+
+ openstack volume backup list
+ [--long]
+ [--name <name>]
+ [--status <status>]
+ [--volume <volume>]
+ [--marker <volume-backup>]
+ [--limit <num-backups>]
+ [--all-projects]
+
+.. _volume_backup_list-backup:
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --name <name>
+
+ Filters results by the backup name
+
+.. option:: --status <status>
+
+ Filters results by the backup status
+ ('creating', 'available', 'deleting', 'error', 'restoring' or 'error_restoring')
+
+.. option:: --volume <volume>
+
+ Filters results by the volume which they backup (name or ID)"
+
+.. option:: --marker <volume-backup>
+
+ The last backup of the previous page (name or ID)
+
+ *Volume version 2 only*
+
+.. option:: --limit <num-backups>
+
+ Maximum number of backups to display
+
+ *Volume version 2 only*
+
+.. option:: --all-projects
+
+ Include all projects (admin only)
+
+volume backup restore
+---------------------
+
+Restore volume backup
+
+.. program:: volume backup restore
+.. code:: bash
+
+ openstack volume backup restore
+ <backup>
+ <volume>
+
+.. _volume_backup_restore-backup:
+.. describe:: <backup>
+
+ Backup to restore (name or ID)
+
+.. describe:: <volume>
+
+ Volume to restore to (name or ID)
+
+volume backup set
+-----------------
+
+Set volume backup properties
+
+.. program:: volume backup set
+.. code:: bash
+
+ openstack volume backup set
+ [--name <name>]
+ [--description <description>]
+ [--state <state>]
+ <backup>
+
+.. option:: --name <name>
+
+ New backup name
+
+.. option:: --description <description>
+
+ New backup description
+
+.. option:: --state <state>
+
+ New backup state ("available" or "error") (admin only)
+ (This option simply changes the state of the backup in the database with
+ no regard to actual status, exercise caution when using)
+
+.. _backup_set-volume-backup:
+.. describe:: <backup>
+
+ Backup to modify (name or ID)
+
+volume backup show
+------------------
+
+Display volume backup details
+
+.. program:: volume backup show
+.. code:: bash
+
+ openstack volume backup show
+ <backup>
+
+.. _volume_backup_show-backup:
+.. describe:: <backup>
+
+ Backup to display (name or ID)
diff --git a/doc/source/cli/command-objects/volume-host.rst b/doc/source/cli/command-objects/volume-host.rst
new file mode 100644
index 00000000..1e513cb7
--- /dev/null
+++ b/doc/source/cli/command-objects/volume-host.rst
@@ -0,0 +1,52 @@
+===========
+volume host
+===========
+
+Volume v2
+
+volume host failover
+--------------------
+
+Failover volume host to different backend
+
+.. program:: volume host failover
+.. code:: bash
+
+ openstack volume host failover
+ --volume-backend <backend-id>
+ <host-name>
+
+.. option:: --volume-backend <backend-id>
+
+ The ID of the volume backend replication
+ target where the host will failover to (required)
+
+.. _volume_host_failover-host-name:
+.. describe:: <host-name>
+
+ Name of volume host
+
+volume host set
+---------------
+
+Set volume host properties
+
+.. program:: volume host set
+.. code:: bash
+
+ openstack volume host set
+ [--enable | --disable]
+ <host-name>
+
+.. option:: --enable
+
+ Thaw and enable the specified volume host.
+
+.. option:: --disable
+
+ Freeze and disable the specified volume host
+
+.. _volume_host_set-host-name:
+.. describe:: <host-name>
+
+ Name of volume host
diff --git a/doc/source/cli/command-objects/volume-qos.rst b/doc/source/cli/command-objects/volume-qos.rst
new file mode 100644
index 00000000..8fdbc122
--- /dev/null
+++ b/doc/source/cli/command-objects/volume-qos.rst
@@ -0,0 +1,166 @@
+==========
+volume qos
+==========
+
+Block Storage v1, v2
+
+volume qos associate
+--------------------
+
+Associate a QoS specification to a volume type
+
+.. program:: volume qos associate
+.. code:: bash
+
+ openstack volume qos associate
+ <qos-spec>
+ <volume-type>
+
+.. _volume_qos_associate:
+.. describe:: <qos-spec>
+
+ QoS specification to modify (name or ID)
+
+.. describe:: <volume-type>
+
+ Volume type to associate the QoS (name or ID)
+
+volume qos create
+-----------------
+
+Create new QoS Specification
+
+.. program:: volume qos create
+.. code:: bash
+
+ openstack volume qos create
+ [--consumer <consumer>]
+ [--property <key=value> [...] ]
+ <name>
+
+.. option:: --consumer <consumer>
+
+ Consumer of the QoS. Valid consumers: 'front-end', 'back-end', 'both' (defaults to 'both')
+
+.. option:: --property <key=value>
+
+ Set a property on this QoS specification (repeat option to set multiple properties)
+
+.. _volume_qos_create-name:
+.. describe:: <name>
+
+ New QoS specification name
+
+volume qos delete
+-----------------
+
+Delete QoS specification
+
+.. program:: volume qos delete
+.. code:: bash
+
+ openstack volume qos delete
+ [--force]
+ <qos-spec> [<qos-spec> ...]
+
+.. option:: --force
+
+ Allow to delete in-use QoS specification(s)
+
+.. _volume_qos_delete-qos-spec:
+.. describe:: <qos-spec>
+
+ QoS specification(s) to delete (name or ID)
+
+volume qos disassociate
+-----------------------
+
+Disassociate a QoS specification from a volume type
+
+.. program:: volume qos disassociate
+.. code:: bash
+
+ openstack volume qos disassociate
+ --volume-type <volume-type> | --all
+ <qos-spec>
+
+.. option:: --volume-type <volume-type>
+
+ Volume type to disassociate the QoS from (name or ID)
+
+.. option:: --all
+
+ Disassociate the QoS from every volume type
+
+.. _volume_qos_disassociate-qos-spec:
+.. describe:: <qos-spec>
+
+ QoS specification to modify (name or ID)
+
+volume qos list
+---------------
+
+List QoS specifications
+
+.. program:: volume qos list
+.. code:: bash
+
+ openstack volume qos list
+
+volume qos set
+--------------
+
+Set QoS specification properties
+
+.. program:: volume qos set
+.. code:: bash
+
+ openstack volume qos set
+ [--property <key=value> [...] ]
+ <qos-spec>
+
+.. option:: --property <key=value>
+
+ Property to add or modify for this QoS specification (repeat option to set multiple properties)
+
+.. _volume_qos_set-qos-spec:
+.. describe:: <qos-spec>
+
+ QoS specification to modify (name or ID)
+
+volume qos show
+---------------
+
+Display QoS specification details
+
+.. program:: volume qos show
+.. code:: bash
+
+ openstack volume qos show
+ <qos-spec>
+
+.. _volume_qos_show-qos-spec:
+.. describe:: <qos-spec>
+
+ QoS specification to display (name or ID)
+
+volume qos unset
+----------------
+
+Unset QoS specification properties
+
+.. program:: volume qos unset
+.. code:: bash
+
+ openstack volume qos unset
+ [--property <key> [...] ]
+ <qos-spec>
+
+.. option:: --property <key>
+
+ Property to remove from QoS specification (repeat option to remove multiple properties)
+
+.. _volume_qos_unset-qos-spec:
+.. describe:: <qos-spec>
+
+ QoS specification to modify (name or ID)
diff --git a/doc/source/cli/command-objects/volume-service.rst b/doc/source/cli/command-objects/volume-service.rst
new file mode 100644
index 00000000..2ad23240
--- /dev/null
+++ b/doc/source/cli/command-objects/volume-service.rst
@@ -0,0 +1,66 @@
+==============
+volume service
+==============
+
+Volume v1, v2
+
+volume service list
+-------------------
+
+List volume service
+
+.. program:: volume service list
+.. code:: bash
+
+ openstack volume service list
+ [--host <host>]
+ [--service <service>]
+ [--long]
+
+.. option:: --host <host>
+
+ List services on specified host (name only)
+
+.. option:: --service <service>
+
+ List only specified service (name only)
+
+.. option:: --long
+
+ List additional fields in output
+
+volume service set
+------------------
+
+Set volume service properties
+
+.. program:: volume service set
+.. code:: bash
+
+ openstack volume service set
+ [--enable | --disable]
+ [--disable-reason <reason>]
+ <host>
+ <service>
+
+.. option:: --enable
+
+ Enable volume service
+
+.. option:: --disable
+
+ Disable volume service
+
+.. option:: --disable-reason <reason>
+
+ Reason for disabling the service
+ (should be used with :option:`--disable` option)
+
+.. _volume_service_set-host:
+.. describe:: <host>
+
+ Name of host
+
+.. describe:: <service>
+
+ Name of service (Binary name)
diff --git a/doc/source/cli/command-objects/volume-snapshot.rst b/doc/source/cli/command-objects/volume-snapshot.rst
new file mode 100644
index 00000000..30cc77cc
--- /dev/null
+++ b/doc/source/cli/command-objects/volume-snapshot.rst
@@ -0,0 +1,223 @@
+===============
+volume snapshot
+===============
+
+Block Storage v1, v2
+
+volume snapshot create
+----------------------
+
+Create new volume snapshot
+
+.. program:: volume snapshot create
+.. code:: bash
+
+ openstack volume snapshot create
+ [--volume <volume>]
+ [--description <description>]
+ [--force]
+ [--property <key=value> [...] ]
+ [--remote-source <key=value> [...]]
+ <snapshot-name>
+
+.. option:: --volume <volume>
+
+ Volume to snapshot (name or ID) (default is <snapshot-name>)
+
+.. option:: --description <description>
+
+ Description of the snapshot
+
+.. option:: --force
+
+ Create a snapshot attached to an instance. Default is False
+
+.. option:: --property <key=value>
+
+ Set a property to this snapshot (repeat option to set multiple properties)
+
+ *Volume version 2 only*
+
+.. option:: --remote-source <key=value>
+
+ The attribute(s) of the exsiting remote volume snapshot
+ (admin required) (repeat option to specify multiple attributes)
+ e.g.: '--remote-source source-name=test_name --remote-source source-id=test_id'
+
+ *Volume version 2 only*
+
+.. _volume_snapshot_create-snapshot-name:
+.. describe:: <snapshot-name>
+
+ Name of the new snapshot
+
+volume snapshot delete
+----------------------
+
+Delete volume snapshot(s)
+
+.. program:: volume snapshot delete
+.. code:: bash
+
+ openstack volume snapshot delete
+ [--force]
+ <snapshot> [<snapshot> ...]
+
+.. option:: --force
+
+ Attempt forced removal of snapshot(s), regardless of state (defaults to False)
+
+.. _volume_snapshot_delete-snapshot:
+.. describe:: <snapshot>
+
+ Snapshot(s) to delete (name or ID)
+
+volume snapshot list
+--------------------
+
+List volume snapshots
+
+.. program:: volume snapshot list
+.. code:: bash
+
+ openstack volume snapshot list
+ [--all-projects]
+ [--project <project> [--project-domain <project-domain>]]
+ [--long]
+ [--limit <num-snapshots>]
+ [--marker <snapshot>]
+ [--name <name>]
+ [--status <status>]
+ [--volume <volume>]
+
+.. option:: --all-projects
+
+ Include all projects (admin only)
+
+.. option:: --project <project>
+
+ Filter results by project (name or ID) (admin only)
+
+ *Volume version 2 only*
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+
+ This can be used in case collisions between project names exist.
+
+ *Volume version 2 only*
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --status <status>
+
+ Filters results by a status.
+ ('available', 'error', 'creating', 'deleting' or 'error-deleting')
+
+.. option:: --name <name>
+
+ Filters results by a name.
+
+.. option:: --volume <volume>
+
+ Filters results by a volume (name or ID).
+
+.. option:: --limit <num-snapshots>
+
+ Maximum number of snapshots to display
+
+ *Volume version 2 only*
+
+.. option:: --marker <snapshot>
+
+ The last snapshot ID of the previous page
+
+ *Volume version 2 only*
+
+volume snapshot set
+-------------------
+
+Set volume snapshot properties
+
+.. program:: volume snapshot set
+.. code:: bash
+
+ openstack volume snapshot set
+ [--name <name>]
+ [--description <description>]
+ [--no-property]
+ [--property <key=value> [...] ]
+ [--state <state>]
+ <snapshot>
+
+.. option:: --name <name>
+
+ New snapshot name
+
+.. option:: --description <description>
+
+ New snapshot description
+
+.. option:: --no-property
+
+ Remove all properties from :ref:`\<snapshot\> <volume_snapshot_set-snapshot>`
+ (specify both :option:`--no-property` and :option:`--property` to
+ remove the current properties before setting new properties.)
+
+.. option:: --property <key=value>
+
+ Property to add or modify for this snapshot (repeat option to set multiple properties)
+
+.. option:: --state <state>
+
+ New snapshot state.
+ ("available", "error", "creating", "deleting", or "error_deleting") (admin only)
+ (This option simply changes the state of the snapshot in the database with
+ no regard to actual status, exercise caution when using)
+
+ *Volume version 2 only*
+
+.. _volume_snapshot_set-snapshot:
+.. describe:: <snapshot>
+
+ Snapshot to modify (name or ID)
+
+volume snapshot show
+--------------------
+
+Display volume snapshot details
+
+.. program:: volume snapshot show
+.. code:: bash
+
+ openstack volume snapshot show
+ <snapshot>
+
+.. _volume_snapshot_show-snapshot:
+.. describe:: <snapshot>
+
+ Snapshot to display (name or ID)
+
+volume snapshot unset
+---------------------
+
+Unset volume snapshot properties
+
+.. program:: volume snapshot unset
+.. code:: bash
+
+ openstack volume snapshot unset
+ [--property <key>]
+ <snapshot>
+
+.. option:: --property <key>
+
+ Property to remove from snapshot (repeat option to remove multiple properties)
+
+.. _volume_snapshot_unset-snapshot:
+.. describe:: <snapshot>
+
+ Snapshot to modify (name or ID)
diff --git a/doc/source/cli/command-objects/volume-transfer-request.rst b/doc/source/cli/command-objects/volume-transfer-request.rst
new file mode 100644
index 00000000..23cd3d3e
--- /dev/null
+++ b/doc/source/cli/command-objects/volume-transfer-request.rst
@@ -0,0 +1,96 @@
+=======================
+volume transfer request
+=======================
+
+Block Storage v1, v2
+
+volume transfer request accept
+------------------------------
+
+Accept volume transfer request
+
+.. program:: volume transfer request accept
+.. code:: bash
+
+ openstack volume transfer request accept
+ --auth-key <key>
+ <transfer-request-id>
+
+.. option:: --auth-key <key>
+
+ Volume transfer request authentication key
+
+.. _volume_transfer_request_accept:
+.. describe:: <transfer-request-id>
+
+ Volume transfer request to accept (ID only)
+
+ Non-admin users are only able to specify the transfer request by ID.
+
+volume transfer request create
+------------------------------
+
+Create volume transfer request
+
+.. program:: volume transfer request create
+.. code:: bash
+
+ openstack volume transfer request create
+ [--name <name>]
+ <volume>
+
+.. option:: --name <name>
+
+ New transfer request name (default to None)
+
+.. _volume_transfer_request_create-volume:
+.. describe:: <volume>
+
+ Volume to transfer (name or ID)
+
+volume transfer request delete
+------------------------------
+
+Delete volume transfer request(s)
+
+.. program:: volume transfer request delete
+.. code:: bash
+
+ openstack volume transfer request delete
+ <transfer-request> [<transfer-request> ...]
+
+.. _volume_transfer_request_delete-transfer-request:
+.. describe:: <transfer-request>
+
+ Volume transfer request(s) to delete (name or ID)
+
+volume transfer request list
+----------------------------
+
+Lists all volume transfer requests
+
+.. program:: volume transfer request list
+.. code:: bash
+
+ openstack volume transfer request list
+ --all-projects
+
+.. option:: --all-projects
+
+ Include all projects (admin only)
+
+volume transfer request show
+----------------------------
+
+Show volume transfer request details
+
+.. program:: volume transfer request show
+.. code:: bash
+
+ openstack volume transfer request show
+ <transfer-request>
+
+.. _volume_transfer_request_show-transfer-request:
+.. describe:: <transfer-request>
+
+ Volume transfer request to display (name or ID)
diff --git a/doc/source/cli/command-objects/volume-type.rst b/doc/source/cli/command-objects/volume-type.rst
new file mode 100644
index 00000000..afa293d7
--- /dev/null
+++ b/doc/source/cli/command-objects/volume-type.rst
@@ -0,0 +1,291 @@
+===========
+volume type
+===========
+
+Block Storage v1, v2
+
+volume type create
+------------------
+
+Create new volume type
+
+.. program:: volume type create
+.. code:: bash
+
+ openstack volume type create
+ [--description <description>]
+ [--public | --private]
+ [--property <key=value> [...] ]
+ [--project <project>]
+ [--project-domain <project-domain>]
+ [--encryption-provider <provider>]
+ [--encryption-cipher <cipher>]
+ [--encryption-key-size <key-size>]
+ [--encryption-control-location <control-location>]
+ <name>
+
+.. option:: --description <description>
+
+ Volume type description
+
+ .. versionadded:: 2
+
+.. option:: --public
+
+ Volume type is accessible to the public
+
+ .. versionadded:: 2
+
+.. option:: --private
+
+ Volume type is not accessible to the public
+
+ .. versionadded:: 2
+
+.. option:: --property <key=value>
+
+ Set a property on this volume type (repeat option to set multiple properties)
+
+.. option:: --project <project>
+
+ Allow <project> to access private type (name or ID)
+ (Must be used with :option:`--private` option)
+
+ *Volume version 2 only*
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ *Volume version 2 only*
+
+.. option:: --encryption-provider <provider>
+
+ Set the class that provides encryption support for this volume type
+ (e.g "LuksEncryptor") (admin only)
+
+ This option is required when setting encryption type of a volume.
+ Consider using other encryption options such as: :option:`--encryption-cipher`,
+ :option:`--encryption-key-size` and :option:`--encryption-control-location`
+
+.. option:: --encryption-cipher <cipher>
+
+ Set the encryption algorithm or mode for this volume type
+ (e.g "aes-xts-plain64") (admin only)
+
+.. option:: --encryption-key-size <key-size>
+
+ Set the size of the encryption key of this volume type
+ (e.g "128" or "256") (admin only)
+
+.. option:: --encryption-control-location <control-location>
+
+ Set the notional service where the encryption is performed
+ ("front-end" or "back-end") (admin only)
+
+ The default value for this option is "front-end" when setting encryption type of
+ a volume. Consider using other encryption options such as: :option:`--encryption-cipher`,
+ :option:`--encryption-key-size` and :option:`--encryption-provider`
+
+.. _volume_type_create-name:
+.. describe:: <name>
+
+ Volume type name
+
+volume type delete
+------------------
+
+Delete volume type(s)
+
+.. program:: volume type delete
+.. code:: bash
+
+ openstack volume type delete
+ <volume-type> [<volume-type> ...]
+
+.. _volume_type_delete-volume-type:
+.. describe:: <volume-type>
+
+ Volume type(s) to delete (name or ID)
+
+volume type list
+----------------
+
+List volume types
+
+.. program:: volume type list
+.. code:: bash
+
+ openstack volume type list
+ [--long]
+ [--default | --public | --private]
+ [--encryption-type]
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --public
+
+ List only public types
+
+ *Volume version 2 only*
+
+.. option:: --private
+
+ List only private types (admin only)
+
+ *Volume version 2 only*
+
+.. option:: --default
+
+ List the default volume type
+
+ *Volume version 2 only*
+
+.. option:: --encryption-type
+
+ Display encryption information for each volume type (admin only)
+
+volume type set
+---------------
+
+Set volume type properties
+
+.. program:: volume type set
+.. code:: bash
+
+ openstack volume type set
+ [--name <name>]
+ [--description <description>]
+ [--property <key=value> [...] ]
+ [--project <project>]
+ [--project-domain <project-domain>]
+ [--encryption-provider <provider>]
+ [--encryption-cipher <cipher>]
+ [--encryption-key-size <key-size>]
+ [--encryption-control-location <control-location>]
+ <volume-type>
+
+.. option:: --name <name>
+
+ Set volume type name
+
+ .. versionadded:: 2
+
+.. option:: --description <description>
+
+ Set volume type description
+
+ .. versionadded:: 2
+
+.. option:: --project <project>
+
+ Set volume type access to project (name or ID) (admin only)
+
+ *Volume version 2 only*
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+.. option:: --property <key=value>
+
+ Set a property on this volume type (repeat option to set multiple properties)
+
+.. option:: --encryption-provider <provider>
+
+ Set the class that provides encryption support for this volume type
+ (e.g "LuksEncryptor") (admin only)
+
+ This option is required when setting encryption type of a volume for the first time.
+ Consider using other encryption options such as: :option:`--encryption-cipher`,
+ :option:`--encryption-key-size` and :option:`--encryption-control-location`
+
+.. option:: --encryption-cipher <cipher>
+
+ Set the encryption algorithm or mode for this volume type
+ (e.g "aes-xts-plain64") (admin only)
+
+.. option:: --encryption-key-size <key-size>
+
+ Set the size of the encryption key of this volume type
+ (e.g "128" or "256") (admin only)
+
+.. option:: --encryption-control-location <control-location>
+
+ Set the notional service where the encryption is performed
+ ("front-end" or "back-end") (admin only)
+
+ The default value for this option is "front-end" when setting encryption type of
+ a volume for the first time. Consider using other encryption options such as:
+ :option:`--encryption-cipher`, :option:`--encryption-key-size` and :option:`--encryption-provider`
+
+.. _volume_type_set-volume-type:
+.. describe:: <volume-type>
+
+ Volume type to modify (name or ID)
+
+volume type show
+----------------
+
+Display volume type details
+
+.. program:: volume type show
+.. code:: bash
+
+ openstack volume type show
+ [--encryption-type]
+ <volume-type>
+
+.. option:: --encryption-type
+
+ Display encryption information of this volume type (admin only)
+
+.. _volume_type_show-volume-type:
+.. describe:: <volume-type>
+
+ Volume type to display (name or ID)
+
+volume type unset
+-----------------
+
+Unset volume type properties
+
+.. program:: volume type unset
+.. code:: bash
+
+ openstack volume type unset
+ [--property <key> [...] ]
+ [--project <project>]
+ [--project-domain <project-domain>]
+ [--encryption-type]
+ <volume-type>
+
+.. option:: --property <key>
+
+ Property to remove from volume type (repeat option to remove multiple properties)
+
+.. option:: --project <project>
+
+ Removes volume type access from project (name or ID) (admin only)
+
+ *Volume version 2 only*
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+ This can be used in case collisions between project names exist.
+
+ *Volume version 2 only*
+
+.. option:: --encryption-type
+
+ Remove the encryption type for this volume type (admin only)
+
+.. _volume_type_unset-volume-type:
+.. describe:: <volume-type>
+
+ Volume type to modify (name or ID)
diff --git a/doc/source/cli/command-objects/volume.rst b/doc/source/cli/command-objects/volume.rst
new file mode 100644
index 00000000..a06a5d40
--- /dev/null
+++ b/doc/source/cli/command-objects/volume.rst
@@ -0,0 +1,403 @@
+======
+volume
+======
+
+Block Storage v1, v2
+
+volume create
+-------------
+
+Create new volume
+
+.. program:: volume create
+.. code:: bash
+
+ openstack volume create
+ [--size <size>]
+ [--type <volume-type>]
+ [--image <image> | --snapshot <snapshot> | --source <volume> | --source-replicated <replicated-volume>]
+ [--description <description>]
+ [--user <user>]
+ [--project <project>]
+ [--availability-zone <availability-zone>]
+ [--consistency-group <consistency-group>]
+ [--property <key=value> [...] ]
+ [--hint <key=value> [...] ]
+ [--multi-attach]
+ [--bootable | --non-bootable]
+ [--read-only | --read-write]
+ <name>
+
+.. option:: --size <size>
+
+ Volume size in GB
+ (Required unless --snapshot or --source or --source-replicated is specified)
+
+.. option:: --type <volume-type>
+
+ Set the type of volume
+
+ Select ``<volume-type>`` from the available types as shown
+ by ``volume type list``.
+
+.. option:: --image <image>
+
+ Use ``<image>`` as source of volume (name or ID)
+
+ This is commonly used to create a boot volume for a server.
+
+.. option:: --snapshot <snapshot>
+
+ Use ``<snapshot>`` as source of volume (name or ID)
+
+.. option:: --source <volume>
+
+ Volume to clone (name or ID)
+
+.. option:: --source-replicated <replicated-volume>
+
+ Replicated volume to clone (name or ID)
+
+.. option:: --description <description>
+
+ Volume description
+
+.. option:: --user <user>
+
+ Specify an alternate user (name or ID)
+
+.. option:: --project <project>
+
+ Specify an alternate project (name or ID)
+
+.. option:: --availability-zone <availability-zone>
+
+ Create volume in ``<availability-zone>``
+
+.. option:: --consistency-group <consistency-group>
+
+ Consistency group where the new volume belongs to
+
+.. option:: --property <key=value>
+
+ Set a property on this volume (repeat option to set multiple properties)
+
+.. option:: --hint <key=value>
+
+ Arbitrary scheduler hint key-value pairs to help boot an instance
+ (repeat option to set multiple hints)
+
+.. option:: --multi-attach
+
+ Allow volume to be attached more than once (default to False)
+
+.. option:: --bootable
+
+ Mark volume as bootable
+
+.. option:: --non-bootable
+
+ Mark volume as non-bootable (default)
+
+.. option:: --read-only
+
+ Set volume to read-only access mode
+
+.. option:: --read-write
+
+ Set volume to read-write access mode (default)
+
+.. _volume_create-name:
+.. describe:: <name>
+
+ Volume name
+
+The :option:`--project` and :option:`--user` options are typically only
+useful for admin users, but may be allowed for other users depending on
+the policy of the cloud and the roles granted to the user.
+
+volume delete
+-------------
+
+Delete volume(s)
+
+.. program:: volume delete
+.. code:: bash
+
+ openstack volume delete
+ [--force | --purge]
+ <volume> [<volume> ...]
+
+.. option:: --force
+
+ Attempt forced removal of volume(s), regardless of state (defaults to False)
+
+.. option:: --purge
+
+ Remove any snapshots along with volume(s) (defaults to False)
+
+ *Volume version 2 only*
+
+.. _volume_delete-volume:
+.. describe:: <volume>
+
+ Volume(s) to delete (name or ID)
+
+volume list
+-----------
+
+List volumes
+
+.. program:: volume list
+.. code:: bash
+
+ openstack volume list
+ [--project <project> [--project-domain <project-domain>]]
+ [--user <user> [--user-domain <user-domain>]]
+ [--name <name>]
+ [--status <status>]
+ [--all-projects]
+ [--long]
+ [--limit <num-volumes>]
+ [--marker <volume>]
+
+.. option:: --project <project>
+
+ Filter results by ``<project>`` (name or ID) (admin only)
+
+ *Volume version 2 only*
+
+.. option:: --project-domain <project-domain>
+
+ Domain the project belongs to (name or ID).
+
+ This can be used in case collisions between project names exist.
+
+ *Volume version 2 only*
+
+.. option:: --user <user>
+
+ Filter results by ``<user>`` (name or ID) (admin only)
+
+ *Volume version 2 only*
+
+.. option:: --user-domain <user-domain>
+
+ Domain the user belongs to (name or ID).
+
+ This can be used in case collisions between user names exist.
+
+ *Volume version 2 only*
+
+.. option:: --name <name>
+
+ Filter results by volume name
+
+.. option:: --status <status>
+
+ Filter results by status
+
+.. option:: --all-projects
+
+ Include all projects (admin only)
+
+.. option:: --long
+
+ List additional fields in output
+
+.. option:: --limit <num-volumes>
+
+ Maximum number of volumes to display
+
+.. option:: --marker <volume>
+
+ The last volume ID of the previous page
+
+ *Volume version 2 only*
+
+volume migrate
+--------------
+
+Migrate volume to a new host
+
+.. program:: volume migrate
+.. code:: bash
+
+ openstack volume migrate
+ --host <host>
+ [--force-host-copy]
+ [--lock-volume | --unlock-volume]
+ <volume>
+
+.. option:: --host <host>
+
+ Destination host (takes the form: host@backend-name#pool) (required)
+
+.. option:: --force-host-copy
+
+ Enable generic host-based force-migration,
+ which bypasses driver optimizations
+
+.. option:: --lock-volume
+
+ If specified, the volume state will be locked and will not allow
+ a migration to be aborted (possibly by another operation)
+
+ *Volume version 2 only*
+
+.. option:: --unlock-volume
+
+ If specified, the volume state will not be locked and the a
+ migration can be aborted (default) (possibly by another operation)
+
+ *Volume version 2 only*
+
+.. _volume_migrate-volume:
+.. describe:: <volume>
+
+ Volume to migrate (name or ID)
+
+volume set
+----------
+
+Set volume properties
+
+.. program:: volume set
+.. code:: bash
+
+ openstack volume set
+ [--name <name>]
+ [--size <size>]
+ [--description <description>]
+ [--no-property]
+ [--property <key=value> [...] ]
+ [--image-property <key=value> [...] ]
+ [--state <state>]
+ [--type <volume-type>]
+ [--retype-policy <retype-policy>]
+ [--bootable | --non-bootable]
+ [--read-only | --read-write]
+ <volume>
+
+.. option:: --name <name>
+
+ New volume name
+
+.. option:: --size <size>
+
+ Extend volume size in GB
+
+.. option:: --description <description>
+
+ New volume description
+
+.. option:: --no-property
+
+ Remove all properties from :ref:`\<volume\> <volume_set-volume>`
+ (specify both :option:`--no-property` and :option:`--property` to
+ remove the current properties before setting new properties.)
+
+.. option:: --property <key=value>
+
+ Set a property on this volume (repeat option to set multiple properties)
+
+.. option:: --type <volume-type>
+
+ New volume type (name or ID)
+
+ *Volume version 2 only*
+
+.. option:: --retype-policy <retype-policy>
+
+ Migration policy while re-typing volume
+ ("never" or "on-demand", default is "never" )
+ (available only when :option:`--type` option is specified)
+
+ *Volume version 2 only*
+
+.. option:: --bootable
+
+ Mark volume as bootable
+
+.. option:: --non-bootable
+
+ Mark volume as non-bootable
+
+.. option:: --read-only
+
+ Set volume to read-only access mode
+
+.. option:: --read-write
+
+ Set volume to read-write access mode
+
+.. option:: --image-property <key=value>
+
+ Set an image property on this volume
+ (repeat option to set multiple image properties)
+
+ Image properties are copied along with the image when creating a volume
+ using ``--image``. Note that these properties are immutable on the image
+ itself, this option updates the copy attached to this volume.
+
+ *Volume version 2 only*
+
+.. option:: --state <state>
+
+ New volume state
+ ("available", "error", "creating", "deleting", "in-use",
+ "attaching", "detaching", "error_deleting" or "maintenance") (admin only)
+ (This option simply changes the state of the volume in the database with
+ no regard to actual status, exercise caution when using)
+
+ *Volume version 2 only*
+
+.. _volume_set-volume:
+.. describe:: <volume>
+
+ Volume to modify (name or ID)
+
+volume show
+-----------
+
+Show volume details
+
+.. program:: volume show
+.. code:: bash
+
+ openstack volume show
+ <volume>
+
+.. _volume_show-volume:
+.. describe:: <volume>
+
+ Volume to display (name or ID)
+
+volume unset
+------------
+
+Unset volume properties
+
+.. program:: volume unset
+.. code:: bash
+
+ openstack volume unset
+ [--property <key>]
+ [--image-property <key>]
+ <volume>
+
+.. option:: --property <key>
+
+ Remove a property from volume (repeat option to remove multiple properties)
+
+.. option:: --image-property <key>
+
+ Remove an image property from volume
+ (repeat option to remove multiple image properties)
+
+ *Volume version 2 only*
+
+.. _volume_unset-volume:
+.. describe:: <volume>
+
+ Volume to modify (name or ID)