2525LOG = logging .getLogger (__name__ )
2626
2727
28+ def _format_service_provider (sp ):
29+ column_headers = (
30+ 'id' ,
31+ 'enabled' ,
32+ 'description' ,
33+ 'auth_url' ,
34+ 'sp_url' ,
35+ 'relay_state_prefix' ,
36+ )
37+ columns = (
38+ 'id' ,
39+ 'is_enabled' ,
40+ 'description' ,
41+ 'auth_url' ,
42+ 'sp_url' ,
43+ 'relay_state_prefix' ,
44+ )
45+ return (
46+ column_headers ,
47+ utils .get_item_properties (sp , columns ),
48+ )
49+
50+
2851class CreateServiceProvider (command .ShowOne ):
2952 _description = _ ("Create new service provider" )
3053
@@ -62,32 +85,42 @@ def get_parser(self, prog_name):
6285 enable_service_provider = parser .add_mutually_exclusive_group ()
6386 enable_service_provider .add_argument (
6487 '--enable' ,
65- dest = 'enabled ' ,
88+ dest = 'is_enabled ' ,
6689 action = 'store_true' ,
6790 default = True ,
6891 help = _ ('Enable the service provider (default)' ),
6992 )
7093 enable_service_provider .add_argument (
7194 '--disable' ,
72- dest = 'enabled ' ,
95+ dest = 'is_enabled ' ,
7396 action = 'store_false' ,
7497 help = _ ('Disable the service provider' ),
7598 )
7699
77100 return parser
78101
79102 def take_action (self , parsed_args ):
80- service_client = self .app .client_manager .identity
81- sp = service_client . federation . service_providers . create (
82- id = parsed_args . service_provider_id ,
83- auth_url = parsed_args . auth_url ,
84- description = parsed_args .description ,
85- enabled = parsed_args . enabled ,
86- sp_url = parsed_args . service_provider_url ,
87- )
103+ service_client = self .app .client_manager .sdk_connection . identity
104+
105+ kwargs = {}
106+
107+ kwargs = { 'id' : parsed_args .service_provider_id }
108+
109+ if parsed_args . is_enabled is not None :
110+ kwargs [ 'is_enabled' ] = parsed_args . is_enabled
88111
89- sp ._info .pop ('links' , None )
90- return zip (* sorted (sp ._info .items ()))
112+ if parsed_args .description :
113+ kwargs ['description' ] = parsed_args .description
114+
115+ if parsed_args .auth_url :
116+ kwargs ['auth_url' ] = parsed_args .auth_url
117+
118+ if parsed_args .service_provider_url :
119+ kwargs ['sp_url' ] = parsed_args .service_provider_url
120+
121+ sp = service_client .create_service_provider (** kwargs )
122+
123+ return _format_service_provider (sp )
91124
92125
93126class DeleteServiceProvider (command .Command ):
@@ -104,11 +137,11 @@ def get_parser(self, prog_name):
104137 return parser
105138
106139 def take_action (self , parsed_args ):
107- service_client = self .app .client_manager .identity
140+ service_client = self .app .client_manager .sdk_connection . identity
108141 result = 0
109142 for i in parsed_args .service_provider :
110143 try :
111- service_client .federation . service_providers . delete (i )
144+ service_client .delete_service_provider (i )
112145 except Exception as e :
113146 result += 1
114147 LOG .error (
@@ -132,24 +165,32 @@ class ListServiceProvider(command.Lister):
132165 _description = _ ("List service providers" )
133166
134167 def take_action (self , parsed_args ):
135- service_client = self .app .client_manager .identity
136- data = service_client .federation .service_providers .list ()
137-
138- column_headers = ('ID' , 'Enabled' , 'Description' , 'Auth URL' )
168+ service_client = self .app .client_manager .sdk_connection .identity
169+ data = service_client .service_providers ()
170+
171+ column_headers = (
172+ 'ID' ,
173+ 'Enabled' ,
174+ 'Description' ,
175+ 'Auth URL' ,
176+ 'Service Provider URL' ,
177+ 'Relay State Prefix' ,
178+ )
179+ columns = (
180+ 'id' ,
181+ 'is_enabled' ,
182+ 'description' ,
183+ 'auth_url' ,
184+ 'sp_url' ,
185+ 'relay_state_prefix' ,
186+ )
139187 return (
140188 column_headers ,
141- (
142- utils .get_item_properties (
143- s ,
144- column_headers ,
145- formatters = {},
146- )
147- for s in data
148- ),
189+ (utils .get_item_properties (s , columns ) for s in data ),
149190 )
150191
151192
152- class SetServiceProvider (command .Command ):
193+ class SetServiceProvider (command .ShowOne ):
153194 _description = _ ("Set service provider properties" )
154195
155196 def get_parser (self , prog_name ):
@@ -181,33 +222,44 @@ def get_parser(self, prog_name):
181222 enable_service_provider = parser .add_mutually_exclusive_group ()
182223 enable_service_provider .add_argument (
183224 '--enable' ,
225+ dest = 'is_enabled' ,
184226 action = 'store_true' ,
227+ default = None ,
185228 help = _ ('Enable the service provider' ),
186229 )
187230 enable_service_provider .add_argument (
188231 '--disable' ,
189- action = 'store_true' ,
232+ dest = 'is_enabled' ,
233+ action = 'store_false' ,
234+ default = None ,
190235 help = _ ('Disable the service provider' ),
191236 )
192237 return parser
193238
194239 def take_action (self , parsed_args ):
195- federation_client = self .app .client_manager .identity . federation
240+ service_client = self .app .client_manager .sdk_connection . identity
196241
197- enabled = None
198- if parsed_args .enable is True :
199- enabled = True
200- elif parsed_args .disable is True :
201- enabled = False
242+ kwargs = {}
202243
203- federation_client .service_providers .update (
244+ if parsed_args .is_enabled is not None :
245+ kwargs ['is_enabled' ] = parsed_args .is_enabled
246+
247+ if parsed_args .description :
248+ kwargs ['description' ] = parsed_args .description
249+
250+ if parsed_args .auth_url :
251+ kwargs ['auth_url' ] = parsed_args .auth_url
252+
253+ if parsed_args .service_provider_url :
254+ kwargs ['sp_url' ] = parsed_args .service_provider_url
255+
256+ service_provider = service_client .update_service_provider (
204257 parsed_args .service_provider ,
205- enabled = enabled ,
206- description = parsed_args .description ,
207- auth_url = parsed_args .auth_url ,
208- sp_url = parsed_args .service_provider_url ,
258+ ** kwargs ,
209259 )
210260
261+ return _format_service_provider (service_provider )
262+
211263
212264class ShowServiceProvider (command .ShowOne ):
213265 _description = _ ("Display service provider details" )
@@ -222,12 +274,10 @@ def get_parser(self, prog_name):
222274 return parser
223275
224276 def take_action (self , parsed_args ):
225- service_client = self .app .client_manager .identity
226- service_provider = utils .find_resource (
227- service_client .federation .service_providers ,
277+ service_client = self .app .client_manager .sdk_connection .identity
278+ service_provider = service_client .find_service_provider (
228279 parsed_args .service_provider ,
229- id = parsed_args . service_provider ,
280+ ignore_missing = False ,
230281 )
231282
232- service_provider ._info .pop ('links' , None )
233- return zip (* sorted (service_provider ._info .items ()))
283+ return _format_service_provider (service_provider )
0 commit comments