Merge "add service/interface/region filter for endpoint v3"

This commit is contained in:
Jenkins 2014-09-06 17:02:45 +00:00 committed by Gerrit Code Review
commit b7816f3997
2 changed files with 123 additions and 1 deletions

View File

@ -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)

View File

@ -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):