Merge "Optimize getting endpoint list"

This commit is contained in:
Jenkins 2017-10-13 18:25:45 +00:00 committed by Gerrit Code Review
commit 33403348a2
4 changed files with 22 additions and 1 deletions

View File

@ -26,6 +26,16 @@ from osc_lib import utils
from openstackclient.i18n import _
def find_service_in_list(service_list, service_id):
"""Find a service by id in service list."""
for service in service_list:
if service.id == service_id:
return service
raise exceptions.CommandError(
"No service with a type, name or ID of '%s' exists." % service_id)
def find_service(identity_client, name_type_or_id):
"""Find a service by id, name or type."""

View File

@ -167,9 +167,10 @@ class ListEndpoint(command.Lister):
if parsed_args.region:
kwargs['region'] = parsed_args.region
data = identity_client.endpoints.list(**kwargs)
service_list = identity_client.services.list()
for ep in data:
service = common.find_service(identity_client, ep.service_id)
service = common.find_service_in_list(service_list, ep.service_id)
ep.service_name = get_service_name(service)
ep.service_type = service.type
return (columns,

View File

@ -295,6 +295,7 @@ class TestEndpointList(TestEndpoint):
# 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]
# Get the command object to test
self.cmd = endpoint.ListEndpoint(self.app, None)
@ -726,6 +727,7 @@ class TestEndpointListServiceWithoutName(TestEndpointList):
# 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]
# Get the command object to test
self.cmd = endpoint.ListEndpoint(self.app, None)

View File

@ -0,0 +1,8 @@
---
fixes:
- |
Fix an issue with ``endpoint list`` working slow because it is issuing one GET
request to /v3/services/<id> Keystone API for each endpoint. In case of HTTPS
keystone endpoint and multiple regions it can take significant amount of time.
[Bug `1719413 <https://bugs.launchpad.net/python-openstackclient/+bug/1719413>`_]