Skip to content

Commit fd232a4

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "identity: Migrate 'service provider' commands to SDK"
2 parents db3d4c9 + 56baf50 commit fd232a4

File tree

4 files changed

+265
-259
lines changed

4 files changed

+265
-259
lines changed

openstackclient/identity/v3/service_provider.py

Lines changed: 95 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,29 @@
2525
LOG = 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+
2851
class 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

93126
class 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

212264
class 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)

openstackclient/tests/functional/identity/v3/test_service_provider.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,5 @@ def test_sp_set(self):
6060
'description': new_description,
6161
}
6262
)
63-
self.assertEqual(0, len(raw_output))
64-
raw_output = self.openstack(
65-
f'service provider show {service_provider}'
66-
)
6763
updated_value = self.parse_show_as_object(raw_output)
68-
self.assertIn(new_description, updated_value['description'])
64+
self.assertEqual(new_description, updated_value.get('description'))

0 commit comments

Comments
 (0)