diff options
| author | Juan Antonio Osorio Robles <juan.osorio.robles@ericsson.com> | 2015-06-08 16:30:06 +0300 |
|---|---|---|
| committer | Juan Antonio Osorio Robles <juan.osorio.robles@ericsson.com> | 2015-06-08 17:05:10 +0300 |
| commit | f7feef7f8d1df7b6a28eb6d2e684bf8f1853d356 (patch) | |
| tree | 8fee7569183d363b1f43a2c852bb389f1860cd1e /openstackclient/identity/v3/group.py | |
| parent | 0c5f12aec063c689d859027c2944e1cc3497a1ff (diff) | |
| download | python-openstackclient-f7feef7f8d1df7b6a28eb6d2e684bf8f1853d356.tar.gz | |
Enable specifying domain for group and role commands
Many of the commands for the group and role resources were lacking an
option to specify the specific domain groups, projects or users belong
to. This commit fixes that.
Change-Id: I461d2bcfd01ad2dea970de38ec7ad6f4a631ceb1
Closes-bug: #1446546
Diffstat (limited to 'openstackclient/identity/v3/group.py')
| -rw-r--r-- | openstackclient/identity/v3/group.py | 116 |
1 files changed, 83 insertions, 33 deletions
diff --git a/openstackclient/identity/v3/group.py b/openstackclient/identity/v3/group.py index 91acf3e5..b064eb77 100644 --- a/openstackclient/identity/v3/group.py +++ b/openstackclient/identity/v3/group.py @@ -46,16 +46,32 @@ class AddUserToGroup(command.Command): metavar='<user>', help='User to add to <group> (name or ID)', ) + 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( + '--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 def take_action(self, parsed_args): self.log.debug('take_action(%s)', parsed_args) identity_client = self.app.client_manager.identity - user_id = utils.find_resource(identity_client.users, - parsed_args.user).id - group_id = utils.find_resource(identity_client.groups, - parsed_args.group).id + user_id = common.find_user(identity_client, + parsed_args.user, + parsed_args.user_domain).id + group_id = common.find_group(identity_client, + parsed_args.group, + parsed_args.group_domain).id try: identity_client.users.add_to_group(user_id, group_id) @@ -84,16 +100,32 @@ class CheckUserInGroup(command.Command): metavar='<user>', help='User to check (name or ID)', ) + 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( + '--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 def take_action(self, parsed_args): self.log.debug('take_action(%s)', parsed_args) identity_client = self.app.client_manager.identity - user_id = utils.find_resource(identity_client.users, - parsed_args.user).id - group_id = utils.find_resource(identity_client.groups, - parsed_args.group).id + user_id = common.find_user(identity_client, + parsed_args.user, + parsed_args.user_domain).id + group_id = common.find_group(identity_client, + parsed_args.group, + parsed_args.group_domain).id try: identity_client.users.check_in_group(user_id, group_id) @@ -184,17 +216,10 @@ class DeleteGroup(command.Command): self.log.debug('take_action(%s)', parsed_args) identity_client = self.app.client_manager.identity - domain = None - if parsed_args.domain: - domain = common.find_domain(identity_client, parsed_args.domain) for group in parsed_args.groups: - if domain is not None: - group_obj = utils.find_resource(identity_client.groups, - group, - domain_id=domain.id) - else: - group_obj = utils.find_resource(identity_client.groups, - group) + group_obj = common.find_group(identity_client, + group, + parsed_args.domain) identity_client.groups.delete(group_obj.id) return @@ -217,6 +242,13 @@ class ListGroup(lister.Lister): help='Filter group list by <user> (name or ID)', ) 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.') + ) + parser.add_argument( '--long', action='store_true', default=False, @@ -234,9 +266,10 @@ class ListGroup(lister.Lister): parsed_args.domain).id if parsed_args.user: - user = utils.find_resource( - identity_client.users, + user = common.find_user( + identity_client, parsed_args.user, + parsed_args.user_domain, ).id else: user = None @@ -277,16 +310,32 @@ class RemoveUserFromGroup(command.Command): metavar='<user>', help='User to remove from <group> (name or ID)', ) + 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( + '--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 def take_action(self, parsed_args): self.log.debug('take_action(%s)', parsed_args) identity_client = self.app.client_manager.identity - user_id = utils.find_resource(identity_client.users, - parsed_args.user).id - group_id = utils.find_resource(identity_client.groups, - parsed_args.group).id + user_id = common.find_user(identity_client, + parsed_args.user, + parsed_args.user_domain).id + group_id = common.find_group(identity_client, + parsed_args.group, + parsed_args.group_domain).id try: identity_client.users.remove_from_group(user_id, group_id) @@ -310,6 +359,11 @@ class SetGroup(command.Command): metavar='<group>', help='Group to modify (name or ID)') parser.add_argument( + '--domain', + metavar='<domain>', + help='Domain containing <group> (name or ID)', + ) + parser.add_argument( '--name', metavar='<name>', help='New group name') @@ -322,7 +376,8 @@ class SetGroup(command.Command): def take_action(self, parsed_args): self.log.debug('take_action(%s)', parsed_args) identity_client = self.app.client_manager.identity - group = utils.find_resource(identity_client.groups, parsed_args.group) + group = common.find_group(identity_client, parsed_args.group, + parsed_args.domain) kwargs = {} if parsed_args.name: kwargs['name'] = parsed_args.name @@ -359,14 +414,9 @@ class ShowGroup(show.ShowOne): self.log.debug('take_action(%s)', parsed_args) identity_client = self.app.client_manager.identity - if parsed_args.domain: - domain = common.find_domain(identity_client, parsed_args.domain) - group = utils.find_resource(identity_client.groups, - parsed_args.group, - domain_id=domain.id) - else: - group = utils.find_resource(identity_client.groups, - parsed_args.group) + group = common.find_group(identity_client, + parsed_args.group, + domain_name_or_id=parsed_args.domain) group._info.pop('links') return zip(*sorted(six.iteritems(group._info))) |
