diff options
| author | Sean Dague <sean@dague.net> | 2017-05-24 07:17:30 -0400 |
|---|---|---|
| committer | Erno Kuvaja <jokke@usr.fi> | 2017-06-01 14:32:03 +0000 |
| commit | ec76e254da4f4727463dcb3a76adf33e5d3f7ffb (patch) | |
| tree | 9f7c99bdf5731cf70995991fb0fba4fc5aa6fdd8 /glanceclient/common/http.py | |
| parent | 03900522d4816fe5dc2958fa1eb30ab447cc8ee5 (diff) | |
| download | python-glanceclient-ec76e254da4f4727463dcb3a76adf33e5d3f7ffb.tar.gz | |
Allow global_request_id in Client constructor
This allows us to pass in a global_request_id in the client
constructor so that subsequent calls with this client pass that to the
servers. This enables cross project request_id tracking.
oslo spec I65de8261746b25d45e105394f4eeb95b9cb3bd42
Change-Id: Iea1e754a263a01dae5ed598fdda134394aff54b0
Diffstat (limited to 'glanceclient/common/http.py')
| -rw-r--r-- | glanceclient/common/http.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/glanceclient/common/http.py b/glanceclient/common/http.py index c46b89b..da38613 100644 --- a/glanceclient/common/http.py +++ b/glanceclient/common/http.py @@ -40,6 +40,7 @@ osprofiler_web = importutils.try_import("osprofiler.web") LOG = logging.getLogger(__name__) USER_AGENT = 'python-glanceclient' CHUNKSIZE = 1024 * 64 # 64kB +REQ_ID_HEADER = 'X-OpenStack-Request-ID' def encode_headers(headers): @@ -130,6 +131,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.global_request_id = kwargs.get('global_request_id') if self.identity_headers: self.auth_token = self.identity_headers.pop('X-Auth-Token', self.auth_token) @@ -225,6 +227,9 @@ class HTTPClient(_BaseHTTPClient): if not headers.get('X-Auth-Token'): headers['X-Auth-Token'] = self.auth_token + if self.global_request_id: + headers.setdefault(REQ_ID_HEADER, self.global_request_id) + if osprofiler_web: headers.update(osprofiler_web.get_trace_id_headers()) @@ -312,10 +317,14 @@ class SessionClient(adapter.Adapter, _BaseHTTPClient): def __init__(self, session, **kwargs): kwargs.setdefault('user_agent', USER_AGENT) kwargs.setdefault('service_type', 'image') + self.global_request_id = kwargs.pop('global_request_id', None) super(SessionClient, self).__init__(session, **kwargs) def request(self, url, method, **kwargs): headers = kwargs.pop('headers', {}) + if self.global_request_id: + headers.setdefault(REQ_ID_HEADER, self.global_request_id) + kwargs['raise_exc'] = False data = self._set_common_request_kwargs(headers, kwargs) try: |
