From 51ae9bbbb049392970f1f077523a4ee7ba7ef57b Mon Sep 17 00:00:00 2001 From: kapucko Date: Wed, 21 Mar 2018 15:45:22 +0100 Subject: [PATCH 1/3] put token to header if present --- consul/base.py | 5 +++-- consul/std.py | 15 +++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/consul/base.py b/consul/base.py index 09203b6d..95c6b14c 100755 --- a/consul/base.py +++ b/consul/base.py @@ -231,13 +231,14 @@ def cb(response): class HTTPClient(six.with_metaclass(abc.ABCMeta, object)): def __init__(self, host='127.0.0.1', port=8500, scheme='http', - verify=True, cert=None): + verify=True, cert=None, headers=None): self.host = host self.port = port self.scheme = scheme self.verify = verify self.base_uri = '%s://%s:%s' % (self.scheme, self.host, self.port) self.cert = cert + self.headers = headers or dict() def uri(self, path, params=None): uri = self.base_uri + urllib.parse.quote(path, safe='/:') @@ -307,8 +308,8 @@ def __init__( if os.getenv('CONSUL_HTTP_SSL_VERIFY') is not None: verify = os.getenv('CONSUL_HTTP_SSL_VERIFY') == 'true' - self.http = self.connect(host, port, scheme, verify, cert) self.token = os.getenv('CONSUL_HTTP_TOKEN', token) + self.http = self.connect(host, port, scheme, verify, cert, self.token) self.scheme = scheme self.dc = dc assert consistency in ('default', 'consistent', 'stale'), \ diff --git a/consul/std.py b/consul/std.py index 96a5b9dc..147fb3c5 100644 --- a/consul/std.py +++ b/consul/std.py @@ -19,26 +19,29 @@ def response(self, response): def get(self, callback, path, params=None): uri = self.uri(path, params) return callback(self.response( - self.session.get(uri, verify=self.verify, cert=self.cert))) + self.session.get(uri, verify=self.verify, cert=self.cert, headers=self.headers))) def put(self, callback, path, params=None, data=''): uri = self.uri(path, params) return callback(self.response( self.session.put(uri, data=data, verify=self.verify, - cert=self.cert))) + cert=self.cert, headers=self.headers))) def delete(self, callback, path, params=None): uri = self.uri(path, params) return callback(self.response( - self.session.delete(uri, verify=self.verify, cert=self.cert))) + self.session.delete(uri, verify=self.verify, cert=self.cert, headers=self.headers))) def post(self, callback, path, params=None, data=''): uri = self.uri(path, params) return callback(self.response( self.session.post(uri, data=data, verify=self.verify, - cert=self.cert))) + cert=self.cert, headers=self.headers))) class Consul(base.Consul): - def connect(self, host, port, scheme, verify=True, cert=None): - return HTTPClient(host, port, scheme, verify, cert) + def connect(self, host, port, scheme, verify=True, cert=None, token=None): + headers = dict() + if token is not None: + headers['X-Consul-Token'] = token + return HTTPClient(host, port, scheme, verify, cert, headers) From 68ef432419d4a89ed779834fcb1c7e3721d7c8ee Mon Sep 17 00:00:00 2001 From: kapucko Date: Thu, 22 Mar 2018 09:26:18 +0100 Subject: [PATCH 2/3] added token argument --- tests/test_base.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/test_base.py b/tests/test_base.py index 7ea79fbd..ab4b2097 100755 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -25,8 +25,11 @@ def delete(self, callback, path, params=None): class Consul(consul.base.Consul): - def connect(self, host, port, scheme, verify=True, cert=None): - return HTTPClient(host, port, scheme, verify=verify, cert=None) + def connect(self, host, port, scheme, verify=True, cert=None, token=None): + headers = dict() + if token is not None: + headers['X-Consul-Token'] = token + return HTTPClient(host, port, scheme, verify=verify, cert=None, headers=headers) def _should_support(c): From bb73309c03cedd9fb1a97d3d463f19ad45015664 Mon Sep 17 00:00:00 2001 From: kapucko Date: Thu, 22 Mar 2018 09:30:43 +0100 Subject: [PATCH 3/3] added headers arg to HTTPClient constructor --- tests/test_base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_base.py b/tests/test_base.py index ab4b2097..c5ec6b72 100755 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -11,7 +11,7 @@ class HTTPClient(object): def __init__(self, host=None, port=None, scheme=None, - verify=True, cert=None): + verify=True, cert=None, headers=None): pass def get(self, callback, path, params=None):