From 9e532db8b0f0ba537edef143a6f5380a2aaa1e4b Mon Sep 17 00:00:00 2001 From: Cao ShuFeng Date: Thu, 3 Mar 2016 15:19:54 +0800 Subject: [PATCH] Add last_request_id member to HTTPClient and SessionClient apiclient.base.Resource.get method requires manager.client to have last_request_id member. Otherwise get operation fails with AttributeError exception. Change-Id: I0ece85e3f61f2a7f176520ddf3ebee7792e51993 Closes-bug: 1552533 --- glanceclient/common/http.py | 4 ++++ glanceclient/tests/unit/test_http.py | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/glanceclient/common/http.py b/glanceclient/common/http.py index 1157381..2177292 100644 --- a/glanceclient/common/http.py +++ b/glanceclient/common/http.py @@ -116,6 +116,7 @@ class HTTPClient(_BaseHTTPClient): self.identity_headers = kwargs.get('identity_headers') self.auth_token = kwargs.get('token') self.language_header = kwargs.get('language_header') + self.last_request_id = None if self.identity_headers: if self.identity_headers.get('X-Auth-Token'): self.auth_token = self.identity_headers.get('X-Auth-Token') @@ -264,6 +265,7 @@ class HTTPClient(_BaseHTTPClient): {'endpoint': endpoint, 'e': e}) raise exc.CommunicationError(message=message) + self.last_request_id = resp.headers.get('x-openstack-request-id') resp, body_iter = self._handle_response(resp) self.log_http_response(resp) return resp, body_iter @@ -303,6 +305,7 @@ class SessionClient(adapter.Adapter, _BaseHTTPClient): def __init__(self, session, **kwargs): kwargs.setdefault('user_agent', USER_AGENT) kwargs.setdefault('service_type', 'image') + self.last_request_id = None super(SessionClient, self).__init__(session, **kwargs) def request(self, url, method, **kwargs): @@ -329,6 +332,7 @@ class SessionClient(adapter.Adapter, _BaseHTTPClient): dict(url=conn_url, e=e)) raise exc.CommunicationError(message=message) + self.last_request_id = resp.headers.get('x-openstack-request-id') return self._handle_response(resp) diff --git a/glanceclient/tests/unit/test_http.py b/glanceclient/tests/unit/test_http.py index c18660e..e0c1219 100644 --- a/glanceclient/tests/unit/test_http.py +++ b/glanceclient/tests/unit/test_http.py @@ -200,6 +200,14 @@ class TestClient(testtools.TestCase): resp, body = self.client.get(path, headers=headers) self.assertEqual(text, resp.text) + def test_request_id(self): + path = '/v1/images/detail' + self.mock.get(self.endpoint + path, + headers={"x-openstack-request-id": "req-aaa"}) + + self.client.get(path) + self.assertEqual(self.client.last_request_id, 'req-aaa') + def test_headers_encoding(self): if not hasattr(self.client, 'encode_headers'): self.skipTest('Cannot do header encoding check on SessionClient')