From 4b239eea4290522a24ed4242d983dc69ff7e382e Mon Sep 17 00:00:00 2001 From: Steve Martinelli Date: Wed, 19 Nov 2014 15:31:25 -0500 Subject: Add support for domains when deleting identity v3 resources Currently, only deleting via IDs is possible for groups, projects and users. We should have an optional --domain argument that allows for a name to be specified for the resource. (Since these are all namespaced by domains). Change-Id: I18ace3db85a3969f0b97678d432d6f8368baa9cd --- openstackclient/identity/v3/group.py | 16 +++++++++++++++- openstackclient/identity/v3/project.py | 17 +++++++++++++---- openstackclient/identity/v3/user.py | 17 +++++++++++++---- 3 files changed, 41 insertions(+), 9 deletions(-) (limited to 'openstackclient') diff --git a/openstackclient/identity/v3/group.py b/openstackclient/identity/v3/group.py index 14838bba..5d3cf642 100644 --- a/openstackclient/identity/v3/group.py +++ b/openstackclient/identity/v3/group.py @@ -169,12 +169,26 @@ class DeleteGroup(command.Command): 'group', metavar='', help='Name or ID of group to delete') + parser.add_argument( + '--domain', + metavar='', + help='Domain where group resides (name or ID)', + ) return parser 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) + + 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) + identity_client.groups.delete(group.id) return diff --git a/openstackclient/identity/v3/project.py b/openstackclient/identity/v3/project.py index 3b0e92fd..1e3977ba 100644 --- a/openstackclient/identity/v3/project.py +++ b/openstackclient/identity/v3/project.py @@ -126,16 +126,25 @@ class DeleteProject(command.Command): metavar='', help='Project to delete (name or ID)', ) + parser.add_argument( + '--domain', + metavar='', + help='Domain owning (name or ID)', + ) return parser def take_action(self, parsed_args): self.log.debug('take_action(%s)', parsed_args) identity_client = self.app.client_manager.identity - project = utils.find_resource( - identity_client.projects, - parsed_args.project, - ) + if parsed_args.domain: + domain = common.find_domain(identity_client, parsed_args.domain) + project = utils.find_resource(identity_client.projects, + parsed_args.project, + domain_id=domain.id) + else: + project = utils.find_resource(identity_client.projects, + parsed_args.project) identity_client.projects.delete(project.id) return diff --git a/openstackclient/identity/v3/user.py b/openstackclient/identity/v3/user.py index 10ffce36..665dd4bb 100644 --- a/openstackclient/identity/v3/user.py +++ b/openstackclient/identity/v3/user.py @@ -148,16 +148,25 @@ class DeleteUser(command.Command): metavar='', help='User to delete (name or ID)', ) + parser.add_argument( + '--domain', + metavar='', + help='Domain owning (name or ID)', + ) return parser def take_action(self, parsed_args): self.log.debug('take_action(%s)', parsed_args) identity_client = self.app.client_manager.identity - user = utils.find_resource( - identity_client.users, - parsed_args.user, - ) + if parsed_args.domain: + domain = common.find_domain(identity_client, parsed_args.domain) + user = utils.find_resource(identity_client.users, + parsed_args.user, + domain_id=domain.id) + else: + user = utils.find_resource(identity_client.users, + parsed_args.user) identity_client.users.delete(user.id) return -- cgit v1.2.1