This repository was archived by the owner on Dec 13, 2018. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11import json
22import logging
3+ import time
34
45import dockercloud
56from compose .cli .docker_client import docker_client
@@ -52,12 +53,23 @@ def on_user_reload(signum, frame):
5253 run_haproxy ("User reload" )
5354
5455
56+ def on_cloud_error (e ):
57+ if isinstance (e , KeyboardInterrupt ):
58+ exit (0 )
59+
60+
5561def listen_dockercloud_events ():
5662 events = dockercloud .Events ()
5763 events .on_open (on_websocket_open )
5864 events .on_close (on_websocket_close )
5965 events .on_message (on_cloud_event )
60- events .run_forever ()
66+ events .on_error (on_cloud_error )
67+ while True :
68+ try :
69+ events .run_forever ()
70+ except dockercloud .AuthError as e :
71+ logger .info ("Auth error: %s, retry in 1 hour" % e )
72+ time .sleep (3600 )
6173
6274
6375def listen_docker_events ():
Original file line number Diff line number Diff line change @@ -64,11 +64,14 @@ def _initialize(link_mode):
6464 @staticmethod
6565 def _init_cloud_links ():
6666 haproxy_container = fetch_remote_obj (HAPROXY_CONTAINER_URI )
67- links = CloudLinkHelper .get_cloud_links (haproxy_container )
68- Haproxy .cls_linked_services = CloudLinkHelper .get_linked_services (links )
69- logger .info ("Linked service: %s" , ", " .join (CloudLinkHelper .get_service_links_str (links )))
70- logger .info ("Linked container: %s" , ", " .join (CloudLinkHelper .get_container_links_str (links )))
71- return links
67+ if haproxy_container :
68+ links = CloudLinkHelper .get_cloud_links (haproxy_container )
69+ Haproxy .cls_linked_services = CloudLinkHelper .get_linked_services (links )
70+ logger .info ("Linked service: %s" , ", " .join (CloudLinkHelper .get_service_links_str (links )))
71+ logger .info ("Linked container: %s" , ", " .join (CloudLinkHelper .get_container_links_str (links )))
72+ return links
73+ else :
74+ return {}
7275
7376 @staticmethod
7477 def _init_new_links ():
Original file line number Diff line number Diff line change 77
88logger = logging .getLogger ("haproxy" )
99
10+ invalid_auth_headers = set ()
11+
1012
1113def fetch_remote_obj (uri ):
1214 if not uri :
1315 return None
1416
17+ auth_header = str (dockercloud .auth .get_auth_header ())
1518 while True :
1619 try :
20+ if auth_header in invalid_auth_headers :
21+ logger .info ("Using know invalid credentials" )
22+ return None
1723 obj = dockercloud .Utils .fetch_by_resource_uri (uri )
1824 return obj
25+ except dockercloud .AuthError as e :
26+ invalid_auth_headers .add (auth_header )
27+ logger .info (e )
28+ return None
1929 except Exception as e :
20- logger .error (e )
30+ logger .info (e )
2131 time .sleep (config .API_RETRY )
2232
2333
You can’t perform that action at this time.
0 commit comments