From ca050ed4c1426e278829dd54471bd63315090e68 Mon Sep 17 00:00:00 2001 From: Frode Nordahl Date: Mon, 3 Aug 2015 10:04:15 +0200 Subject: [PATCH] Add support for setting Accept-Language header DocImpact Closes-Bug: 1480529 Change-Id: I35a37d55edb700a5993bd5cc352335a87a15e47a --- glanceclient/common/http.py | 4 ++++ glanceclient/tests/unit/test_http.py | 22 ++++++++++++++++++++++ glanceclient/v1/client.py | 2 ++ glanceclient/v2/client.py | 2 ++ 4 files changed, 30 insertions(+) diff --git a/glanceclient/common/http.py b/glanceclient/common/http.py index a9df2157..9a3e759f 100644 --- a/glanceclient/common/http.py +++ b/glanceclient/common/http.py @@ -122,6 +122,7 @@ class HTTPClient(_BaseHTTPClient): self.endpoint = endpoint self.identity_headers = kwargs.get('identity_headers') self.auth_token = kwargs.get('token') + self.language_header = kwargs.get('language_header') if self.identity_headers: if self.identity_headers.get('X-Auth-Token'): self.auth_token = self.identity_headers.get('X-Auth-Token') @@ -133,6 +134,9 @@ class HTTPClient(_BaseHTTPClient): if self.auth_token: self.session.headers["X-Auth-Token"] = self.auth_token + if self.language_header: + self.session.headers["Accept-Language"] = self.language_header + self.timeout = float(kwargs.get('timeout', 600)) if self.endpoint.startswith("https"): diff --git a/glanceclient/tests/unit/test_http.py b/glanceclient/tests/unit/test_http.py index c7a16f30..55650408 100644 --- a/glanceclient/tests/unit/test_http.py +++ b/glanceclient/tests/unit/test_http.py @@ -139,6 +139,28 @@ class TestClient(testtools.TestCase): for k, v in six.iteritems(identity_headers): self.assertEqual(v, headers[k]) + def test_language_header_passed(self): + kwargs = {'language_header': 'nb_NO'} + http_client = http.HTTPClient(self.endpoint, **kwargs) + + path = '/v2/images/my-image' + self.mock.get(self.endpoint + path) + http_client.get(path) + + headers = self.mock.last_request.headers + self.assertEqual(kwargs['language_header'], headers['Accept-Language']) + + def test_language_header_not_passed_no_language(self): + kwargs = {} + http_client = http.HTTPClient(self.endpoint, **kwargs) + + path = '/v2/images/my-image' + self.mock.get(self.endpoint + path) + http_client.get(path) + + headers = self.mock.last_request.headers + self.assertTrue('Accept-Language' not in headers) + def test_connection_timeout(self): """Should receive an InvalidEndpoint if connection timeout.""" def cb(request, context): diff --git a/glanceclient/v1/client.py b/glanceclient/v1/client.py index 066867dd..cc6fa6a5 100644 --- a/glanceclient/v1/client.py +++ b/glanceclient/v1/client.py @@ -27,6 +27,8 @@ class Client(object): :param string token: Token for authentication. :param integer timeout: Allows customization of the timeout for client http requests. (optional) + :param string language_header: Set Accept-Language header to be sent in + requests to glance. """ def __init__(self, endpoint=None, **kwargs): diff --git a/glanceclient/v2/client.py b/glanceclient/v2/client.py index 803673ba..f5d6d0f8 100644 --- a/glanceclient/v2/client.py +++ b/glanceclient/v2/client.py @@ -32,6 +32,8 @@ class Client(object): :param string token: Token for authentication. :param integer timeout: Allows customization of the timeout for client http requests. (optional) + :param string language_header: Set Accept-Language header to be sent in + requests to glance. """ def __init__(self, endpoint=None, **kwargs):