@@ -29,14 +29,15 @@ def __init__(self, client_id=None, log_level=0, tls=True, rest_host=None, realti
2929 tls_port = 0 , use_binary_protocol = True , queue_messages = True , recover = False , endpoint = None ,
3030 environment = None , http_open_timeout = None , http_request_timeout = None ,
3131 realtime_request_timeout = None , http_max_retry_count = None , http_max_retry_duration = None ,
32- fallback_hosts = None , fallback_retry_timeout = None , disconnected_retry_timeout = None ,
33- idempotent_rest_publishing = None , loop = None , auto_connect = True ,
32+ fallback_hosts = None , fallback_retry_timeout = None ,
33+ disconnected_retry_timeout = None , idempotent_rest_publishing = None , loop = None , auto_connect = True ,
3434 suspended_retry_timeout = None , connectivity_check_url = None ,
3535 channel_retry_timeout = Defaults .channel_retry_timeout , add_request_ids = False ,
3636 vcdiff_decoder : VCDiffDecoder = None , transport_params = None , ** kwargs ):
3737
3838 super ().__init__ (** kwargs )
3939
40+ # REC1b1: endpoint is incompatible with deprecated options
4041 if endpoint is not None :
4142 if environment is not None or rest_host is not None or realtime_host is not None :
4243 raise ValueError ('endpoint is incompatible with any of environment, rest_host or realtime_host' )
@@ -70,16 +71,25 @@ def __init__(self, client_id=None, log_level=0, tls=True, rest_host=None, realti
7071 idempotent_rest_publishing = api_version >= '1.2'
7172
7273 if environment is not None and endpoint is None :
74+ log .warning ("environment client option is deprecated, please use endpoint instead" )
7375 endpoint = environment
7476
77+ # REC1d: restHost or realtimeHost option
78+ # REC1d1: restHost takes precedence over realtimeHost
79+ if rest_host is not None and endpoint is None :
80+ log .warning ("rest_host client option is deprecated, please use endpoint instead" )
81+ endpoint = rest_host
82+ elif realtime_host is not None and endpoint is None :
83+ # REC1d2: realtimeHost if restHost not specified
84+ log .warning ("realtime_host client option is deprecated, please use endpoint instead" )
85+ endpoint = realtime_host
86+
7587 if endpoint is None :
7688 endpoint = Defaults .endpoint
7789
7890 self .__client_id = client_id
7991 self .__log_level = log_level
8092 self .__tls = tls
81- self .__rest_host = rest_host
82- self .__realtime_host = realtime_host
8393 self .__port = port
8494 self .__tls_port = tls_port
8595 self .__use_binary_protocol = use_binary_protocol
@@ -91,6 +101,8 @@ def __init__(self, client_id=None, log_level=0, tls=True, rest_host=None, realti
91101 self .__realtime_request_timeout = realtime_request_timeout
92102 self .__http_max_retry_count = http_max_retry_count
93103 self .__http_max_retry_duration = http_max_retry_duration
104+ # Field for internal use only
105+ self .__fallback_host = None
94106 self .__fallback_hosts = fallback_hosts
95107 self .__fallback_retry_timeout = fallback_retry_timeout
96108 self .__disconnected_retry_timeout = disconnected_retry_timeout
@@ -101,13 +113,10 @@ def __init__(self, client_id=None, log_level=0, tls=True, rest_host=None, realti
101113 self .__connection_state_ttl = connection_state_ttl
102114 self .__suspended_retry_timeout = suspended_retry_timeout
103115 self .__connectivity_check_url = connectivity_check_url
104- self .__fallback_realtime_host = None
105116 self .__add_request_ids = add_request_ids
106117 self .__vcdiff_decoder = vcdiff_decoder
107118 self .__transport_params = transport_params or {}
108-
109- self .__rest_hosts = self .__get_rest_hosts ()
110- self .__realtime_hosts = self .__get_realtime_hosts ()
119+ self .__hosts = self .__get_hosts ()
111120
112121 @property
113122 def client_id (self ):
@@ -133,23 +142,6 @@ def tls(self):
133142 def tls (self , value ):
134143 self .__tls = value
135144
136- @property
137- def rest_host (self ):
138- return self .__rest_host
139-
140- @rest_host .setter
141- def rest_host (self , value ):
142- self .__rest_host = value
143-
144- # RTC1d
145- @property
146- def realtime_host (self ):
147- return self .__realtime_host
148-
149- @realtime_host .setter
150- def realtime_host (self , value ):
151- self .__realtime_host = value
152-
153145 @property
154146 def port (self ):
155147 return self .__port
@@ -276,12 +268,18 @@ def connectivity_check_url(self):
276268 return self .__connectivity_check_url
277269
278270 @property
279- def fallback_realtime_host (self ):
280- return self .__fallback_realtime_host
271+ def fallback_host (self ):
272+ """
273+ For internal use only, can be deleted in future
274+ """
275+ return self .__fallback_host
281276
282- @fallback_realtime_host .setter
283- def fallback_realtime_host (self , value ):
284- self .__fallback_realtime_host = value
277+ @fallback_host .setter
278+ def fallback_host (self , value ):
279+ """
280+ For internal use only, can be deleted in future
281+ """
282+ self .__fallback_host = value
285283
286284 @property
287285 def add_request_ids (self ):
@@ -295,29 +293,20 @@ def vcdiff_decoder(self):
295293 def transport_params (self ):
296294 return self .__transport_params
297295
298- def __get_rest_hosts (self ):
296+ def __get_hosts (self ):
299297 """
300298 Return the list of hosts as they should be tried. First comes the main
301299 host. Then the fallback hosts in random order.
302300 The returned list will have a length of up to http_max_retry_count.
303301 """
304- # Defaults
305- host = self .rest_host
306- if host is None :
307- host = Defaults .get_hostname (self .endpoint )
302+ host = Defaults .get_hostname (self .endpoint )
303+ # REC2: Determine fallback hosts
304+ fallback_hosts = self .get_fallback_hosts ()
308305
309306 http_max_retry_count = self .http_max_retry_count
310307 if http_max_retry_count is None :
311308 http_max_retry_count = Defaults .http_max_retry_count
312309
313- # Fallback hosts
314- fallback_hosts = self .fallback_hosts
315- if fallback_hosts is None :
316- if self .rest_host is not None :
317- fallback_hosts = []
318- else :
319- fallback_hosts = Defaults .get_fallback_hosts (self .endpoint )
320-
321310 # Shuffle
322311 fallback_hosts = list (fallback_hosts )
323312 random .shuffle (fallback_hosts )
@@ -328,28 +317,19 @@ def __get_rest_hosts(self):
328317 hosts = hosts [:http_max_retry_count ]
329318 return hosts
330319
331- def __get_realtime_hosts (self ):
332- if self .realtime_host is not None :
333- host = self .realtime_host
334- return [host ]
335-
336- host = Defaults .get_hostname (self .endpoint )
337- return [host ] + self .__fallback_hosts
338-
339- def get_rest_hosts (self ):
340- return self .__rest_hosts
341-
342- def get_rest_host (self ):
343- return self .__rest_hosts [0 ]
344-
345- def get_realtime_hosts (self ):
346- return self .__realtime_hosts
320+ def get_hosts (self ):
321+ return self .__hosts
347322
348- def get_realtime_host (self ):
349- return self .__realtime_hosts [0 ]
323+ def get_host (self ):
324+ return self .__hosts [0 ]
350325
351- def get_fallback_rest_hosts (self ):
352- return self .__rest_hosts [1 :]
326+ # REC2: Various client options collectively determine a set of fallback domains
327+ def get_fallback_hosts (self ):
328+ # REC2a: If the fallbackHosts client option is specified
329+ if self .__fallback_hosts is not None :
330+ # REC2a2: the set of fallback domains is given by the value of the fallbackHosts option
331+ return self .__fallback_hosts
353332
354- def get_fallback_realtime_hosts (self ):
355- return self .__realtime_hosts [1 :]
333+ # REC2c: Otherwise, the set of fallback domains is defined implicitly by the options
334+ # used to define the primary domain as specified in (REC1)
335+ return Defaults .get_fallback_hosts (self .endpoint )
0 commit comments