Skip to content

Commit 4b239ee

Browse files
author
Steve Martinelli
committed
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
1 parent 04d30c1 commit 4b239ee

5 files changed

Lines changed: 55 additions & 9 deletions

File tree

‎doc/source/command-objects/project.rst‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ Delete an existing project
5858
os project delete
5959
<project>
6060
61+
.. option:: --domain <domain>
62+
63+
Domain owning :ref:`\<project\> <_project_delete-project>` (name or ID)
64+
65+
.. versionadded:: 3
66+
6167
.. _project_delete-project:
6268
.. describe:: <project>
6369

‎doc/source/command-objects/user.rst‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,14 @@ Delete user
8080
os user delete
8181
<user>
8282
83+
.. option:: --domain <domain>
84+
85+
Domain owning :ref:`\<user\> <_user_delete-user>` (name or ID)
86+
87+
.. versionadded:: 3
88+
89+
.. _user_delete-user:
90+
8391
.. describe:: <user>
8492

8593
User to delete (name or ID)

‎openstackclient/identity/v3/group.py‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,12 +169,26 @@ def get_parser(self, prog_name):
169169
'group',
170170
metavar='<group>',
171171
help='Name or ID of group to delete')
172+
parser.add_argument(
173+
'--domain',
174+
metavar='<domain>',
175+
help='Domain where group resides (name or ID)',
176+
)
172177
return parser
173178

174179
def take_action(self, parsed_args):
175180
self.log.debug('take_action(%s)', parsed_args)
176181
identity_client = self.app.client_manager.identity
177-
group = utils.find_resource(identity_client.groups, parsed_args.group)
182+
183+
if parsed_args.domain:
184+
domain = common.find_domain(identity_client, parsed_args.domain)
185+
group = utils.find_resource(identity_client.groups,
186+
parsed_args.group,
187+
domain_id=domain.id)
188+
else:
189+
group = utils.find_resource(identity_client.groups,
190+
parsed_args.group)
191+
178192
identity_client.groups.delete(group.id)
179193
return
180194

‎openstackclient/identity/v3/project.py‎

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,16 +126,25 @@ def get_parser(self, prog_name):
126126
metavar='<project>',
127127
help='Project to delete (name or ID)',
128128
)
129+
parser.add_argument(
130+
'--domain',
131+
metavar='<domain>',
132+
help='Domain owning <project> (name or ID)',
133+
)
129134
return parser
130135

131136
def take_action(self, parsed_args):
132137
self.log.debug('take_action(%s)', parsed_args)
133138
identity_client = self.app.client_manager.identity
134139

135-
project = utils.find_resource(
136-
identity_client.projects,
137-
parsed_args.project,
138-
)
140+
if parsed_args.domain:
141+
domain = common.find_domain(identity_client, parsed_args.domain)
142+
project = utils.find_resource(identity_client.projects,
143+
parsed_args.project,
144+
domain_id=domain.id)
145+
else:
146+
project = utils.find_resource(identity_client.projects,
147+
parsed_args.project)
139148

140149
identity_client.projects.delete(project.id)
141150
return

‎openstackclient/identity/v3/user.py‎

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,16 +148,25 @@ def get_parser(self, prog_name):
148148
metavar='<user>',
149149
help='User to delete (name or ID)',
150150
)
151+
parser.add_argument(
152+
'--domain',
153+
metavar='<domain>',
154+
help='Domain owning <user> (name or ID)',
155+
)
151156
return parser
152157

153158
def take_action(self, parsed_args):
154159
self.log.debug('take_action(%s)', parsed_args)
155160
identity_client = self.app.client_manager.identity
156161

157-
user = utils.find_resource(
158-
identity_client.users,
159-
parsed_args.user,
160-
)
162+
if parsed_args.domain:
163+
domain = common.find_domain(identity_client, parsed_args.domain)
164+
user = utils.find_resource(identity_client.users,
165+
parsed_args.user,
166+
domain_id=domain.id)
167+
else:
168+
user = utils.find_resource(identity_client.users,
169+
parsed_args.user)
161170

162171
identity_client.users.delete(user.id)
163172
return

0 commit comments

Comments
 (0)