2
2
Consul client object
3
3
4
4
"""
5
+ import os
5
6
from consulate import adapters , api , utils
6
7
7
- DEFAULT_HOST = 'localhost'
8
- DEFAULT_PORT = 8500
8
+ DEFAULT_HOST = os .environ .get ('CONSUL_HOST' ) or 'localhost'
9
+ DEFAULT_PORT = os .environ .get ('CONSUL_PORT' ) or 8500
10
+ DEFAULT_ADDR = os .environ .get ('CONSUL_HTTP_ADDR' )
9
11
DEFAULT_SCHEME = 'http'
12
+ DEFAULT_TOKEN = os .environ .get ('CONSUL_HTTP_TOKEN' )
10
13
API_VERSION = 'v1'
11
14
12
15
@@ -23,6 +26,7 @@ class Consul(object):
23
26
adapter=consulate.adapters.UnixSocketRequest)
24
27
services = consul.agent.services()
25
28
29
+ :param str addr: The CONSUL_HTTP_ADDR if available (Default: None)
26
30
:param str host: The host name to connect to (Default: localhost)
27
31
:param int port: The port to connect on (Default: 8500)
28
32
:param str datacenter: Specify a specific data center
@@ -36,30 +40,35 @@ class Consul(object):
36
40
37
41
"""
38
42
def __init__ (self ,
43
+ addr = DEFAULT_ADDR ,
39
44
host = DEFAULT_HOST ,
40
45
port = DEFAULT_PORT ,
41
46
datacenter = None ,
42
- token = None ,
47
+ token = DEFAULT_TOKEN ,
43
48
scheme = DEFAULT_SCHEME ,
44
49
adapter = None ,
45
50
verify = True ,
46
51
cert = None ,
47
52
timeout = None ):
48
53
"""Create a new instance of the Consul class"""
49
- base_uri = self ._base_uri (scheme , host , port )
54
+ base_uri = self ._base_uri (addr = addr ,
55
+ scheme = scheme ,
56
+ host = host ,
57
+ port = port )
50
58
self ._adapter = adapter () if adapter else adapters .Request (
51
59
timeout = timeout , verify = verify , cert = cert )
52
60
self ._acl = api .ACL (base_uri , self ._adapter , datacenter , token )
53
61
self ._agent = api .Agent (base_uri , self ._adapter , datacenter , token )
54
62
self ._catalog = api .Catalog (base_uri , self ._adapter , datacenter , token )
55
63
self ._event = api .Event (base_uri , self ._adapter , datacenter , token )
56
64
self ._health = api .Health (base_uri , self ._adapter , datacenter , token )
57
- self ._coordinate = api .Coordinate (base_uri , self ._adapter , datacenter , token )
65
+ self ._coordinate = api .Coordinate (base_uri , self ._adapter , datacenter ,
66
+ token )
58
67
self ._kv = api .KV (base_uri , self ._adapter , datacenter , token )
59
68
self ._session = api .Session (base_uri , self ._adapter , datacenter , token )
60
69
self ._status = api .Status (base_uri , self ._adapter , datacenter , token )
61
- self ._lock = api .Lock (
62
- base_uri , self . _adapter , self . _session , datacenter , token )
70
+ self ._lock = api .Lock (base_uri , self . _adapter , self . _session ,
71
+ datacenter , token )
63
72
64
73
@property
65
74
def acl (self ):
@@ -172,7 +181,7 @@ def status(self):
172
181
return self ._status
173
182
174
183
@staticmethod
175
- def _base_uri (scheme , host , port ):
184
+ def _base_uri (scheme , host , port , addr = None ):
176
185
"""Return the base URI to use for API requests. Set ``port`` to None
177
186
when creating a UNIX Socket URL.
178
187
@@ -182,7 +191,10 @@ def _base_uri(scheme, host, port):
182
191
:rtype: str
183
192
184
193
"""
185
- if port :
186
- return '{0}://{1}:{2}/{3}' .format (scheme , host , port , API_VERSION )
187
- return '{0}://{1}/{2}' .format (
188
- scheme , utils .quote (host , '' ), API_VERSION )
194
+ if addr is None :
195
+ if port :
196
+ return '{0}://{1}:{2}/{3}' .format (scheme , host , port ,
197
+ API_VERSION )
198
+ return '{0}://{1}/{2}' .format (scheme , utils .quote (host , '' ),
199
+ API_VERSION )
200
+ return '{0}/{1}' .format (addr , API_VERSION )
0 commit comments