Add service_name to URL discovery

The catalog was recently enhanced to allow filtering based on the
service_name so this should be passed on to endpoint filtering.

Change-Id: If08fcdba9719f6aacdcbbb6b951117f4f544f9ca
This commit is contained in:
Jamie Lennox
2014-06-04 10:56:56 +10:00
parent 39ab20f609
commit 832d89681c
4 changed files with 14 additions and 5 deletions

View File

@@ -44,6 +44,7 @@ class BaseAuthPlugin(object):
will be generated by the clients and should be used by plugins:
- ``service_type``: what sort of service is required.
- ``service_name``: the name of the service in the catalog.
- ``interface``: what visibility the endpoint should have.
- ``region_name``: the region the endpoint exists in.

View File

@@ -92,7 +92,7 @@ class BaseIdentityPlugin(base.BaseAuthPlugin):
return self.auth_ref
def get_endpoint(self, session, service_type=None, interface=None,
region_name=None, **kwargs):
region_name=None, service_name=None, **kwargs):
"""Return a valid endpoint for a service.
If a valid token is not present then a new one will be fetched using
@@ -106,6 +106,8 @@ class BaseIdentityPlugin(base.BaseAuthPlugin):
Defaults to `public`.
:param string region_name: The region the endpoint should exist in.
(optional)
:param string service_name: The name of the service in the catalog.
(optional)
:raises HttpError: An error from an invalid HTTP response.
@@ -123,7 +125,8 @@ class BaseIdentityPlugin(base.BaseAuthPlugin):
service_catalog = self.get_access(session).service_catalog
return service_catalog.url_for(service_type=service_type,
endpoint_type=interface,
region_name=region_name)
region_name=region_name,
service_name=service_name)
def invalidate(self):
self.auth_ref = None

View File

@@ -175,7 +175,9 @@ class V2IdentityPlugin(utils.TestCase):
self.assertEqual(httpretty.last_request().path, path)
def test_service_url(self):
endpoint_filter = {'service_type': 'compute', 'interface': 'admin'}
endpoint_filter = {'service_type': 'compute',
'interface': 'admin',
'service_name': 'nova'}
self._do_service_url_test('http://nova/novapi/admin', endpoint_filter)
def test_service_url_defaults_to_public(self):

View File

@@ -61,7 +61,8 @@ class V3IdentityPlugin(utils.TestCase):
"region": "RegionOne",
"interface": "admin"
}],
"type": "compute"
"type": "compute",
"name": "nova",
}, {
"endpoints": [{
"url": "http://glance/glanceapi/public",
@@ -328,7 +329,9 @@ class V3IdentityPlugin(utils.TestCase):
self.assertEqual(httpretty.last_request().path, path)
def test_service_url(self):
endpoint_filter = {'service_type': 'compute', 'interface': 'admin'}
endpoint_filter = {'service_type': 'compute',
'interface': 'admin',
'service_name': 'nova'}
self._do_service_url_test('http://nova/novapi/admin', endpoint_filter)
def test_service_url_defaults_to_public(self):