2121import logging
2222from typing import Any
2323
24+ from openstack import utils as sdk_utils
2425from osc_lib import exceptions
2526from osc_lib import utils
2627
3132LOG = logging.getLogger(__name__)
3233
3334
35+ def _format_mapping(mapping):
36+ columns = ('id', 'rules', 'schema_version')
37+ column_headers = ('id', 'rules', 'schema_version')
38+ return (
39+ column_headers,
40+ utils.get_item_properties(mapping, columns),
41+ )
42+
43+
3444class _RulesReader:
3545 _description = _("Helper class capable of reading rules from files")
3646
@@ -124,18 +134,18 @@ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
124134 def take_action(
125135 self, parsed_args: argparse.Namespace
126136 ) -> tuple[Sequence[str], Iterable[Any]]:
127- identity_client = self.app.client_manager.identity
137+ identity_client = sdk_utils.ensure_service_version(
138+ self.app.client_manager.sdk_connection.identity, '3'
139+ )
128140
129141 rules = self._read_rules(parsed_args.rules)
130- mapping = identity_client.federation.mappings.create (
131- mapping_id =parsed_args.mapping,
142+ mapping = identity_client.create_mapping (
143+ id =parsed_args.mapping,
132144 rules=rules,
133145 schema_version=parsed_args.schema_version,
134146 )
135147
136- mapping._info.pop('links', None)
137- col_headers, col_data = zip(*sorted(mapping._info.items()))
138- return col_headers, col_data
148+ return _format_mapping(mapping)
139149
140150
141151class DeleteMapping(command.Command):
@@ -152,11 +162,13 @@ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
152162 return parser
153163
154164 def take_action(self, parsed_args: argparse.Namespace) -> None:
155- identity_client = self.app.client_manager.identity
165+ identity_client = sdk_utils.ensure_service_version(
166+ self.app.client_manager.sdk_connection.identity, '3'
167+ )
156168 result = 0
157169 for i in parsed_args.mapping:
158170 try:
159- identity_client.federation.mappings.delete(i )
171+ identity_client.delete_mapping(i, ignore_missing=False )
160172 except Exception as e:
161173 result += 1
162174 LOG.error(
@@ -185,8 +197,10 @@ def take_action(
185197 # NOTE(marek-denis): Since rules can be long and tedious I have decided
186198 # to only list ids of the mappings. If somebody wants to check the
187199 # rules, (s)he should show specific ones.
188- identity_client = self.app.client_manager.identity
189- data = identity_client.federation.mappings.list()
200+ identity_client = sdk_utils.ensure_service_version(
201+ self.app.client_manager.sdk_connection.identity, '3'
202+ )
203+ data = identity_client.mappings()
190204 columns = ('ID', 'schema_version')
191205 items = [utils.get_item_properties(s, columns) for s in data]
192206 return (columns, items)
@@ -212,18 +226,18 @@ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
212226 return parser
213227
214228 def take_action(self, parsed_args: argparse.Namespace) -> None:
215- identity_client = self.app.client_manager.identity
229+ identity_client = sdk_utils.ensure_service_version(
230+ self.app.client_manager.sdk_connection.identity, '3'
231+ )
216232
217233 rules = self._read_rules(parsed_args.rules)
218234
219- mapping = identity_client.federation.mappings.update (
235+ identity_client.update_mapping (
220236 mapping=parsed_args.mapping,
221237 rules=rules,
222238 schema_version=parsed_args.schema_version,
223239 )
224240
225- mapping._info.pop('links', None)
226-
227241
228242class ShowMapping(command.ShowOne):
229243 _description = _("Display mapping details")
@@ -240,10 +254,10 @@ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
240254 def take_action(
241255 self, parsed_args: argparse.Namespace
242256 ) -> tuple[Sequence[str], Iterable[Any]]:
243- identity_client = self.app.client_manager.identity
257+ identity_client = sdk_utils.ensure_service_version(
258+ self.app.client_manager.sdk_connection.identity, '3'
259+ )
244260
245- mapping = identity_client.federation.mappings.get (parsed_args.mapping)
261+ mapping = identity_client.get_mapping (parsed_args.mapping)
246262
247- mapping._info.pop('links', None)
248- col_headers, col_data = zip(*sorted(mapping._info.items()))
249- return col_headers, col_data
263+ return _format_mapping(mapping)
0 commit comments