Allow setting client_name, client_version on adapter

You can pass client_name and client_version to Adapter.__init__ but for
most clients this means overriding Adapter.__init__ and setdefault()-ing
the client_name and version.

As most clients already override the Adapter object it'd be easier if
they could just set these values on the class as they are not going to
change between instances.

Change-Id: I301a7f77c8cf423bc1d45e3dcbb2325f6853b9a9
This commit is contained in:
Jamie Lennox 2016-10-18 11:26:07 +11:00 committed by Steve Martinelli
parent 31b9d125b0
commit 57f8d2cde5
2 changed files with 27 additions and 2 deletions

View File

@ -56,6 +56,9 @@ class Adapter(object):
user_agent.
"""
client_name = None
client_version = None
@positional()
def __init__(self, session, service_type=None, service_name=None,
interface=None, region_name=None, endpoint_override=None,
@ -80,10 +83,13 @@ class Adapter(object):
self.connect_retries = connect_retries
self.logger = logger
self.allow = allow
self.client_name = client_name
self.client_version = client_version
self.additional_headers = additional_headers or {}
if client_name:
self.client_name = client_name
if client_version:
self.client_version = client_version
def _set_endpoint_filter_kwargs(self, kwargs):
if self.service_type:
kwargs.setdefault('service_type', self.service_type)

View File

@ -1039,6 +1039,25 @@ class AdapterTest(utils.TestCase):
self.assertEqual(agent + ' ' + client_session.DEFAULT_USER_AGENT,
self.requests_mock.last_request.headers['User-Agent'])
def test_adapter_user_agent_session_version_on_adapter(self):
class TestAdapter(adapter.Adapter):
client_name = 'testclient'
client_version = '4.5.6'
sess = client_session.Session(app_name='ksatest', app_version='1.2.3')
adap = TestAdapter(session=sess)
url = 'http://keystone.test.com'
self.requests_mock.get(url)
adap.get(url)
agent = 'ksatest/1.2.3 testclient/4.5.6'
self.assertEqual(agent + ' ' + client_session.DEFAULT_USER_AGENT,
self.requests_mock.last_request.headers['User-Agent'])
def test_adapter_user_agent_session_adapter_no_app_version(self):
sess = client_session.Session(app_name='ksatest')
adap = adapter.Adapter(client_name='testclient',