diff --git a/keystoneauth1/adapter.py b/keystoneauth1/adapter.py index 21497920..65c6efa2 100644 --- a/keystoneauth1/adapter.py +++ b/keystoneauth1/adapter.py @@ -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) diff --git a/keystoneauth1/tests/unit/test_session.py b/keystoneauth1/tests/unit/test_session.py index deba09c4..de4c564a 100644 --- a/keystoneauth1/tests/unit/test_session.py +++ b/keystoneauth1/tests/unit/test_session.py @@ -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',