Skip to content

Commit 4bdd51c

Browse files
committed
identity: Migrate 'domain' commands to SDK
Change-Id: Ide9cb9491334e139482f8cf1ea1874d01da0884f Depends-On: Id1b7b00fe5b96f0cc922716afabcc678193f0f57
1 parent 8890981 commit 4bdd51c

File tree

3 files changed

+187
-148
lines changed

3 files changed

+187
-148
lines changed

openstackclient/identity/v3/domain.py

Lines changed: 62 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import logging
1919

20-
from keystoneauth1 import exceptions as ks_exc
20+
from openstack import exceptions as sdk_exceptions
2121
from osc_lib.command import command
2222
from osc_lib import exceptions
2323
from osc_lib import utils
@@ -29,6 +29,31 @@
2929
LOG = logging.getLogger(__name__)
3030

3131

32+
def _format_domain(domain):
33+
columns = (
34+
'id',
35+
'name',
36+
'is_enabled',
37+
'description',
38+
'options',
39+
)
40+
column_headers = (
41+
'id',
42+
'name',
43+
'enabled',
44+
'description',
45+
'options',
46+
)
47+
48+
return (
49+
column_headers,
50+
utils.get_item_properties(
51+
domain,
52+
columns,
53+
),
54+
)
55+
56+
3257
class CreateDomain(command.ShowOne):
3358
_description = _("Create new domain")
3459

@@ -47,12 +72,15 @@ def get_parser(self, prog_name):
4772
enable_group = parser.add_mutually_exclusive_group()
4873
enable_group.add_argument(
4974
'--enable',
75+
dest='is_enabled',
5076
action='store_true',
77+
default=True,
5178
help=_('Enable domain (default)'),
5279
)
5380
enable_group.add_argument(
5481
'--disable',
55-
action='store_true',
82+
dest='is_enabled',
83+
action='store_false',
5684
help=_('Disable domain'),
5785
)
5886
parser.add_argument(
@@ -64,32 +92,25 @@ def get_parser(self, prog_name):
6492
return parser
6593

6694
def take_action(self, parsed_args):
67-
identity_client = self.app.client_manager.identity
68-
69-
enabled = True
70-
if parsed_args.disable:
71-
enabled = False
95+
identity_client = self.app.client_manager.sdk_connection.identity
7296

7397
options = common.get_immutable_options(parsed_args)
7498

7599
try:
76-
domain = identity_client.domains.create(
100+
domain = identity_client.create_domain(
77101
name=parsed_args.name,
78102
description=parsed_args.description,
79103
options=options,
80-
enabled=enabled,
104+
is_enabled=parsed_args.is_enabled,
81105
)
82-
except ks_exc.Conflict:
106+
except sdk_exceptions.ConflictException:
83107
if parsed_args.or_show:
84-
domain = utils.find_resource(
85-
identity_client.domains, parsed_args.name
86-
)
108+
domain = identity_client.find_domain(parsed_args.name)
87109
LOG.info(_('Returning existing domain %s'), domain.name)
88110
else:
89111
raise
90112

91-
domain._info.pop('links')
92-
return zip(*sorted(domain._info.items()))
113+
return _format_domain(domain)
93114

94115

95116
class DeleteDomain(command.Command):
@@ -106,12 +127,12 @@ def get_parser(self, prog_name):
106127
return parser
107128

108129
def take_action(self, parsed_args):
109-
identity_client = self.app.client_manager.identity
130+
identity_client = self.app.client_manager.sdk_connection.identity
110131
result = 0
111132
for i in parsed_args.domain:
112133
try:
113-
domain = utils.find_resource(identity_client.domains, i)
114-
identity_client.domains.delete(domain.id)
134+
domain = identity_client.find_domain(i, ignore_missing=False)
135+
identity_client.delete_domain(domain.id)
115136
except Exception as e:
116137
result += 1
117138
LOG.error(
@@ -143,7 +164,7 @@ def get_parser(self, prog_name):
143164
)
144165
parser.add_argument(
145166
'--enabled',
146-
dest='enabled',
167+
dest='is_enabled',
147168
action='store_true',
148169
help=_('The domains that are enabled will be returned'),
149170
)
@@ -153,13 +174,17 @@ def take_action(self, parsed_args):
153174
kwargs = {}
154175
if parsed_args.name:
155176
kwargs['name'] = parsed_args.name
156-
if parsed_args.enabled:
157-
kwargs['enabled'] = True
177+
if parsed_args.is_enabled:
178+
kwargs['is_enabled'] = True
179+
180+
columns = ('id', 'name', 'is_enabled', 'description')
181+
column_headers = ('ID', 'Name', 'Enabled', 'Description')
182+
data = self.app.client_manager.sdk_connection.identity.domains(
183+
**kwargs
184+
)
158185

159-
columns = ('ID', 'Name', 'Enabled', 'Description')
160-
data = self.app.client_manager.identity.domains.list(**kwargs)
161186
return (
162-
columns,
187+
column_headers,
163188
(
164189
utils.get_item_properties(
165190
s,
@@ -194,38 +219,38 @@ def get_parser(self, prog_name):
194219
enable_group = parser.add_mutually_exclusive_group()
195220
enable_group.add_argument(
196221
'--enable',
222+
dest='is_enabled',
197223
action='store_true',
224+
default=None,
198225
help=_('Enable domain'),
199226
)
200227
enable_group.add_argument(
201228
'--disable',
202-
action='store_true',
229+
dest='is_enabled',
230+
action='store_false',
231+
default=None,
203232
help=_('Disable domain'),
204233
)
205234
common.add_resource_option_to_parser(parser)
206235
return parser
207236

208237
def take_action(self, parsed_args):
209-
identity_client = self.app.client_manager.identity
210-
domain = utils.find_resource(
211-
identity_client.domains, parsed_args.domain
212-
)
238+
identity_client = self.app.client_manager.sdk_connection.identity
239+
domain = identity_client.find_domain(parsed_args.domain)
213240
kwargs = {}
214241
if parsed_args.name:
215242
kwargs['name'] = parsed_args.name
216243
if parsed_args.description:
217244
kwargs['description'] = parsed_args.description
218245

219-
if parsed_args.enable:
220-
kwargs['enabled'] = True
221-
if parsed_args.disable:
222-
kwargs['enabled'] = False
246+
if parsed_args.is_enabled is not None:
247+
kwargs['is_enabled'] = parsed_args.is_enabled
223248

224249
options = common.get_immutable_options(parsed_args)
225250
if options:
226251
kwargs['options'] = options
227252

228-
identity_client.domains.update(domain.id, **kwargs)
253+
identity_client.update_domain(domain.id, **kwargs)
229254

230255

231256
class ShowDomain(command.ShowOne):
@@ -241,13 +266,7 @@ def get_parser(self, prog_name):
241266
return parser
242267

243268
def take_action(self, parsed_args):
244-
identity_client = self.app.client_manager.identity
245-
246-
domain_str = common._get_token_resource(
247-
identity_client, 'domain', parsed_args.domain
248-
)
249-
250-
domain = utils.find_resource(identity_client.domains, domain_str)
269+
identity_client = self.app.client_manager.sdk_connection.identity
270+
domain = identity_client.find_domain(parsed_args.domain)
251271

252-
domain._info.pop('links')
253-
return zip(*sorted(domain._info.items()))
272+
return _format_domain(domain)

0 commit comments

Comments
 (0)