1717
1818import logging
1919
20- from keystoneauth1 import exceptions as ks_exc
20+ from openstack import exceptions as sdk_exceptions
2121from osc_lib .command import command
2222from osc_lib import exceptions
2323from osc_lib import utils
2929LOG = 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+
3257class 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
95116class 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
231256class 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