2525LOG = 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+
2851class 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
106114class 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
316300class 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