diff --git a/openstackclient/identity/common.py b/openstackclient/identity/common.py index 9a7f11d1a1..65ff8852ff 100644 --- a/openstackclient/identity/common.py +++ b/openstackclient/identity/common.py @@ -88,23 +88,22 @@ def find_service_sdk(identity_client, name_type_or_id): raise exceptions.CommandError(e.message) # search for service type - services = identity_client.services() - result = None - for service in services: - if name_type_or_id == service.type: - if result: - msg = _( - "Multiple service matches found for '%s', " - "use an ID or name to be more specific." - ) - raise exceptions.CommandError(msg % name_type_or_id) - result = service + services = identity_client.services(type=name_type_or_id) + try: + service = next(services) + except StopIteration: + msg = _( + "No service with a type, name or ID of '%(query)s' exists." + ) % {"query": name_type_or_id} + raise exceptions.CommandError(msg) - if result is None: - msg = _("No service with a type, name or ID of '%s' exists.") - raise exceptions.CommandError(msg % name_type_or_id) + if next(services, None): + msg = _( + "Multiple service matches found for '%(query)s', use an ID to be more specific." + ) % {"query": name_type_or_id} + raise exceptions.CommandError(msg) - return result + return service def get_resource(manager, name_type_or_id): diff --git a/openstackclient/identity/v3/endpoint.py b/openstackclient/identity/v3/endpoint.py index 4b79fdaa0f..b84edb366c 100644 --- a/openstackclient/identity/v3/endpoint.py +++ b/openstackclient/identity/v3/endpoint.py @@ -28,11 +28,31 @@ from openstackclient.identity import common LOG = logging.getLogger(__name__) -def get_service_name(service): - if hasattr(service, 'name'): - return service.name - else: - return '' +def _format_endpoint(endpoint, service): + columns = ( + 'is_enabled', + 'id', + 'interface', + 'region_id', + 'region_id', + 'service_id', + 'url', + ) + column_headers = ( + 'enabled', + 'id', + 'interface', + 'region', + 'region_id', + 'service_id', + 'url', + 'service_name', + 'service_type', + ) + + data = utils.get_item_properties(endpoint, columns) + data += (getattr(service, 'name', ''), service.type) + return column_headers, data class AddProjectToEndpoint(command.Command): @@ -112,23 +132,23 @@ class CreateEndpoint(command.ShowOne): return parser def take_action(self, parsed_args): - identity_client = self.app.client_manager.identity - service = common.find_service(identity_client, parsed_args.service) + identity_client = self.app.client_manager.sdk_connection.identity + service = common.find_service_sdk(identity_client, parsed_args.service) - endpoint = identity_client.endpoints.create( - service=service.id, - url=parsed_args.url, - interface=parsed_args.interface, - region=parsed_args.region, - enabled=parsed_args.enabled, - ) + kwargs = {} - info = {} - endpoint._info.pop('links') - info.update(endpoint._info) - info['service_name'] = get_service_name(service) - info['service_type'] = service.type - return zip(*sorted(info.items())) + kwargs['service_id'] = service.id + kwargs['url'] = parsed_args.url + kwargs['interface'] = parsed_args.interface + kwargs['is_enabled'] = parsed_args.enabled + + if parsed_args.region: + region = identity_client.get_region(parsed_args.region) + kwargs['region_id'] = region.id + + endpoint = identity_client.create_endpoint(**kwargs) + + return _format_endpoint(endpoint, service=service) class DeleteEndpoint(command.Command): @@ -145,14 +165,12 @@ class DeleteEndpoint(command.Command): return parser def take_action(self, parsed_args): - identity_client = self.app.client_manager.identity + identity_client = self.app.client_manager.sdk_connection.identity result = 0 for i in parsed_args.endpoint: try: - endpoint_id = utils.find_resource( - identity_client.endpoints, i - ).id - identity_client.endpoints.delete(endpoint_id) + endpoint_id = identity_client.find_endpoint(i).id + identity_client.delete_endpoint(endpoint_id) except Exception as e: result += 1 LOG.error( @@ -208,28 +226,24 @@ class ListEndpoint(command.Lister): return parser def take_action(self, parsed_args): - identity_client = self.app.client_manager.identity + identity_client = self.app.client_manager.sdk_connection.identity endpoint = None if parsed_args.endpoint: - endpoint = utils.find_resource( - identity_client.endpoints, parsed_args.endpoint - ) + endpoint = identity_client.find_endpoint(parsed_args.endpoint) project = None if parsed_args.project: - project = common.find_project( - identity_client, + project = identity_client.find_project( parsed_args.project, parsed_args.project_domain, ) if endpoint: - columns: tuple[str, ...] = ('ID', 'Name') - data = identity_client.endpoint_filter.list_projects_for_endpoint( - endpoint=endpoint.id - ) + column_headers = ('ID', 'Name') + columns: tuple[str, ...] = ('id', 'name') + data = identity_client.endpoint_projects(endpoint=endpoint.id) else: - columns = ( + column_headers = ( 'ID', 'Region', 'Service Name', @@ -238,37 +252,41 @@ class ListEndpoint(command.Lister): 'Interface', 'URL', ) + columns = ( + 'id', + 'region_id', + 'service_name', + 'service_type', + 'is_enabled', + 'interface', + 'url', + ) kwargs = {} if parsed_args.service: - service = common.find_service( + service = common.find_service_sdk( identity_client, parsed_args.service ) - kwargs['service'] = service.id + kwargs['service_id'] = service.id if parsed_args.interface: kwargs['interface'] = parsed_args.interface if parsed_args.region: - kwargs['region'] = parsed_args.region + region = identity_client.get_region(parsed_args.region) + kwargs['region_id'] = region.id if project: - data = ( - identity_client.endpoint_filter.list_endpoints_for_project( - project=project.id - ) + data = list( + identity_client.project_endpoints(project=project.id) ) else: - data = identity_client.endpoints.list(**kwargs) - - service_list = identity_client.services.list() + data = list(identity_client.endpoints(**kwargs)) for ep in data: - service = common.find_service_in_list( - service_list, ep.service_id - ) - ep.service_name = get_service_name(service) + service = identity_client.find_service(ep.service_id) + ep.service_name = getattr(service, 'name', '') ep.service_type = service.type return ( - columns, + column_headers, ( utils.get_item_properties( s, @@ -363,28 +381,34 @@ class SetEndpoint(command.Command): return parser def take_action(self, parsed_args): - identity_client = self.app.client_manager.identity - endpoint = utils.find_resource( - identity_client.endpoints, parsed_args.endpoint - ) + identity_client = self.app.client_manager.sdk_connection.identity + endpoint = identity_client.find_endpoint(parsed_args.endpoint) + + kwargs = {} - service_id = None if parsed_args.service: - service = common.find_service(identity_client, parsed_args.service) - service_id = service.id - enabled = None - if parsed_args.enabled: - enabled = True - if parsed_args.disabled: - enabled = False + service = common.find_service_sdk( + identity_client, parsed_args.service + ) + kwargs['service_id'] = service.id - identity_client.endpoints.update( + if parsed_args.enabled: + kwargs['is_enabled'] = True + if parsed_args.disabled: + kwargs['is_enabled'] = False + + if parsed_args.url: + kwargs['url'] = parsed_args.url + + if parsed_args.interface: + kwargs['interface'] = parsed_args.interface + + if parsed_args.region: + kwargs['region_id'] = parsed_args.region + + identity_client.update_endpoint( endpoint.id, - service=service_id, - url=parsed_args.url, - interface=parsed_args.interface, - region=parsed_args.region, - enabled=enabled, + **kwargs, ) @@ -404,16 +428,9 @@ class ShowEndpoint(command.ShowOne): return parser def take_action(self, parsed_args): - identity_client = self.app.client_manager.identity - endpoint = utils.find_resource( - identity_client.endpoints, parsed_args.endpoint - ) + identity_client = self.app.client_manager.sdk_connection.identity + endpoint = identity_client.find_endpoint(parsed_args.endpoint) - service = common.find_service(identity_client, endpoint.service_id) + service = common.find_service_sdk(identity_client, endpoint.service_id) - info = {} - endpoint._info.pop('links') - info.update(endpoint._info) - info['service_name'] = get_service_name(service) - info['service_type'] = service.type - return zip(*sorted(info.items())) + return _format_endpoint(endpoint, service) diff --git a/openstackclient/tests/unit/identity/v3/test_endpoint.py b/openstackclient/tests/unit/identity/v3/test_endpoint.py index 1dafe48e48..84e10e55ad 100644 --- a/openstackclient/tests/unit/identity/v3/test_endpoint.py +++ b/openstackclient/tests/unit/identity/v3/test_endpoint.py @@ -10,6 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. +from openstack.identity.v3 import domain as _domain +from openstack.identity.v3 import endpoint as _endpoint +from openstack.identity.v3 import project as _project +from openstack.identity.v3 import region as _region +from openstack.identity.v3 import service as _service +from openstack.test import fakes as sdk_fakes + from openstackclient.identity.v3 import endpoint from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes @@ -37,30 +44,34 @@ class TestEndpoint(identity_fakes.TestIdentityv3): self.projects_mock.reset_mock() -class TestEndpointCreate(TestEndpoint): - service = identity_fakes.FakeService.create_one_service() - +class TestEndpointCreate(identity_fakes.TestIdentityv3): columns = ( 'enabled', 'id', 'interface', 'region', + 'region_id', 'service_id', + 'url', 'service_name', 'service_type', - 'url', ) def setUp(self): super().setUp() - self.endpoint = identity_fakes.FakeEndpoint.create_one_endpoint( - attrs={'service_id': self.service.id} + self.service = sdk_fakes.generate_fake_resource(_service.Service) + self.region = sdk_fakes.generate_fake_resource(_region.Region) + self.endpoint = sdk_fakes.generate_fake_resource( + resource_type=_endpoint.Endpoint, + service_id=self.service.id, + interface='admin', + region_id=self.region.id, ) - self.endpoints_mock.create.return_value = self.endpoint - # This is the return value for common.find_resource(service) - self.services_mock.get.return_value = self.service + self.identity_sdk_client.create_endpoint.return_value = self.endpoint + self.identity_sdk_client.find_service.return_value = self.service + self.identity_sdk_client.get_region.return_value = self.region # Get the command object to test self.cmd = endpoint.CreateEndpoint(self.app, None) @@ -79,6 +90,9 @@ class TestEndpointCreate(TestEndpoint): ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) + # Fake endpoints come with a region ID by default, so set it to None + setattr(self.endpoint, "region_id", None) + # In base command class ShowOne in cliff, abstract method take_action() # returns a two-part tuple with a tuple of column names and a tuple of # data to be shown. @@ -86,25 +100,25 @@ class TestEndpointCreate(TestEndpoint): # Set expected values kwargs = { - 'service': self.service.id, + 'service_id': self.service.id, 'url': self.endpoint.url, 'interface': self.endpoint.interface, - 'enabled': True, - 'region': None, + 'is_enabled': True, } - self.endpoints_mock.create.assert_called_with(**kwargs) + self.identity_sdk_client.create_endpoint.assert_called_with(**kwargs) self.assertEqual(self.columns, columns) datalist = ( True, self.endpoint.id, self.endpoint.interface, - self.endpoint.region, + None, + None, self.service.id, + self.endpoint.url, self.service.name, self.service.type, - self.endpoint.url, ) self.assertEqual(datalist, data) @@ -114,14 +128,14 @@ class TestEndpointCreate(TestEndpoint): self.endpoint.interface, self.endpoint.url, '--region', - self.endpoint.region, + self.region.id, ] verifylist = [ ('enabled', True), ('service', self.service.id), ('interface', self.endpoint.interface), ('url', self.endpoint.url), - ('region', self.endpoint.region), + ('region', self.region.id), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -132,25 +146,26 @@ class TestEndpointCreate(TestEndpoint): # Set expected values kwargs = { - 'service': self.service.id, + 'service_id': self.service.id, 'url': self.endpoint.url, 'interface': self.endpoint.interface, - 'enabled': True, - 'region': self.endpoint.region, + 'is_enabled': True, + 'region_id': self.region.id, } - self.endpoints_mock.create.assert_called_with(**kwargs) + self.identity_sdk_client.create_endpoint.assert_called_with(**kwargs) self.assertEqual(self.columns, columns) datalist = ( True, self.endpoint.id, self.endpoint.interface, - self.endpoint.region, + self.region.id, + self.region.id, self.service.id, + self.endpoint.url, self.service.name, self.service.type, - self.endpoint.url, ) self.assertEqual(datalist, data) @@ -169,6 +184,9 @@ class TestEndpointCreate(TestEndpoint): ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) + # Fake endpoints come with a region ID by default, so set it to None + setattr(self.endpoint, "region_id", None) + # In base command class ShowOne in cliff, abstract method take_action() # returns a two-part tuple with a tuple of column names and a tuple of # data to be shown. @@ -176,25 +194,25 @@ class TestEndpointCreate(TestEndpoint): # Set expected values kwargs = { - 'service': self.service.id, + 'service_id': self.service.id, 'url': self.endpoint.url, 'interface': self.endpoint.interface, - 'enabled': True, - 'region': None, + 'is_enabled': True, } - self.endpoints_mock.create.assert_called_with(**kwargs) + self.identity_sdk_client.create_endpoint.assert_called_with(**kwargs) self.assertEqual(self.columns, columns) datalist = ( True, self.endpoint.id, self.endpoint.interface, - self.endpoint.region, + None, + None, self.service.id, + self.endpoint.url, self.service.name, self.service.type, - self.endpoint.url, ) self.assertEqual(datalist, data) @@ -213,6 +231,10 @@ class TestEndpointCreate(TestEndpoint): ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) + # Fake endpoints come with a region ID by default, so set it to None + setattr(self.endpoint, "region_id", None) + setattr(self.endpoint, "is_enabled", False) + # In base command class ShowOne in cliff, abstract method take_action() # returns a two-part tuple with a tuple of column names and a tuple of # data to be shown. @@ -220,38 +242,37 @@ class TestEndpointCreate(TestEndpoint): # Set expected values kwargs = { - 'service': self.service.id, + 'service_id': self.service.id, 'url': self.endpoint.url, 'interface': self.endpoint.interface, - 'enabled': False, - 'region': None, + 'is_enabled': False, } - self.endpoints_mock.create.assert_called_with(**kwargs) + self.identity_sdk_client.create_endpoint.assert_called_with(**kwargs) self.assertEqual(self.columns, columns) datalist = ( - True, + False, self.endpoint.id, self.endpoint.interface, - self.endpoint.region, + None, + None, self.service.id, + self.endpoint.url, self.service.name, self.service.type, - self.endpoint.url, ) self.assertEqual(datalist, data) -class TestEndpointDelete(TestEndpoint): - endpoint = identity_fakes.FakeEndpoint.create_one_endpoint() - +class TestEndpointDelete(identity_fakes.TestIdentityv3): def setUp(self): super().setUp() - # This is the return value for utils.find_resource(endpoint) - self.endpoints_mock.get.return_value = self.endpoint - self.endpoints_mock.delete.return_value = None + self.endpoint = sdk_fakes.generate_fake_resource(_endpoint.Endpoint) + + self.identity_sdk_client.find_endpoint.return_value = self.endpoint + self.identity_sdk_client.delete_endpoint.return_value = None # Get the command object to test self.cmd = endpoint.DeleteEndpoint(self.app, None) @@ -267,18 +288,13 @@ class TestEndpointDelete(TestEndpoint): result = self.cmd.take_action(parsed_args) - self.endpoints_mock.delete.assert_called_with( + self.identity_sdk_client.delete_endpoint.assert_called_with( self.endpoint.id, ) self.assertIsNone(result) -class TestEndpointList(TestEndpoint): - service = identity_fakes.FakeService.create_one_service() - endpoint = identity_fakes.FakeEndpoint.create_one_endpoint( - attrs={'service_id': service.id} - ) - +class TestEndpointList(identity_fakes.TestIdentityv3): columns = ( 'ID', 'Region', @@ -292,11 +308,19 @@ class TestEndpointList(TestEndpoint): def setUp(self): super().setUp() - self.endpoints_mock.list.return_value = [self.endpoint] + self.service = sdk_fakes.generate_fake_resource(_service.Service) + self.region = sdk_fakes.generate_fake_resource(_region.Region) + self.endpoint = sdk_fakes.generate_fake_resource( + resource_type=_endpoint.Endpoint, + service_id=self.service.id, + interface='admin', + region_id=self.region.id, + ) - # This is the return value for common.find_resource(service) - self.services_mock.get.return_value = self.service - self.services_mock.list.return_value = [self.service] + self.identity_sdk_client.endpoints.return_value = [self.endpoint] + self.identity_sdk_client.find_service.return_value = self.service + self.identity_sdk_client.services.return_value = [self.service] + self.identity_sdk_client.get_region.return_value = self.region # Get the command object to test self.cmd = endpoint.ListEndpoint(self.app, None) @@ -310,13 +334,13 @@ class TestEndpointList(TestEndpoint): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.endpoints_mock.list.assert_called_with() + self.identity_sdk_client.endpoints.assert_called_with() self.assertEqual(self.columns, columns) datalist = ( ( self.endpoint.id, - self.endpoint.region, + self.region.id, self.service.name, self.service.type, True, @@ -343,15 +367,15 @@ class TestEndpointList(TestEndpoint): # Set expected values kwargs = { - 'service': self.service.id, + 'service_id': self.service.id, } - self.endpoints_mock.list.assert_called_with(**kwargs) + self.identity_sdk_client.endpoints.assert_called_with(**kwargs) self.assertEqual(self.columns, columns) datalist = ( ( self.endpoint.id, - self.endpoint.region, + self.region.id, self.service.name, self.service.type, True, @@ -380,13 +404,13 @@ class TestEndpointList(TestEndpoint): kwargs = { 'interface': self.endpoint.interface, } - self.endpoints_mock.list.assert_called_with(**kwargs) + self.identity_sdk_client.endpoints.assert_called_with(**kwargs) self.assertEqual(self.columns, columns) datalist = ( ( self.endpoint.id, - self.endpoint.region, + self.region.id, self.service.name, self.service.type, True, @@ -399,10 +423,10 @@ class TestEndpointList(TestEndpoint): def test_endpoint_list_region(self): arglist = [ '--region', - self.endpoint.region, + self.region.id, ] verifylist = [ - ('region', self.endpoint.region), + ('region', self.region.id), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -413,15 +437,15 @@ class TestEndpointList(TestEndpoint): # Set expected values kwargs = { - 'region': self.endpoint.region, + 'region_id': self.region.id, } - self.endpoints_mock.list.assert_called_with(**kwargs) + self.identity_sdk_client.endpoints.assert_called_with(**kwargs) self.assertEqual(self.columns, columns) datalist = ( ( self.endpoint.id, - self.endpoint.region, + self.region.id, self.service.name, self.service.type, True, @@ -432,13 +456,13 @@ class TestEndpointList(TestEndpoint): self.assertEqual(datalist, tuple(data)) def test_endpoint_list_project_with_project_domain(self): - project = identity_fakes.FakeProject.create_one_project() - domain = identity_fakes.FakeDomain.create_one_domain() + project = sdk_fakes.generate_fake_resource(_project.Project) + domain = sdk_fakes.generate_fake_resource(_domain.Domain) - self.ep_filter_mock.list_endpoints_for_project.return_value = [ + self.identity_sdk_client.project_endpoints.return_value = [ self.endpoint ] - self.projects_mock.get.return_value = project + self.identity_sdk_client.find_project.return_value = project arglist = ['--project', project.name, '--project-domain', domain.name] verifylist = [ @@ -451,7 +475,7 @@ class TestEndpointList(TestEndpoint): # returns a tuple containing the column names and an iterable # containing the data to be listed. columns, data = self.cmd.take_action(parsed_args) - self.ep_filter_mock.list_endpoints_for_project.assert_called_with( + self.identity_sdk_client.project_endpoints.assert_called_with( project=project.id ) @@ -459,7 +483,7 @@ class TestEndpointList(TestEndpoint): datalist = ( ( self.endpoint.id, - self.endpoint.region, + self.region.id, self.service.name, self.service.type, True, @@ -470,22 +494,20 @@ class TestEndpointList(TestEndpoint): self.assertEqual(datalist, tuple(data)) -class TestEndpointSet(TestEndpoint): - service = identity_fakes.FakeService.create_one_service() - endpoint = identity_fakes.FakeEndpoint.create_one_endpoint( - attrs={'service_id': service.id} - ) - +class TestEndpointSet(identity_fakes.TestIdentityv3): def setUp(self): super().setUp() - # This is the return value for utils.find_resource(endpoint) - self.endpoints_mock.get.return_value = self.endpoint + self.service = sdk_fakes.generate_fake_resource(_service.Service) + self.endpoint = sdk_fakes.generate_fake_resource( + resource_type=_endpoint.Endpoint, + service_id=self.service.id, + interface='admin', + ) - self.endpoints_mock.update.return_value = self.endpoint - - # This is the return value for common.find_resource(service) - self.services_mock.get.return_value = self.service + self.identity_sdk_client.find_endpoint.return_value = self.endpoint + self.identity_sdk_client.update_endpoint.return_value = self.endpoint + self.identity_sdk_client.find_service.return_value = self.service # Get the command object to test self.cmd = endpoint.SetEndpoint(self.app, None) @@ -501,15 +523,8 @@ class TestEndpointSet(TestEndpoint): result = self.cmd.take_action(parsed_args) - kwargs = { - 'enabled': None, - 'interface': None, - 'region': None, - 'service': None, - 'url': None, - } - self.endpoints_mock.update.assert_called_with( - self.endpoint.id, **kwargs + self.identity_sdk_client.update_endpoint.assert_called_with( + self.endpoint.id ) self.assertIsNone(result) @@ -525,13 +540,9 @@ class TestEndpointSet(TestEndpoint): # Set expected values kwargs = { - 'enabled': None, 'interface': 'public', - 'url': None, - 'region': None, - 'service': None, } - self.endpoints_mock.update.assert_called_with( + self.identity_sdk_client.update_endpoint.assert_called_with( self.endpoint.id, **kwargs ) self.assertIsNone(result) @@ -548,13 +559,9 @@ class TestEndpointSet(TestEndpoint): # Set expected values kwargs = { - 'enabled': None, - 'interface': None, 'url': 'http://localhost:5000', - 'region': None, - 'service': None, } - self.endpoints_mock.update.assert_called_with( + self.identity_sdk_client.update_endpoint.assert_called_with( self.endpoint.id, **kwargs ) self.assertIsNone(result) @@ -571,13 +578,9 @@ class TestEndpointSet(TestEndpoint): # Set expected values kwargs = { - 'enabled': None, - 'interface': None, - 'url': None, - 'region': None, - 'service': self.service.id, + 'service_id': self.service.id, } - self.endpoints_mock.update.assert_called_with( + self.identity_sdk_client.update_endpoint.assert_called_with( self.endpoint.id, **kwargs ) self.assertIsNone(result) @@ -594,13 +597,9 @@ class TestEndpointSet(TestEndpoint): # Set expected values kwargs = { - 'enabled': None, - 'interface': None, - 'url': None, - 'region': 'e-rzzz', - 'service': None, + 'region_id': 'e-rzzz', } - self.endpoints_mock.update.assert_called_with( + self.identity_sdk_client.update_endpoint.assert_called_with( self.endpoint.id, **kwargs ) self.assertIsNone(result) @@ -617,13 +616,9 @@ class TestEndpointSet(TestEndpoint): # Set expected values kwargs = { - 'enabled': True, - 'interface': None, - 'url': None, - 'region': None, - 'service': None, + 'is_enabled': True, } - self.endpoints_mock.update.assert_called_with( + self.identity_sdk_client.update_endpoint.assert_called_with( self.endpoint.id, **kwargs ) self.assertIsNone(result) @@ -640,31 +635,31 @@ class TestEndpointSet(TestEndpoint): # Set expected values kwargs = { - 'enabled': False, - 'interface': None, - 'url': None, - 'region': None, - 'service': None, + 'is_enabled': False, } - self.endpoints_mock.update.assert_called_with( + self.identity_sdk_client.update_endpoint.assert_called_with( self.endpoint.id, **kwargs ) self.assertIsNone(result) -class TestEndpointShow(TestEndpoint): - service = identity_fakes.FakeService.create_one_service() - endpoint = identity_fakes.FakeEndpoint.create_one_endpoint( - attrs={'service_id': service.id} - ) - +class TestEndpointShow(identity_fakes.TestIdentityv3): def setUp(self): super().setUp() - self.endpoints_mock.get.return_value = self.endpoint + self.service = sdk_fakes.generate_fake_resource(_service.Service) + self.region = sdk_fakes.generate_fake_resource(_region.Region) + self.endpoint = sdk_fakes.generate_fake_resource( + resource_type=_endpoint.Endpoint, + service_id=self.service.id, + interface='admin', + region_id=self.region.id, + ) - # This is the return value for common.find_resource(service) - self.services_mock.get.return_value = self.service + self.identity_sdk_client.find_endpoint.return_value = self.endpoint + + self.identity_sdk_client.find_service.return_value = self.service + self.identity_sdk_client.get_region.return_value = self.region # Get the command object to test self.cmd = endpoint.ShowEndpoint(self.app, None) @@ -682,7 +677,7 @@ class TestEndpointShow(TestEndpoint): # returns a two-part tuple with a tuple of column names and a tuple of # data to be shown. columns, data = self.cmd.take_action(parsed_args) - self.endpoints_mock.get.assert_called_with( + self.identity_sdk_client.find_endpoint.assert_called_with( self.endpoint.id, ) @@ -691,82 +686,82 @@ class TestEndpointShow(TestEndpoint): 'id', 'interface', 'region', + 'region_id', 'service_id', + 'url', 'service_name', 'service_type', - 'url', ) self.assertEqual(collist, columns) datalist = ( True, self.endpoint.id, self.endpoint.interface, - self.endpoint.region, + self.region.id, + self.region.id, self.service.id, + self.endpoint.url, self.service.name, self.service.type, - self.endpoint.url, ) self.assertEqual(datalist, data) class TestEndpointCreateServiceWithoutName(TestEndpointCreate): - service = identity_fakes.FakeService.create_one_service( - attrs={'service_name': ''} + service = sdk_fakes.generate_fake_resource( + resource_type=_service.Service, + name='', + ) + region = sdk_fakes.generate_fake_resource(_region.Region) + endpoint = sdk_fakes.generate_fake_resource( + resource_type=_endpoint.Endpoint, + service_id=service.id, + interface='admin', + region_id=region.id, ) def setUp(self): - super(TestEndpointCreate, self).setUp() - - self.endpoint = identity_fakes.FakeEndpoint.create_one_endpoint( - attrs={'service_id': self.service.id} - ) - - self.endpoints_mock.create.return_value = self.endpoint - - # This is the return value for common.find_resource(service) - self.services_mock.get.return_value = self.service + super().setUp() # Get the command object to test self.cmd = endpoint.CreateEndpoint(self.app, None) class TestEndpointListServiceWithoutName(TestEndpointList): - service = identity_fakes.FakeService.create_one_service( - attrs={'service_name': ''} + service = sdk_fakes.generate_fake_resource( + resource_type=_service.Service, + name='', ) - endpoint = identity_fakes.FakeEndpoint.create_one_endpoint( - attrs={'service_id': service.id} + region = sdk_fakes.generate_fake_resource(_region.Region) + endpoint = sdk_fakes.generate_fake_resource( + resource_type=_endpoint.Endpoint, + service_id=service.id, + interface='admin', + region_id=region.id, ) def setUp(self): - super(TestEndpointList, self).setUp() - - self.endpoints_mock.list.return_value = [self.endpoint] - - # This is the return value for common.find_resource(service) - self.services_mock.get.return_value = self.service - self.services_mock.list.return_value = [self.service] + super().setUp() # Get the command object to test self.cmd = endpoint.ListEndpoint(self.app, None) class TestEndpointShowServiceWithoutName(TestEndpointShow): - service = identity_fakes.FakeService.create_one_service( - attrs={'service_name': ''} + service = sdk_fakes.generate_fake_resource( + resource_type=_service.Service, + name='', ) - endpoint = identity_fakes.FakeEndpoint.create_one_endpoint( - attrs={'service_id': service.id} + region = sdk_fakes.generate_fake_resource(_region.Region) + endpoint = sdk_fakes.generate_fake_resource( + resource_type=_endpoint.Endpoint, + service_id=service.id, + interface='admin', + region_id=region.id, ) def setUp(self): - super(TestEndpointShow, self).setUp() - - self.endpoints_mock.get.return_value = self.endpoint - - # This is the return value for common.find_resource(service) - self.services_mock.get.return_value = self.service + super().setUp() # Get the command object to test self.cmd = endpoint.ShowEndpoint(self.app, None) diff --git a/releasenotes/notes/migrate-endpoint-to-sdk-8ca5a34794b6bd7e.yaml b/releasenotes/notes/migrate-endpoint-to-sdk-8ca5a34794b6bd7e.yaml new file mode 100644 index 0000000000..ab715d1643 --- /dev/null +++ b/releasenotes/notes/migrate-endpoint-to-sdk-8ca5a34794b6bd7e.yaml @@ -0,0 +1,10 @@ +--- +upgrade: + - | + The following commands have been migrated to SDK: + + - ``endpoint create`` + - ``endpoint delete`` + - ``endpoint list`` + - ``endpoint show`` + - ``endpoint set``