diff --git a/scripts/logs_loop/start.py b/scripts/logs_loop/start.py
index 2ca1004..6b71ca8 100644
--- a/scripts/logs_loop/start.py
+++ b/scripts/logs_loop/start.py
@@ -19,6 +19,39 @@ import time
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
+def compute_line(api_response_line, api_instance):
+ logging.info(f"[logid:{logid}] API Response: {api_response_line}")
+
+ logrow = f"
[namespace:{pod.metadata.namespace}][pod:{pod.metadata.name}]
>>>{api_response_line}
"
+
+ store = False
+ sha256log = sha256(logrow.encode('utf-8')).hexdigest()
+
+ if r.exists(f"log:{logid}:{pod.metadata.name}:{sha256log}"):
+ current_row = r.get(f"log:{logid}:{pod.metadata.name}:{sha256log}")
+ if current_row != logrow:
+ store = True
+
+ if not r.exists(f"log:{logid}:{pod.metadata.name}:{sha256log}") or store:
+ logging.info(f"[logid:{logid}] The key log:{logid}:{pod.metadata.name}:{sha256log} does not exists. Preparing to store log content")
+ file = pathlib.Path('/var/www/html')
+ if file.exists():
+ log_html_file = pathlib.Path(f"/var/www/html/chaoslogs-{logid}.html")
+ line_prepender(log_html_file, logrow, logid)
+
+ r.set(f"log:{logid}{pod.metadata.name}:{sha256log}", logrow)
+ r.set(f"log_time:{logid}:{pod.metadata.name}", time.time())
+ r.expire(f"log:{logid}:{pod.metadata.name}:{sha256log}", 60)
+
+ logging.info(f"[logid:{logid}] Phase of {pod.metadata.name} is {pod.status.phase}")
+ if pod.status.phase == "Succeeded" and pod.metadata.labels['approle'] == 'chaosnode':
+ try:
+ api_instance.delete_namespaced_pod(pod.metadata.name, namespace = pod.metadata.namespace)
+ logging.info(f"[logid:{logid}] Deleted pod {pod.metadata.name}")
+ except ApiException as e:
+ logging.info(e)
+
+
def line_prepender(filename, line, logid):
logging.info(f"[logid:{logid}] Entering in line_prepender function")
log_html_file = pathlib.Path(filename)
@@ -106,7 +139,7 @@ while True:
logging.info(f"[logid:{logid}] Remove /var/www/html/chaoslogs-{logid}.html")
os.remove(f"/var/www/html/chaoslogs-{logid}.html")
r.set(f"log_cleaner:{logid}", "1")
- r.expire(f"log_cleaner:{logid}", 30)
+ r.expire(f"log_cleaner:{logid}", 60)
else:
logging.info(f"[logid:{logid}] The key log_cleaner:{logid} esists. Clean /var/www/html/chaoslogs-{logid}.html is not needed")
@@ -160,7 +193,7 @@ while True:
webtail_switch = False
if r.get("programming_mode") == "0":
- final_pod_list = webtail_pods + api_response.items
+ final_pod_list = webtail_pods
if len(webtail_pods) > 0:
webtail_switch = True
else:
@@ -185,40 +218,18 @@ while True:
if since == 0:
since = 1
- api_response = api_instance.read_namespaced_pod_log(name=pod.metadata.name, namespace=pod.metadata.namespace, tail_lines=1, since_seconds=since)
+ api_response = api_instance.read_namespaced_pod_log(name=pod.metadata.name, namespace=pod.metadata.namespace, since_seconds=since)
+ r.set(f"log_time:{logid}:{pod.metadata.name}", time.time())
if api_response == "":
continue
- logging.info(f"[logid:{logid}] API Response: {api_response}")
-
- logrow = f"[namespace:{pod.metadata.namespace}][pod:{pod.metadata.name}]
>>>{api_response}
"
- store = False
- sha256log = sha256(logrow.encode('utf-8')).hexdigest()
+ if api_response.__class__.__name__ == "list":
+ for api_response_line in api_response:
+ compute_line(api_response_line, api_instance)
+ else:
+ compute_line(api_response, api_instance)
- if r.exists(f"log:{logid}:{pod.metadata.name}:{sha256log}"):
- current_row = r.get(f"log:{logid}:{pod.metadata.name}:{sha256log}")
- if current_row != logrow:
- store = True
-
- if not r.exists(f"log:{logid}:{pod.metadata.name}:{sha256log}") or store:
- logging.info(f"[logid:{logid}] The key log:{logid}:{pod.metadata.name}:{sha256log} does not exists. Preparing to store log content")
- file = pathlib.Path('/var/www/html')
- if file.exists():
- log_html_file = pathlib.Path(f"/var/www/html/chaoslogs-{logid}.html")
- line_prepender(log_html_file, logrow, logid)
-
- r.set(f"log:{logid}{pod.metadata.name}:{sha256log}", logrow)
- r.set(f"log_time:{logid}:{pod.metadata.name}", time.time())
- r.expire(f"log:{logid}:{pod.metadata.name}:{sha256log}", 30)
-
- logging.info(f"[logid:{logid}] Phase of {pod.metadata.name} is {pod.status.phase}")
- if pod.status.phase == "Succeeded" and pod.metadata.labels['approle'] == 'chaosnode':
- try:
- api_response = api_instance.delete_namespaced_pod(pod.metadata.name, namespace = pod.metadata.namespace)
- logging.info(f"[logid:{logid}] Deleted pod {pod.metadata.name}")
- except ApiException as e:
- logging.info(e)
except ApiException as e:
logging.info(e)
time.sleep(0.5)