22Consul client object
33
44"""
5+ import os
56from consulate import adapters , api , utils
67
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' )
911DEFAULT_SCHEME = 'http'
12+ DEFAULT_TOKEN = os .environ .get ('CONSUL_HTTP_TOKEN' )
1013API_VERSION = 'v1'
1114
1215
@@ -23,6 +26,7 @@ class Consul(object):
2326 adapter=consulate.adapters.UnixSocketRequest)
2427 services = consul.agent.services()
2528
29+ :param str addr: The CONSUL_HTTP_ADDR if available (Default: None)
2630 :param str host: The host name to connect to (Default: localhost)
2731 :param int port: The port to connect on (Default: 8500)
2832 :param str datacenter: Specify a specific data center
@@ -36,30 +40,35 @@ class Consul(object):
3640
3741 """
3842 def __init__ (self ,
43+ addr = DEFAULT_ADDR ,
3944 host = DEFAULT_HOST ,
4045 port = DEFAULT_PORT ,
4146 datacenter = None ,
42- token = None ,
47+ token = DEFAULT_TOKEN ,
4348 scheme = DEFAULT_SCHEME ,
4449 adapter = None ,
4550 verify = True ,
4651 cert = None ,
4752 timeout = None ):
4853 """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 )
5058 self ._adapter = adapter () if adapter else adapters .Request (
5159 timeout = timeout , verify = verify , cert = cert )
5260 self ._acl = api .ACL (base_uri , self ._adapter , datacenter , token )
5361 self ._agent = api .Agent (base_uri , self ._adapter , datacenter , token )
5462 self ._catalog = api .Catalog (base_uri , self ._adapter , datacenter , token )
5563 self ._event = api .Event (base_uri , self ._adapter , datacenter , token )
5664 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 )
5867 self ._kv = api .KV (base_uri , self ._adapter , datacenter , token )
5968 self ._session = api .Session (base_uri , self ._adapter , datacenter , token )
6069 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 )
6372
6473 @property
6574 def acl (self ):
@@ -172,7 +181,7 @@ def status(self):
172181 return self ._status
173182
174183 @staticmethod
175- def _base_uri (scheme , host , port ):
184+ def _base_uri (scheme , host , port , addr = None ):
176185 """Return the base URI to use for API requests. Set ``port`` to None
177186 when creating a UNIX Socket URL.
178187
@@ -182,7 +191,10 @@ def _base_uri(scheme, host, port):
182191 :rtype: str
183192
184193 """
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