Refactor option handling for user|group|project domain scoping

put the common options in identity.common, this way the help is
consistent

Change-Id: I5b09cfb56fa0f8d16feb95150f216fccbe9f2b22
This commit is contained in:
Steve Martinelli 2015-06-09 17:25:12 -04:00
parent c508162d53
commit 2b0013c5c1
7 changed files with 57 additions and 131 deletions
doc/source/command-objects
openstackclient/identity

@ -28,19 +28,18 @@ Create EC2 credentials
.. option:: --user-domain <user-domain> .. option:: --user-domain <user-domain>
Select user from a specific domain (name or ID) Domain the user belongs to (name or ID). This can be
This can be used in case collisions between user names exist. used in case collisions between user names exist.
.. versionadded:: 3 .. versionadded:: 3
.. option:: --project-domain <project-domain> .. option:: --project-domain <project-domain>
Select project from a specific domain (name or ID) Domain the project belongs to (name or ID). This can be
This can be used in case collisions between project names exist. used in case collisions between user names exist.
.. versionadded:: 3 .. versionadded:: 3
The :option:`--project` and :option:`--user` options are typically only The :option:`--project` and :option:`--user` options are typically only
useful for admin users, but may be allowed for other users depending on 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. the policy of the cloud and the roles granted to the user.

@ -39,15 +39,16 @@ Create new trust
Sets an expiration date for the trust (format of YYYY-mm-ddTHH:MM:SS) Sets an expiration date for the trust (format of YYYY-mm-ddTHH:MM:SS)
.. option:: --project-domain <domain> .. option:: --project-domain <project-domain>
Domain that contains <project> (name or ID) Domain the project belongs to (name or ID). This can be
used in case collisions between user names exist.
.. option:: --trustor-domain <domain> .. option:: --trustor-domain <trustor-domain>
Domain that contains <trustor> (name or ID) Domain that contains <trustor> (name or ID)
.. option:: --trustee-domain <domain> .. option:: --trustee-domain <trustee-domain>
Domain that contains <trustee> (name or ID) Domain that contains <trustee> (name or ID)

@ -109,3 +109,33 @@ def _find_identity_resource(identity_client_manager, name_or_id,
pass pass
return resource_type(None, {'id': name_or_id, 'name': name_or_id}) return resource_type(None, {'id': name_or_id, 'name': name_or_id})
def add_user_domain_option_to_parser(parser):
parser.add_argument(
'--user-domain',
metavar='<user-domain>',
help=('Domain the user belongs to (name or ID). '
'This can be used in case collisions between user names '
'exist.')
)
def add_group_domain_option_to_parser(parser):
parser.add_argument(
'--group-domain',
metavar='<group-domain>',
help=('Domain the group belongs to (name or ID). '
'This can be used in case collisions between group names '
'exist.')
)
def add_project_domain_option_to_parser(parser):
parser.add_argument(
'--project-domain',
metavar='<project-domain>',
help=('Domain the project belongs to (name or ID). '
'This can be used in case collisions between project names '
'exist.')
)

@ -75,24 +75,8 @@ class CreateEC2Creds(show.ShowOne):
'(name or ID; default: current authenticated user)' '(name or ID; default: current authenticated user)'
), ),
) )
parser.add_argument( common.add_user_domain_option_to_parser(parser)
'--user-domain', common.add_project_domain_option_to_parser(parser)
metavar='<user-domain>',
help=(
'Select user from a specific domain (name or ID); '
'This can be used in case collisions between user names '
'exist.'
),
)
parser.add_argument(
'--project-domain',
metavar='<project-domain>',
help=(
'Select project from a specific domain (name or ID); '
'This can be used in case collisions between project names '
'exist.'
),
)
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):
@ -149,15 +133,7 @@ class DeleteEC2Creds(command.Command):
metavar='<user>', metavar='<user>',
help=_('Delete credentials for user (name or ID)'), help=_('Delete credentials for user (name or ID)'),
) )
parser.add_argument( common.add_user_domain_option_to_parser(parser)
'--user-domain',
metavar='<user-domain>',
help=(
'Select user from a specific domain (name or ID); '
'This can be used in case collisions between user names '
'exist.'
),
)
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):
@ -179,15 +155,7 @@ class ListEC2Creds(lister.Lister):
metavar='<user>', metavar='<user>',
help=_('Filter list by user (name or ID)'), help=_('Filter list by user (name or ID)'),
) )
parser.add_argument( common.add_user_domain_option_to_parser(parser)
'--user-domain',
metavar='<user-domain>',
help=(
'Select user from a specific domain (name or ID); '
'This can be used in case collisions between user names '
'exist.'
),
)
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):
@ -223,15 +191,7 @@ class ShowEC2Creds(show.ShowOne):
metavar='<user>', metavar='<user>',
help=_('Show credentials for user (name or ID)'), help=_('Show credentials for user (name or ID)'),
) )
parser.add_argument( common.add_user_domain_option_to_parser(parser)
'--user-domain',
metavar='<user-domain>',
help=(
'Select user from a specific domain (name or ID); '
'This can be used in case collisions between user names '
'exist.'
),
)
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):

@ -46,20 +46,8 @@ class AddUserToGroup(command.Command):
metavar='<user>', metavar='<user>',
help='User to add to <group> (name or ID)', help='User to add to <group> (name or ID)',
) )
parser.add_argument( common.add_group_domain_option_to_parser(parser)
'--group-domain', common.add_user_domain_option_to_parser(parser)
metavar='<group-domain>',
help=('Domain the group belongs to (name or ID). '
'This can be used in case collisions between group names '
'exist.')
)
parser.add_argument(
'--user-domain',
metavar='<user-domain>',
help=('Domain the user belongs to (name or ID). '
'This can be used in case collisions between user names '
'exist.')
)
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):
@ -100,20 +88,8 @@ class CheckUserInGroup(command.Command):
metavar='<user>', metavar='<user>',
help='User to check (name or ID)', help='User to check (name or ID)',
) )
parser.add_argument( common.add_group_domain_option_to_parser(parser)
'--group-domain', common.add_user_domain_option_to_parser(parser)
metavar='<group-domain>',
help=('Domain the group belongs to (name or ID). '
'This can be used in case collisions between group names '
'exist.')
)
parser.add_argument(
'--user-domain',
metavar='<user-domain>',
help=('Domain the user belongs to (name or ID). '
'This can be used in case collisions between user names '
'exist.')
)
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):
@ -241,13 +217,7 @@ class ListGroup(lister.Lister):
metavar='<user>', metavar='<user>',
help='Filter group list by <user> (name or ID)', help='Filter group list by <user> (name or ID)',
) )
parser.add_argument( common.add_user_domain_option_to_parser(parser)
'--user-domain',
metavar='<user-domain>',
help=('Domain the user belongs to (name or ID). '
'This can be used in case collisions between user names '
'exist.')
)
parser.add_argument( parser.add_argument(
'--long', '--long',
action='store_true', action='store_true',
@ -310,20 +280,8 @@ class RemoveUserFromGroup(command.Command):
metavar='<user>', metavar='<user>',
help='User to remove from <group> (name or ID)', help='User to remove from <group> (name or ID)',
) )
parser.add_argument( common.add_group_domain_option_to_parser(parser)
'--group-domain', common.add_user_domain_option_to_parser(parser)
metavar='<group-domain>',
help=('Domain the group belongs to (name or ID). '
'This can be used in case collisions between group names '
'exist.')
)
parser.add_argument(
'--user-domain',
metavar='<user-domain>',
help=('Domain the user belongs to (name or ID). '
'This can be used in case collisions between user names '
'exist.')
)
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):

@ -52,27 +52,9 @@ def _add_identity_and_resource_options_to_parser(parser):
metavar='<group>', metavar='<group>',
help='Include <group> (name or ID)', help='Include <group> (name or ID)',
) )
parser.add_argument( common.add_group_domain_option_to_parser(parser)
'--user-domain', common.add_project_domain_option_to_parser(parser)
metavar='<user-domain>', common.add_user_domain_option_to_parser(parser)
help=('Domain the user belongs to (name or ID). '
'This can be used in case collisions between user names '
'exist.')
)
parser.add_argument(
'--group-domain',
metavar='<group-domain>',
help=('Domain the group belongs to (name or ID). '
'This can be used in case collisions between group names '
'exist.')
)
parser.add_argument(
'--project-domain',
metavar='<project-domain>',
help=('Domain the project belongs to (name or ID). '
'This can be used in case collisions between project names '
'exist.')
)
def _process_identity_and_resource_options(parsed_args, def _process_identity_and_resource_options(parsed_args,

@ -71,19 +71,15 @@ class CreateTrust(show.ShowOne):
help='Sets an expiration date for the trust' help='Sets an expiration date for the trust'
' (format of YYYY-mm-ddTHH:MM:SS)', ' (format of YYYY-mm-ddTHH:MM:SS)',
) )
parser.add_argument( common.add_project_domain_option_to_parser(parser)
'--project-domain',
metavar='<domain>',
help='Domain that contains <project> (name or ID)',
)
parser.add_argument( parser.add_argument(
'--trustor-domain', '--trustor-domain',
metavar='<domain>', metavar='<trustor-domain>',
help='Domain that contains <trustor> (name or ID)', help='Domain that contains <trustor> (name or ID)',
) )
parser.add_argument( parser.add_argument(
'--trustee-domain', '--trustee-domain',
metavar='<domain>', metavar='<trustee-domain>',
help='Domain that contains <trustee> (name or ID)', help='Domain that contains <trustee> (name or ID)',
) )
return parser return parser