Merge "add service/interface/region filter for endpoint v3"
This commit is contained in:
commit
b7816f3997
@ -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):
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user