add service/interface/region filter for endpoint v3
Change-Id: I7eac5b2ff5f5a6f3f08b22dd3a48a5ae7e2c056b Closes-Bug: #1281888
This commit is contained in:
		| @@ -114,12 +114,38 @@ class ListEndpoint(lister.Lister): | ||||
|  | ||||
|     log = logging.getLogger(__name__ + '.ListEndpoint') | ||||
|  | ||||
|     def get_parser(self, prog_name): | ||||
|         parser = super(ListEndpoint, self).get_parser(prog_name) | ||||
|         parser.add_argument( | ||||
|             '--service', | ||||
|             metavar='<service>', | ||||
|             help='Filter by a specific service') | ||||
|         parser.add_argument( | ||||
|             '--interface', | ||||
|             metavar='<interface>', | ||||
|             choices=['admin', 'public', 'internal'], | ||||
|             help='Filter by a specific interface, must be admin, public or' | ||||
|                  ' internal') | ||||
|         parser.add_argument( | ||||
|             '--region', | ||||
|             metavar='<region>', | ||||
|             help='Filter by a specific region') | ||||
|         return parser | ||||
|  | ||||
|     def take_action(self, parsed_args): | ||||
|         self.log.debug('take_action(%s)', parsed_args) | ||||
|         identity_client = self.app.client_manager.identity | ||||
|         columns = ('ID', 'Region', 'Service Name', 'Service Type', | ||||
|                    'Enabled', 'Interface', 'URL') | ||||
|         data = identity_client.endpoints.list() | ||||
|         kwargs = {} | ||||
|         if parsed_args.service: | ||||
|             service = common.find_service(identity_client, parsed_args.service) | ||||
|             kwargs['service'] = service.id | ||||
|         if parsed_args.interface: | ||||
|             kwargs['interface'] = parsed_args.interface | ||||
|         if parsed_args.region: | ||||
|             kwargs['region'] = parsed_args.region | ||||
|         data = identity_client.endpoints.list(**kwargs) | ||||
|  | ||||
|         for ep in data: | ||||
|             service = common.find_service(identity_client, ep.service_id) | ||||
|   | ||||
| @@ -317,6 +317,102 @@ class TestEndpointList(TestEndpoint): | ||||
|         ),) | ||||
|         self.assertEqual(datalist, tuple(data)) | ||||
|  | ||||
|     def test_endpoint_list_service(self): | ||||
|         arglist = [ | ||||
|             '--service', identity_fakes.service_name, | ||||
|         ] | ||||
|         verifylist = [ | ||||
|             ('service', identity_fakes.service_name), | ||||
|         ] | ||||
|         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||
|  | ||||
|         # DisplayCommandBase.take_action() returns two tuples | ||||
|         columns, data = self.cmd.take_action(parsed_args) | ||||
|  | ||||
|         # Set expected values | ||||
|         kwargs = { | ||||
|             'service': identity_fakes.service_id, | ||||
|         } | ||||
|         self.endpoints_mock.list.assert_called_with(**kwargs) | ||||
|  | ||||
|         collist = ('ID', 'Region', 'Service Name', 'Service Type', | ||||
|                    'Enabled', 'Interface', 'URL') | ||||
|         self.assertEqual(collist, columns) | ||||
|         datalist = (( | ||||
|             identity_fakes.endpoint_id, | ||||
|             identity_fakes.endpoint_region, | ||||
|             identity_fakes.service_name, | ||||
|             identity_fakes.service_type, | ||||
|             True, | ||||
|             identity_fakes.endpoint_interface, | ||||
|             identity_fakes.endpoint_url, | ||||
|         ),) | ||||
|         self.assertEqual(datalist, tuple(data)) | ||||
|  | ||||
|     def test_endpoint_list_interface(self): | ||||
|         arglist = [ | ||||
|             '--interface', identity_fakes.endpoint_interface, | ||||
|         ] | ||||
|         verifylist = [ | ||||
|             ('interface', identity_fakes.endpoint_interface), | ||||
|         ] | ||||
|         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||
|  | ||||
|         # DisplayCommandBase.take_action() returns two tuples | ||||
|         columns, data = self.cmd.take_action(parsed_args) | ||||
|  | ||||
|         # Set expected values | ||||
|         kwargs = { | ||||
|             'interface': identity_fakes.endpoint_interface, | ||||
|         } | ||||
|         self.endpoints_mock.list.assert_called_with(**kwargs) | ||||
|  | ||||
|         collist = ('ID', 'Region', 'Service Name', 'Service Type', | ||||
|                    'Enabled', 'Interface', 'URL') | ||||
|         self.assertEqual(collist, columns) | ||||
|         datalist = (( | ||||
|             identity_fakes.endpoint_id, | ||||
|             identity_fakes.endpoint_region, | ||||
|             identity_fakes.service_name, | ||||
|             identity_fakes.service_type, | ||||
|             True, | ||||
|             identity_fakes.endpoint_interface, | ||||
|             identity_fakes.endpoint_url, | ||||
|         ),) | ||||
|         self.assertEqual(datalist, tuple(data)) | ||||
|  | ||||
|     def test_endpoint_list_region(self): | ||||
|         arglist = [ | ||||
|             '--region', identity_fakes.endpoint_region, | ||||
|         ] | ||||
|         verifylist = [ | ||||
|             ('region', identity_fakes.endpoint_region), | ||||
|         ] | ||||
|         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||
|  | ||||
|         # DisplayCommandBase.take_action() returns two tuples | ||||
|         columns, data = self.cmd.take_action(parsed_args) | ||||
|  | ||||
|         # Set expected values | ||||
|         kwargs = { | ||||
|             'region': identity_fakes.endpoint_region, | ||||
|         } | ||||
|         self.endpoints_mock.list.assert_called_with(**kwargs) | ||||
|  | ||||
|         collist = ('ID', 'Region', 'Service Name', 'Service Type', | ||||
|                    'Enabled', 'Interface', 'URL') | ||||
|         self.assertEqual(collist, columns) | ||||
|         datalist = (( | ||||
|             identity_fakes.endpoint_id, | ||||
|             identity_fakes.endpoint_region, | ||||
|             identity_fakes.service_name, | ||||
|             identity_fakes.service_type, | ||||
|             True, | ||||
|             identity_fakes.endpoint_interface, | ||||
|             identity_fakes.endpoint_url, | ||||
|         ),) | ||||
|         self.assertEqual(datalist, tuple(data)) | ||||
|  | ||||
|  | ||||
| class TestEndpointSet(TestEndpoint): | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 wanghong
					wanghong