From 74bcff85453c6dd1f39a6f6957d926314411a512 Mon Sep 17 00:00:00 2001 From: Corey McCandless Date: Fri, 6 Mar 2020 09:12:51 -0500 Subject: [PATCH 1/3] fetch-configlet: use logging module instead of print --- bin/fetch-configlet | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/bin/fetch-configlet b/bin/fetch-configlet index 40663201040..099e45137cb 100755 --- a/bin/fetch-configlet +++ b/bin/fetch-configlet @@ -2,6 +2,7 @@ from datetime import datetime, timezone import io import json +import logging import platform import sys import tarfile @@ -10,9 +11,13 @@ from urllib.request import urlopen from urllib.error import HTTPError, URLError +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__file__) + BACKOFF_TIME = 5 # in seconds MAX_RETRIES = 5 + def download_and_extract(url): try: with urlopen(url) as request: @@ -22,15 +27,15 @@ def download_and_extract(url): status = err.code response = err.reason except URLError as err: - print(err.reason) + logger.error(err.reason) time.sleep(BACKOFF_TIME) return False if status >= 400: - print(f"Unexpected {status} status from download server.") + logger.error(f"Unexpected {status} status from download server.") time.sleep(BACKOFF_TIME) return False - print("extracting...") + logger.info("extracting...") with tarfile.open(fileobj=io.BytesIO(response), mode="r:*") as file: file.extractall(path="bin/") return True @@ -62,11 +67,11 @@ def fetch_configlet(): headers = err.headers response = err.reason except URLError as err: - print(err.reason) + logger.error(err.reason) time.sleep(BACKOFF_TIME) return 1 if status >= 500: - print(f"Sleeping due to {status} response from API.") + logger.info(f"Sleeping due to {status} response from API.") time.sleep(BACKOFF_TIME) return 1 if status == 403: @@ -76,18 +81,19 @@ def fetch_configlet(): delta = wait_until - datetime.now(timezone.utc) seconds = delta.total_seconds() wait = seconds + 5 if seconds > BACKOFF_TIME else BACKOFF_TIME - print(f"Rate limited, sleeping {wait} seconds.") + logger.info(f"Rate limited, sleeping {wait} seconds.") time.sleep(wait) return 1 if status >= 400: - sys.exit(f"Received unexpected {status} response from API.") + logger.error(f"Received unexpected {status} response from API.") + return 1 data = json.loads(response.decode("utf-8")) version = data["tag_name"] machine_info = f"{get_os()}-{get_arch()}" name = f"configlet-{machine_info}.tgz" for asset in data["assets"]: if asset["name"] == name: - print(f"Downloading configlet {version} for {machine_info}") + logger.info(f"Downloading configlet {version} for {machine_info}") for _ in range(MAX_RETRIES): if download_and_extract(asset["browser_download_url"]): return 0 From 978afde3782d2860a519d06b1d3ca9b418a3e524 Mon Sep 17 00:00:00 2001 From: Corey McCandless Date: Fri, 6 Mar 2020 12:30:20 -0500 Subject: [PATCH 2/3] better error logging --- bin/fetch-configlet | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/fetch-configlet b/bin/fetch-configlet index 099e45137cb..4786d7f18a7 100755 --- a/bin/fetch-configlet +++ b/bin/fetch-configlet @@ -31,7 +31,7 @@ def download_and_extract(url): time.sleep(BACKOFF_TIME) return False if status >= 400: - logger.error(f"Unexpected {status} status from download server.") + logger.error(f"Unexpected {status} status from download server: {response}") time.sleep(BACKOFF_TIME) return False @@ -67,11 +67,11 @@ def fetch_configlet(): headers = err.headers response = err.reason except URLError as err: - logger.error(err.reason) + logger.exception(err) time.sleep(BACKOFF_TIME) return 1 if status >= 500: - logger.info(f"Sleeping due to {status} response from API.") + logger.info(f"Sleeping due to {status} response from API: {response}") time.sleep(BACKOFF_TIME) return 1 if status == 403: @@ -85,7 +85,7 @@ def fetch_configlet(): time.sleep(wait) return 1 if status >= 400: - logger.error(f"Received unexpected {status} response from API.") + logger.error(f"Received unexpected {status} response from API: {response}") return 1 data = json.loads(response.decode("utf-8")) version = data["tag_name"] From 35241a3fe1804acc776befdac15dc7a08e6526c2 Mon Sep 17 00:00:00 2001 From: Corey McCandless Date: Sun, 8 Mar 2020 11:49:01 -0400 Subject: [PATCH 3/3] Update fetch-configlet --- bin/fetch-configlet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/fetch-configlet b/bin/fetch-configlet index 4786d7f18a7..f877fc68af4 100755 --- a/bin/fetch-configlet +++ b/bin/fetch-configlet @@ -12,7 +12,7 @@ from urllib.error import HTTPError, URLError logging.basicConfig(level=logging.INFO) -logger = logging.getLogger(__file__) +logger = logging.getLogger(__name__) BACKOFF_TIME = 5 # in seconds MAX_RETRIES = 5