Add version parameter to adapter.

The version parameter was left out of adapter previously because setting
a version number triggers discovery and I felt that it was not ready for
the other services.

However if it isn't set then it won't be used and we may as well
implement it here once rather than have the individual services that do
support it override it themselves.

Change-Id: I707380a01175dc19b59de32cbb8fd2bb123d7335
This commit is contained in:
Jamie Lennox
2014-08-29 11:23:28 +10:00
parent 22a93fceb4
commit 0e61719043
2 changed files with 10 additions and 2 deletions

View File

@@ -27,7 +27,7 @@ class Adapter(object):
@utils.positional()
def __init__(self, session, service_type=None, service_name=None,
interface=None, region_name=None, endpoint_override=None,
auth=None, user_agent=None):
version=None, auth=None, user_agent=None):
"""Create a new adapter.
:param Session session: The session object to wrap.
@@ -37,6 +37,7 @@ class Adapter(object):
:param str region_name: The default region_name for URL discovery.
:param str endpoint_override: Always use this endpoint URL for requests
for this client.
:param tuple version: The version that this API targets.
:param auth.BaseAuthPlugin auth: An auth plugin to use instead of the
session one.
:param str user_agent: The User-Agent string to set.
@@ -47,6 +48,7 @@ class Adapter(object):
self.interface = interface
self.region_name = region_name
self.endpoint_override = endpoint_override
self.version = version
self.user_agent = user_agent
self.auth = auth
@@ -61,6 +63,8 @@ class Adapter(object):
endpoint_filter.setdefault('interface', self.interface)
if self.region_name:
endpoint_filter.setdefault('region_name', self.region_name)
if self.version:
endpoint_filter.setdefault('version', self.version)
if self.endpoint_override:
kwargs.setdefault('endpoint_override', self.endpoint_override)

View File

@@ -548,6 +548,7 @@ class AdapterTest(utils.TestCase):
INTERFACE = uuid.uuid4().hex
REGION_NAME = uuid.uuid4().hex
USER_AGENT = uuid.uuid4().hex
VERSION = uuid.uuid4().hex
TEST_URL = CalledAuthPlugin.ENDPOINT
@@ -563,7 +564,8 @@ class AdapterTest(utils.TestCase):
service_name=self.SERVICE_NAME,
interface=self.INTERFACE,
region_name=self.REGION_NAME,
user_agent=self.USER_AGENT)
user_agent=self.USER_AGENT,
version=self.VERSION)
resp = adpt.get('/')
self.assertEqual(resp.text, response)
@@ -576,6 +578,8 @@ class AdapterTest(utils.TestCase):
auth.endpoint_arguments['interface'])
self.assertEqual(self.REGION_NAME,
auth.endpoint_arguments['region_name'])
self.assertEqual(self.VERSION,
auth.endpoint_arguments['version'])
self.assertTrue(auth.get_token_called)
self.assertRequestHeaderEqual('User-Agent', self.USER_AGENT)