Fix logic in healthy/unhealthy
[mirror/dsa-puppet.git] / modules / roles / files / mirror_health / mirror-health
index fb8241b..6214882 100755 (executable)
@@ -14,18 +14,18 @@ HEALTH_FILE = os.path.join(OUTPUT_DIR, "health")
 URL = os.environ['MIRROR_CHECK_URL']
 INTERVAL = int(os.environ.get('MIRROR_CHECK_INTERVAL', '60'))
 
-latest_tz = 0
+latest_ts = 0
 
 def retrieve_from_host(host, url):
     proxies = {
         'http': 'http://{}:80'.format(host),
         'https': 'http://{}:443'.format(host),
     }
-    return requests.get(url, timeout=5, proxies=proxies)
+    return requests.get(url, timeout=5, proxies=proxies, allow_redirects=False)
 
 def last_modified(response):
     lm = 0
-    if response.status_code == '200' and response.headers.get('last-modified'):
+    if response.status_code == 200 and response.headers.get('last-modified'):
         lm = calendar.timegm(parsedate(response.headers['last-modified']))
     return lm
 
@@ -34,18 +34,18 @@ while True:
     for host in HOSTS:
         lm = last_modified(retrieve_from_host(host, URL))
         logging.debug("lm for host %s: %s", host, lm)
-        if lm > latest_tz:
-            latest_tz = lm
+        if lm > latest_ts:
+            latest_ts = lm
     local_lm = last_modified(retrieve_from_host('localhost', URL))
-    logging.debug("lm for localhost: %s", lm)
-    if latest_tz <= local_lm:
+    logging.debug("lm for localhost: %s", local_lm)
+    if local_lm < latest_ts:
         try:
-            logging.debug("considering myself unhealthy")
+            logging.info("considering myself unhealthy my ts=%s latest_ts=%s", local_lm, latest_ts)
             os.remove(HEALTH_FILE)
         except OSError:
             pass
     else:
-        logging.debug("considering myself healthy")
+        logging.info("considering myself healthy")
         open(HEALTH_FILE, 'w').write("OK")
     sleep_time = start + INTERVAL - time.time()
     logging.debug("sleeping for %d seconds", sleep_time)