diff --git a/scripts/logs_loop/start.py b/scripts/logs_loop/start.py index 2a9fc46..4bfcc87 100644 --- a/scripts/logs_loop/start.py +++ b/scripts/logs_loop/start.py @@ -15,11 +15,15 @@ import time import re file = pathlib.Path('/tmp/redis.sock') + if file.exists(): r = redis.Redis(unix_socket_path='/tmp/redis.sock', charset="utf-8", decode_responses=True) else: r = redis.Redis("127.0.0.1", charset="utf-8", decode_responses=True) +if os.environ.get("DEV"): + r.set("log_pod_regex", ".*") + # create logger logging.basicConfig(level=os.environ.get("LOGLEVEL", "INFO")) logging.info('Starting script for KubeInvaders programming mode') @@ -43,37 +47,40 @@ namespace = "kubeinvaders" # r.delete(key) while True: - pods_items = [] + webtail_pods = [] + final_pod_list = [] if r.exists("log_pod_regex"): + logging.info("Found regex log_pod_regex in Redis. Logs from all pods should be collected") log_pod_regex = r.get("log_pod_regex") try: api_response = api_instance.list_pod_for_all_namespaces() except ApiException as e: logging.info(e) - + logging.info(f"Going to search pod compliant with the regex on {len(api_response.items)} pods") for pod in api_response.items: - if re.search(log_pod_regex, pod.metadata.name): - pods_items.append(pod) + if re.search(f"{log_pod_regex}", pod.metadata.name): + webtail_pods.append(pod) + logging.info(f"Taking log of {pod.metadata.name} because it is compliant with the regex {log_pod_regex}") try: api_response = api_instance.list_namespaced_pod(namespace="kubeinvaders") except ApiException as e: logging.info(e) - pods_items = pods_items + api_response.items + final_pod_list = webtail_pods + api_response.items - for pod in api_response.items: - if pod.metadata.labels.get('approle') != None and pod.metadata.labels['approle'] == 'chaosnode' and pod.status.phase != "Pending": + for pod in final_pod_list: + if ((pod.metadata.name in webtail_pods) or (pod.metadata.labels.get('approle') != None and pod.metadata.labels['approle'] == 'chaosnode' and pod.status.phase != "Pending")): try: - logging.info(f"Reading logs of {pod.metadata.name}") - api_response = api_instance.read_namespaced_pod_log(name=pod.metadata.name, namespace='kubeinvaders') + logging.info(f"Reading logs of {pod.metadata.name} on {pod.metadata.namespace}") + api_response = api_instance.read_namespaced_pod_log(name=pod.metadata.name, namespace=pod.metadata.namespace) logrow = f"