diff --git a/doc/source/command-objects/project.rst b/doc/source/command-objects/project.rst new file mode 100644 index 0000000000..ba741d1dc1 --- /dev/null +++ b/doc/source/command-objects/project.rst @@ -0,0 +1,155 @@ +======= +project +======= + +Identity v2, v3 + +project create +-------------- + +Create new project + +.. program:: project create +.. code:: bash + + os project create + [--domain <domain>] + [--description <description>] + [--enable | --disable] + [--property <key=value>] + <name> + +.. option:: --domain <domain> + + Domain owning 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) + +.. _project_create-name: +.. describe:: <name> + + New project name + +project delete +-------------- + +Delete an existing project + +.. program:: project delete +.. code:: bash + + os project delete + <project> + +.. _project_delete-project: +.. describe:: <project> + + Project to delete (name or ID) + +project list +------------ + +List projects + +.. program:: project list +.. code:: bash + + os project list + [--domain <domain>] + [--long] + +.. option:: --domain <domain> + + Filter projects by :option:`\<domain\> <--domain>` (name or ID) + + .. versionadded:: 3 + +.. option:: --long + + List additional fields in output + +project set +----------- + +Set project properties + +.. program:: project set +.. code:: bash + + os project set + [--name <name>] + [--domain <domain>] + [--description <description>] + [--enable | --disable] + [--property <key=value>] + <project> + +.. option:: --name <name> + + Set project name + +.. option:: --domain <domain> + + Set 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) + +.. _project_set-project: +.. describe:: <project> + + Project to modify (name or ID) + +project show +------------ + +.. program:: project show +.. code:: bash + + os project show + [--domain <domain>] + <project> + +.. option:: --domain <domain> + + Domain owning :ref:`\<project\> <project_show-project>` (name or ID) + + .. versionadded:: 3 + +.. _project_show-project: +.. describe:: <project> + + Project to show (name or ID) diff --git a/doc/source/command-objects/role.rst b/doc/source/command-objects/role.rst new file mode 100644 index 0000000000..1cc80d7d98 --- /dev/null +++ b/doc/source/command-objects/role.rst @@ -0,0 +1,180 @@ +==== +role +==== + +Identity v2, v3 + +role add +-------- + +Add role to a user or group in a project or domain + +.. program:: role add +.. code:: bash + + os role add + --domain <domain> | --project <project> + --user <user> | --group <group> + <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 + +.. describe:: <role> + + Role to add to `<project>`:`<user>` (name or ID) + +role create +----------- + +Create new role + +.. program:: role create +.. code:: bash + + os role create + <name> + +.. describe:: <name> + + New role name + +role delete +----------- + +Delete an existing role + +.. program:: role delete +.. code:: bash + + os role delete + <role> + +.. option:: <role> + + Role to delete (name or ID) + +role list +--------- + +List roles + +.. program:: role list +.. code:: bash + + os role list + [--domain <domain> | --project <project] + [--user <user> | --group <group>] + +.. option:: --domain <domain> + + Filter roles by <domain> (name or ID) + + .. versionadded:: 3 + +.. option:: --project <project> + + Filter roles by <project> (name or ID) + + .. versionadded:: 3 + +.. option:: --user <user> + + Filter roles by <user> (name or ID) + + .. versionadded:: 3 + +.. option:: --group <group> + + Filter roles by <group> (name or ID) + + .. versionadded:: 3 + +role remove +----------- + +Remove role from domain/project : user/group + +.. program:: role remove +.. code:: bash + + os role remove + [--domain <domain> | --project <project] + [--user <user> | --group <group>] + <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 + +.. describe:: <role> + + Role to remove from `<project>`:`<user>` (name or ID) + +role set +-------- + +Set role properties + +.. versionadded:: 3 + +.. program:: role set +.. code:: bash + + os role set + [--name <name>] + <role> + +.. option:: --name <name> + + Set role name + +.. describe:: <role> + + Role to modify (name or ID) + +role show +--------- + +.. program:: role show +.. code:: bash + + os role show + <role> + +.. describe:: <role> + + Role to show (name or ID) diff --git a/doc/source/command-objects/user-role.rst b/doc/source/command-objects/user-role.rst new file mode 100644 index 0000000000..a25e90ff8f --- /dev/null +++ b/doc/source/command-objects/user-role.rst @@ -0,0 +1,25 @@ +========= +user role +========= + +user role list +-------------- + +List user-role assignments + +*Removed in version 3.* + +.. program:: user role list +.. code:: bash + + os 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/command-objects/user.rst b/doc/source/command-objects/user.rst new file mode 100644 index 0000000000..53becf2799 --- /dev/null +++ b/doc/source/command-objects/user.rst @@ -0,0 +1,204 @@ +==== +user +==== + +Identity v2, v3 + +user create +----------- + +Create new user + +.. program:: user create +.. code:: bash + + os user create + [--domain <domain>] + [--project <project>] + [--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:: --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:: <name> + + New user name + +user delete +----------- + +Delete user + +.. program:: user delete +.. code:: bash + + os user delete + <user> + +.. describe:: <user> + + User to delete (name or ID) + +user list +--------- + +List users + +.. program:: user list +.. code:: bash + + os user list + [--domain <domain>] + [--project <project>] + [--group <group>] + [--long] + +.. option:: --domain <domain> + + Filter users by `<domain>` (name or ID) + + .. versionadded:: 3 + +.. option:: --project <project> + + Filter users by `<project>` (name or ID) + + *Removed in version 3.* + +.. option:: --group <group> + + Filter users by `<group>` membership (name or ID) + + .. versionadded:: 3 + +.. option:: --long + + List additional fields in output + +user set +-------- + +Set user properties + +.. program:: user set +.. code:: bash + + os user set + [--name <name>] + [--domain <domain>] + [--project <project>] + [--password <password>] + [--email <email-address>] + [--description <description>] + [--enable|--disable] + <user> + +.. option:: --name <name> + + Set user name + +.. option:: --domain <domain> + + Set default domain (name or ID) + + .. versionadded:: 3 + +.. option:: --project <project> + + Set default project (name or ID) + +.. 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 +--------- + +.. program:: user show +.. code:: bash + + os 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 show (name or ID) diff --git a/doc/source/commands.rst b/doc/source/commands.rst index 506fbfc28f..250a8039d8 100644 --- a/doc/source/commands.rst +++ b/doc/source/commands.rst @@ -94,7 +94,7 @@ referring to both Compute and Volume quotas. * ``network``: Network - a virtual network for connecting servers and other resources * ``object``: Object Store - a single file in the Object Store * ``policy``: Identity - determines authorization -* ``project``: Identity - the owner of a group of resources +* ``project``: (**Identity**) owns a group of resources * ``quota``: (**Compute**, **Volume**) resource usage restrictions * ``request token``: Identity - temporary OAuth-based token * ``role``: Identity - a policy object used to determine authorization @@ -103,8 +103,9 @@ referring to both Compute and Volume quotas. * ``server``: Compute - a virtual machine instance * ``service``: Identity - a cloud service * ``snapshot``: Volume - a point-in-time copy of a volume -* ``token``: Identity - the magic text used to determine access -* ``user``: Identity - individuals using cloud resources +* ``token``: (**Identity**) a bearer token managed by Identity service +* ``user``: (**Identity**) individual cloud resources users +* ``user role``: (**Identity**) roles assigned to a user * ``volume``: Volume - block volumes * ``volume type``: Volume - deployment-specific types of volumes available diff --git a/openstackclient/identity/v2_0/project.py b/openstackclient/identity/v2_0/project.py index 2d66b400d4..df759ce6a8 100644 --- a/openstackclient/identity/v2_0/project.py +++ b/openstackclient/identity/v2_0/project.py @@ -42,8 +42,8 @@ class CreateProject(show.ShowOne): ) parser.add_argument( '--description', - metavar='<project-description>', - help=_('New project description'), + metavar='<description>', + help=_('Project description'), ) enable_group = parser.add_mutually_exclusive_group() enable_group.add_argument( @@ -60,7 +60,7 @@ class CreateProject(show.ShowOne): '--property', metavar='<key=value>', action=parseractions.KeyValueAction, - help=_('Property to add for this project ' + help=_('Add a property to <name> ' '(repeat option to set multiple properties)'), ) parser.add_argument( @@ -104,7 +104,7 @@ class CreateProject(show.ShowOne): class DeleteProject(command.Command): - """Delete project""" + """Delete an existing project""" log = logging.getLogger(__name__ + '.DeleteProject') @@ -169,17 +169,17 @@ class SetProject(command.Command): parser.add_argument( 'project', metavar='<project>', - help=_('Project to change (name or ID)'), + help=_('Project to modify (name or ID)'), ) parser.add_argument( '--name', - metavar='<new-project-name>', - help=_('New project name'), + metavar='<name>', + help=_('Set project name'), ) parser.add_argument( '--description', - metavar='<project-description>', - help=_('New project description'), + metavar='<description>', + help=_('Set project description'), ) enable_group = parser.add_mutually_exclusive_group() enable_group.add_argument( @@ -196,7 +196,7 @@ class SetProject(command.Command): '--property', metavar='<key=value>', action=parseractions.KeyValueAction, - help=_('Property to add for this project ' + help=_('Set a project property ' '(repeat option to set multiple properties)'), ) return parser @@ -249,7 +249,7 @@ class ShowProject(show.ShowOne): parser.add_argument( 'project', metavar='<project>', - help=_('Project to display (name or ID)')) + help=_('Project to show (name or ID)')) return parser def take_action(self, parsed_args): diff --git a/openstackclient/identity/v2_0/role.py b/openstackclient/identity/v2_0/role.py index df69e857ad..cec95095cc 100644 --- a/openstackclient/identity/v2_0/role.py +++ b/openstackclient/identity/v2_0/role.py @@ -38,17 +38,20 @@ class AddRole(show.ShowOne): parser.add_argument( 'role', metavar='<role>', - help=_('Role name or ID to add to user')) + help=_('Role to add to <project>:<user> (name or ID)'), + ) parser.add_argument( '--project', metavar='<project>', required=True, - help=_('Include project (name or ID)')) + help=_('Include <project> (name or ID)'), + ) parser.add_argument( '--user', metavar='<user>', required=True, - help=_('Name or ID of user to include')) + help=_('Include <user> (name or ID)'), + ) return parser def take_action(self, parsed_args): @@ -80,8 +83,9 @@ class CreateRole(show.ShowOne): parser = super(CreateRole, self).get_parser(prog_name) parser.add_argument( 'role_name', - metavar='<role-name>', - help=_('New role name')) + metavar='<name>', + help=_('New role name'), + ) parser.add_argument( '--or-show', action='store_true', @@ -110,7 +114,7 @@ class CreateRole(show.ShowOne): class DeleteRole(command.Command): - """Delete existing role""" + """Delete an existing role""" log = logging.getLogger(__name__ + '.DeleteRole') @@ -119,7 +123,8 @@ class DeleteRole(command.Command): parser.add_argument( 'role', metavar='<role>', - help=_('Name or ID of role to delete')) + help=_('Role to delete (name or ID)'), + ) return parser def take_action(self, parsed_args): @@ -162,11 +167,13 @@ class ListUserRole(lister.Lister): 'user', metavar='<user>', nargs='?', - help=_('Name or ID of user to include')) + help=_('User to list (name or ID)'), + ) parser.add_argument( '--project', metavar='<project>', - help=_('Include project (name or ID)')) + help=_('Filter users by <project> (name or ID)'), + ) return parser def take_action(self, parsed_args): @@ -227,17 +234,20 @@ class RemoveRole(command.Command): parser.add_argument( 'role', metavar='<role>', - help=_('Role name or ID to remove from user')) + help=_('Role to remove from <project>:<user> (name or ID)'), + ) parser.add_argument( '--project', metavar='<project>', required=True, - help=_('Project to include (name or ID)')) + help=_('Include <project> (name or ID)'), + ) parser.add_argument( '--user', metavar='<user>', required=True, - help=_('Name or ID of user')) + help=_('Include <user> (name or ID)'), + ) return parser def take_action(self, parsed_args): @@ -265,7 +275,8 @@ class ShowRole(show.ShowOne): parser.add_argument( 'role', metavar='<role>', - help=_('Name or ID of role to display')) + help=_('Role to show (name or ID)'), + ) return parser def take_action(self, parsed_args): diff --git a/openstackclient/identity/v2_0/user.py b/openstackclient/identity/v2_0/user.py index 2ebcba188e..955e19e770 100644 --- a/openstackclient/identity/v2_0/user.py +++ b/openstackclient/identity/v2_0/user.py @@ -36,13 +36,18 @@ class CreateUser(show.ShowOne): parser = super(CreateUser, self).get_parser(prog_name) parser.add_argument( 'name', - metavar='<user-name>', + metavar='<name>', help=_('New user name'), ) + parser.add_argument( + '--project', + metavar='<project>', + help=_('Default project (name or ID)'), + ) parser.add_argument( '--password', - metavar='<user-password>', - help=_('New user password'), + metavar='<password>', + help=_('Set user password'), ) parser.add_argument( '--password-prompt', @@ -52,13 +57,8 @@ class CreateUser(show.ShowOne): ) parser.add_argument( '--email', - metavar='<user-email>', - help=_('New user email address'), - ) - parser.add_argument( - '--project', - metavar='<project>', - help=_('Set default project (name or ID)'), + metavar='<email-address>', + help=_('Set user email address'), ) enable_group = parser.add_mutually_exclusive_group() enable_group.add_argument( @@ -258,13 +258,18 @@ class SetUser(command.Command): ) parser.add_argument( '--name', - metavar='<new-user-name>', - help=_('New user name'), + metavar='<name>', + help=_('Set user name'), + ) + parser.add_argument( + '--project', + metavar='<project>', + help=_('Set default project (name or ID)'), ) parser.add_argument( '--password', metavar='<user-password>', - help=_('New user password'), + help=_('Set user password'), ) parser.add_argument( '--password-prompt', @@ -274,13 +279,8 @@ class SetUser(command.Command): ) parser.add_argument( '--email', - metavar='<user-email>', - help=_('New user email address'), - ) - parser.add_argument( - '--project', - metavar='<project>', - help=_('New default project (name or ID)'), + metavar='<email-address>', + help=_('Set user email address'), ) enable_group = parser.add_mutually_exclusive_group() enable_group.add_argument( diff --git a/openstackclient/identity/v3/project.py b/openstackclient/identity/v3/project.py index 4fcf81278f..3b0e92fd8c 100644 --- a/openstackclient/identity/v3/project.py +++ b/openstackclient/identity/v3/project.py @@ -43,13 +43,13 @@ class CreateProject(show.ShowOne): ) parser.add_argument( '--domain', - metavar='<project-domain>', + metavar='<domain>', help='Domain owning the project (name or ID)', ) parser.add_argument( '--description', - metavar='<project-description>', - help='New project description', + metavar='<description>', + help='Project description', ) enable_group = parser.add_mutually_exclusive_group() enable_group.add_argument( @@ -66,7 +66,7 @@ class CreateProject(show.ShowOne): '--property', metavar='<key=value>', action=parseractions.KeyValueAction, - help='Property to add for this project ' + help='Add a property to <name> ' '(repeat option to set multiple properties)', ) parser.add_argument( @@ -115,7 +115,7 @@ class CreateProject(show.ShowOne): class DeleteProject(command.Command): - """Delete project""" + """Delete an existing project""" log = logging.getLogger(__name__ + '.DeleteProject') @@ -148,17 +148,17 @@ class ListProject(lister.Lister): def get_parser(self, prog_name): parser = super(ListProject, self).get_parser(prog_name) + parser.add_argument( + '--domain', + metavar='<domain>', + help='Filter projects by <domain> (name or ID)', + ) parser.add_argument( '--long', action='store_true', default=False, help='List additional fields in output', ) - parser.add_argument( - '--domain', - metavar='<project-domain>', - help='Filter by a specific domain (name or ID)', - ) return parser def take_action(self, parsed_args): @@ -190,22 +190,22 @@ class SetProject(command.Command): parser.add_argument( 'project', metavar='<project>', - help='Project to change (name or ID)', + help='Project to modify (name or ID)', ) parser.add_argument( '--name', - metavar='<new-project-name>', - help='New project name', + metavar='<name>', + help='Set project name', ) parser.add_argument( '--domain', - metavar='<project-domain>', - help='New domain owning the project (name or ID)', + metavar='<domain>', + help='Set domain owning <project> (name or ID)', ) parser.add_argument( '--description', - metavar='<project-description>', - help='New project description', + metavar='<description>', + help='Set project description', ) enable_group = parser.add_mutually_exclusive_group() enable_group.add_argument( @@ -222,7 +222,7 @@ class SetProject(command.Command): '--property', metavar='<key=value>', action=parseractions.KeyValueAction, - help='Property to add for this project ' + help='Set a property on <project> ' '(repeat option to set multiple properties)', ) return parser @@ -278,7 +278,7 @@ class ShowProject(show.ShowOne): parser.add_argument( '--domain', metavar='<domain>', - help='Domain where project resides (name or ID)', + help='Domain owning <project> (name or ID)', ) return parser diff --git a/openstackclient/identity/v3/role.py b/openstackclient/identity/v3/role.py index 7801ca6563..017ffd769f 100644 --- a/openstackclient/identity/v3/role.py +++ b/openstackclient/identity/v3/role.py @@ -38,29 +38,29 @@ class AddRole(command.Command): parser.add_argument( 'role', metavar='<role>', - help='Name or ID of role to add', - ) - user_or_group = parser.add_mutually_exclusive_group() - user_or_group.add_argument( - '--user', - metavar='<user>', - help='Name or ID of user to add a role', - ) - user_or_group.add_argument( - '--group', - metavar='<group>', - help='Name or ID of group to add a role', + help='Role to add to <user> (name or ID)', ) domain_or_project = parser.add_mutually_exclusive_group() domain_or_project.add_argument( '--domain', metavar='<domain>', - help='Name or ID of domain associated with user or group', + help='Include <domain> (name or ID)', ) domain_or_project.add_argument( '--project', metavar='<project>', - help='Name or ID of project associated with user or group', + help='Include `<project>` (name or ID)', + ) + user_or_group = parser.add_mutually_exclusive_group() + user_or_group.add_argument( + '--user', + metavar='<user>', + help='Include <user> (name or ID)', + ) + user_or_group.add_argument( + '--group', + metavar='<group>', + help='Include <group> (name or ID)', ) return parser @@ -177,7 +177,7 @@ class CreateRole(show.ShowOne): class DeleteRole(command.Command): - """Delete existing role""" + """Delete an existing role""" log = logging.getLogger(__name__ + '.DeleteRole') @@ -186,7 +186,7 @@ class DeleteRole(command.Command): parser.add_argument( 'role', metavar='<role>', - help='Name or ID of role to delete', + help='Role to delete (name or ID)', ) return parser @@ -214,23 +214,23 @@ class ListRole(lister.Lister): domain_or_project.add_argument( '--domain', metavar='<domain>', - help='Filter role list by <domain>', + help='Filter roles by <domain> (name or ID)', ) domain_or_project.add_argument( '--project', metavar='<project>', - help='Filter role list by <project>', + help='Filter roles by <project> (name or ID)', ) user_or_group = parser.add_mutually_exclusive_group() user_or_group.add_argument( '--user', metavar='<user>', - help='Name or ID of user to list roles assigned to', + help='Filter roles by <user> (name or ID)', ) user_or_group.add_argument( '--group', metavar='<group>', - help='Name or ID of group to list roles assigned to', + help='Filter roles by <group> (name or ID)', ) return parser @@ -320,7 +320,7 @@ class ListRole(lister.Lister): class RemoveRole(command.Command): - """Remove role command""" + """Remove role from domain/project : user/group""" log = logging.getLogger(__name__ + '.RemoveRole') @@ -329,29 +329,29 @@ class RemoveRole(command.Command): parser.add_argument( 'role', metavar='<role>', - help='Name or ID of role to remove', - ) - user_or_group = parser.add_mutually_exclusive_group() - user_or_group.add_argument( - '--user', - metavar='<user>', - help='Name or ID of user to remove a role', - ) - user_or_group.add_argument( - '--group', - metavar='<group>', - help='Name or ID of group to remove a role', + help='Role to remove (name or ID)', ) domain_or_project = parser.add_mutually_exclusive_group() domain_or_project.add_argument( '--domain', metavar='<domain>', - help='Name or ID of domain associated with user or group', + help='Include <domain> (name or ID)', ) domain_or_project.add_argument( '--project', metavar='<project>', - help='Name or ID of project associated with user or group', + help='Include <project> (name or ID)', + ) + user_or_group = parser.add_mutually_exclusive_group() + user_or_group.add_argument( + '--user', + metavar='<user>', + help='Include <user> (name or ID)', + ) + user_or_group.add_argument( + '--group', + metavar='<group>', + help='Include <group> (name or ID)', ) return parser @@ -431,7 +431,7 @@ class RemoveRole(command.Command): class SetRole(command.Command): - """Set role command""" + """Set role properties""" log = logging.getLogger(__name__ + '.SetRole') @@ -440,12 +440,12 @@ class SetRole(command.Command): parser.add_argument( 'role', metavar='<role>', - help='Name or ID of role to update', + help='Role to modify (name or ID)', ) parser.add_argument( '--name', - metavar='<new-role-name>', - help='New role name', + metavar='<name>', + help='Set role name', ) return parser @@ -475,7 +475,7 @@ class ShowRole(show.ShowOne): parser.add_argument( 'role', metavar='<role>', - help='Name or ID of role to display', + help='Role to show (name or ID)', ) return parser diff --git a/openstackclient/identity/v3/user.py b/openstackclient/identity/v3/user.py index 63dd3b4f58..10ffce36b8 100644 --- a/openstackclient/identity/v3/user.py +++ b/openstackclient/identity/v3/user.py @@ -37,13 +37,23 @@ class CreateUser(show.ShowOne): parser = super(CreateUser, self).get_parser(prog_name) parser.add_argument( 'name', - metavar='<user-name>', + metavar='<name>', help='New user name', ) + parser.add_argument( + '--domain', + metavar='<domain>', + help='Default domain (name or ID)', + ) + parser.add_argument( + '--project', + metavar='<project>', + help='Default project (name or ID)', + ) parser.add_argument( '--password', - metavar='<user-password>', - help='New user password', + metavar='<password>', + help='Set user password', ) parser.add_argument( '--password-prompt', @@ -53,23 +63,13 @@ class CreateUser(show.ShowOne): ) parser.add_argument( '--email', - metavar='<user-email>', - help='New user email address', - ) - parser.add_argument( - '--project', - metavar='<project>', - help='Set default project (name or ID)', - ) - parser.add_argument( - '--domain', - metavar='<domain>', - help='New default domain name or ID', + metavar='<email-address>', + help='Set user email address', ) parser.add_argument( '--description', metavar='<description>', - help='Description for new user', + help='User description', ) enable_group = parser.add_mutually_exclusive_group() enable_group.add_argument( @@ -173,12 +173,12 @@ class ListUser(lister.Lister): parser.add_argument( '--domain', metavar='<domain>', - help='Filter user list by <domain> (name or ID)', + help='Filter users by <domain> (name or ID)', ) parser.add_argument( '--group', metavar='<group>', - help='List memberships of <group> (name or ID)', + help='Filter users by <group> membership (name or ID)', ) parser.add_argument( '--long', @@ -240,13 +240,23 @@ class SetUser(command.Command): ) parser.add_argument( '--name', - metavar='<new-user-name>', - help='New user name', + metavar='<name>', + help='Set user name', + ) + parser.add_argument( + '--domain', + metavar='<domain>', + help='Set default domain (name or ID)', + ) + parser.add_argument( + '--project', + metavar='<project>', + help='Set default project (name or ID)', ) parser.add_argument( '--password', - metavar='<user-password>', - help='New user password', + metavar='<password>', + help='Set user password', ) parser.add_argument( '--password-prompt', @@ -256,23 +266,13 @@ class SetUser(command.Command): ) parser.add_argument( '--email', - metavar='<user-email>', - help='New user email address', - ) - parser.add_argument( - '--domain', - metavar='<domain>', - help='New domain name or ID', - ) - parser.add_argument( - '--project', - metavar='<project>', - help='New project name or ID', + metavar='<email-address>', + help='Set user email address', ) parser.add_argument( '--description', metavar='<description>', - help='New description', + help='Set user description', ) enable_group = parser.add_mutually_exclusive_group() enable_group.add_argument( @@ -380,7 +380,7 @@ class ShowUser(show.ShowOne): parser.add_argument( '--domain', metavar='<domain>', - help='Domain where user resides (name or ID)', + help='Domain owning <user> (name or ID)', ) return parser