Skip to content

Commit 91302d2

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Identity: Migrate 'registered limit' commands to SDK"
2 parents 2dff286 + 47ba155 commit 91302d2

3 files changed

Lines changed: 447 additions & 319 deletions

File tree

openstackclient/identity/v3/registered_limit.py

Lines changed: 82 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,29 @@
2525
LOG = logging.getLogger(__name__)
2626

2727

28+
def _format_registered_limit(registered_limit):
29+
columns = (
30+
'default_limit',
31+
'description',
32+
'id',
33+
'region_id',
34+
'resource_name',
35+
'service_id',
36+
)
37+
column_headers = (
38+
'default_limit',
39+
'description',
40+
'id',
41+
'region_id',
42+
'resource_name',
43+
'service_id',
44+
)
45+
return (
46+
column_headers,
47+
utils.get_item_properties(registered_limit, columns),
48+
)
49+
50+
2851
class CreateRegisteredLimit(command.ShowOne):
2952
_description = _("Create a registered limit")
3053

@@ -64,43 +87,28 @@ def get_parser(self, prog_name):
6487
return parser
6588

6689
def take_action(self, parsed_args):
67-
identity_client = self.app.client_manager.identity
90+
identity_client = self.app.client_manager.sdk_connection.identity
91+
92+
kwargs = {}
93+
94+
if parsed_args.description:
95+
kwargs["description"] = parsed_args.description
96+
97+
kwargs["service_id"] = common_utils.find_service_sdk(
98+
identity_client, parsed_args.service
99+
).id
68100

69-
service = utils.find_resource(
70-
identity_client.services, parsed_args.service
71-
)
72-
region = None
73101
if parsed_args.region:
74-
if 'None' not in parsed_args.region:
75-
# NOTE (vishakha): Due to bug #1799153 and for any another
76-
# related case where GET resource API does not support the
77-
# filter by name, osc_lib.utils.find_resource() method cannot
78-
# be used because that method try to fall back to list all the
79-
# resource if requested resource cannot be get via name. Which
80-
# ends up with NoUniqueMatch error.
81-
# So osc_lib.utils.find_resource() function cannot be used for
82-
# 'regions', using common_utils.get_resource() instead.
83-
region = common_utils.get_resource(
84-
identity_client.regions, parsed_args.region
85-
)
86-
else:
87-
self.log.warning(
88-
_(
89-
"Passing 'None' to indicate no region is deprecated. "
90-
"Instead, don't pass --region."
91-
)
92-
)
102+
kwargs["region_id"] = identity_client.get_region(
103+
parsed_args.region
104+
).id
93105

94-
registered_limit = identity_client.registered_limits.create(
95-
service,
96-
parsed_args.resource_name,
97-
parsed_args.default_limit,
98-
description=parsed_args.description,
99-
region=region,
100-
)
106+
kwargs["resource_name"] = parsed_args.resource_name
107+
kwargs["default_limit"] = parsed_args.default_limit
108+
109+
registered_limit = identity_client.create_registered_limit(**kwargs)
101110

102-
registered_limit._info.pop('links', None)
103-
return zip(*sorted(registered_limit._info.items()))
111+
return _format_registered_limit(registered_limit)
104112

105113

106114
class DeleteRegisteredLimit(command.Command):
@@ -112,17 +120,22 @@ def get_parser(self, prog_name):
112120
'registered_limits',
113121
metavar='<registered-limits>',
114122
nargs="+",
115-
help=_('Registered limit(s) to delete (ID)'),
123+
help=_(
124+
'Registered limit(s) to delete (ID) '
125+
'(repeat option to remove multiple registered limits)'
126+
),
116127
)
117128
return parser
118129

119130
def take_action(self, parsed_args):
120-
identity_client = self.app.client_manager.identity
131+
identity_client = self.app.client_manager.sdk_connection.identity
121132

122133
errors = 0
123134
for registered_limit_id in parsed_args.registered_limits:
124135
try:
125-
identity_client.registered_limits.delete(registered_limit_id)
136+
identity_client.delete_registered_limit(
137+
registered_limit_id, ignore_missing=False
138+
)
126139
except Exception as e:
127140
errors += 1
128141
from pprint import pprint
@@ -170,40 +183,22 @@ def get_parser(self, prog_name):
170183
return parser
171184

172185
def take_action(self, parsed_args):
173-
identity_client = self.app.client_manager.identity
186+
identity_client = self.app.client_manager.sdk_connection.identity
174187

175-
service = None
188+
kwargs = {}
176189
if parsed_args.service:
177-
service = common_utils.find_service(
190+
kwargs["service_id"] = common_utils.find_service_sdk(
178191
identity_client, parsed_args.service
179-
)
180-
region = None
192+
).id
181193
if parsed_args.region:
182-
if 'None' not in parsed_args.region:
183-
# NOTE (vishakha): Due to bug #1799153 and for any another
184-
# related case where GET resource API does not support the
185-
# filter by name, osc_lib.utils.find_resource() method cannot
186-
# be used because that method try to fall back to list all the
187-
# resource if requested resource cannot be get via name. Which
188-
# ends up with NoUniqueMatch error.
189-
# So osc_lib.utils.find_resource() function cannot be used for
190-
# 'regions', using common_utils.get_resource() instead.
191-
region = common_utils.get_resource(
192-
identity_client.regions, parsed_args.region
193-
)
194-
else:
195-
self.log.warning(
196-
_(
197-
"Passing 'None' to indicate no region is deprecated. "
198-
"Instead, don't pass --region."
199-
)
200-
)
194+
kwargs["region_id"] = identity_client.get_region(
195+
parsed_args.region
196+
).id
201197

202-
registered_limits = identity_client.registered_limits.list(
203-
service=service,
204-
resource_name=parsed_args.resource_name,
205-
region=region,
206-
)
198+
if parsed_args.resource_name:
199+
kwargs["resource_name"] = parsed_args.resource_name
200+
201+
registered_limits = identity_client.registered_limits(**kwargs)
207202

208203
columns = (
209204
'ID',
@@ -273,44 +268,33 @@ def get_parser(self, prog_name):
273268
return parser
274269

275270
def take_action(self, parsed_args):
276-
identity_client = self.app.client_manager.identity
271+
identity_client = self.app.client_manager.sdk_connection.identity
277272

278-
service = None
273+
kwargs = {}
279274
if parsed_args.service:
280-
service = common_utils.find_service(
275+
kwargs["service_id"] = common_utils.find_service_sdk(
281276
identity_client, parsed_args.service
282-
)
277+
).id
278+
279+
if parsed_args.resource_name:
280+
kwargs["resource_name"] = parsed_args.resource_name
281+
282+
if parsed_args.default_limit:
283+
kwargs["default_limit"] = parsed_args.default_limit
284+
285+
if parsed_args.description:
286+
kwargs["description"] = parsed_args.description
283287

284-
region = None
285288
if parsed_args.region:
286-
if 'None' not in parsed_args.region:
287-
# NOTE (vishakha): Due to bug #1799153 and for any another
288-
# related case where GET resource API does not support the
289-
# filter by name, osc_lib.utils.find_resource() method cannot
290-
# be used because that method try to fall back to list all the
291-
# resource if requested resource cannot be get via name. Which
292-
# ends up with NoUniqueMatch error.
293-
# So osc_lib.utils.find_resource() function cannot be used for
294-
# 'regions', using common_utils.get_resource() instead.
295-
region = common_utils.get_resource(
296-
identity_client.regions, parsed_args.region
297-
)
298-
else:
299-
self.log.warning(
300-
_("Passing 'None' to indicate no region is deprecated.")
301-
)
289+
kwargs["region_id"] = identity_client.get_region(
290+
parsed_args.region
291+
).id
302292

303-
registered_limit = identity_client.registered_limits.update(
304-
parsed_args.registered_limit_id,
305-
service=service,
306-
resource_name=parsed_args.resource_name,
307-
default_limit=parsed_args.default_limit,
308-
description=parsed_args.description,
309-
region=region,
293+
registered_limit = identity_client.update_registered_limit(
294+
parsed_args.registered_limit_id, **kwargs
310295
)
311296

312-
registered_limit._info.pop('links', None)
313-
return zip(*sorted(registered_limit._info.items()))
297+
return _format_registered_limit(registered_limit)
314298

315299

316300
class ShowRegisteredLimit(command.ShowOne):
@@ -326,9 +310,8 @@ def get_parser(self, prog_name):
326310
return parser
327311

328312
def take_action(self, parsed_args):
329-
identity_client = self.app.client_manager.identity
330-
registered_limit = identity_client.registered_limits.get(
313+
identity_client = self.app.client_manager.sdk_connection.identity
314+
registered_limit = identity_client.get_registered_limit(
331315
parsed_args.registered_limit_id
332316
)
333-
registered_limit._info.pop('links', None)
334-
return zip(*sorted(registered_limit._info.items()))
317+
return _format_registered_limit(registered_limit)

0 commit comments

Comments
 (0)