X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=health_renderer.py;h=cfa6a8a2dfd0f47ff6777a7e09fab95c53b97721;hb=da3a11e9fcea80a7700eb54605512d331a9ec612;hp=55e4cf937d25aca755fa6264cc561bd06fc7baf2;hpb=4b1f3d8a8b278ca6d62f461ea80c8ea21080c301;p=kiosk.git diff --git a/health_renderer.py b/health_renderer.py index 55e4cf9..cfa6a8a 100644 --- a/health_renderer.py +++ b/health_renderer.py @@ -1,137 +1,28 @@ -import constants -import file_writer -import os -import renderer -import time - -class periodic_health_renderer(renderer.debuggable_abstaining_renderer): - def __init__(self, name_to_timeout_dict): - super(periodic_health_renderer, self).__init__(name_to_timeout_dict, False) - - def debug_prefix(self): - return "health" - - def periodic_render(self, key): - f = file_writer.file_writer('periodic-health_6_300.html') - timestamps = '/timestamps/' - days = constants.seconds_per_day - hours = constants.seconds_per_hour - mins = constants.seconds_per_minute - limits = { - timestamps + 'last_rsnapshot_hourly' : hours * 24, - timestamps + 'last_rsnapshot_daily' : days * 3, - timestamps + 'last_rsnapshot_weekly' : days * 14, - timestamps + 'last_rsnapshot_monthly' : days * 70, +#!/usr/bin/env python3 - timestamps + 'last_zfssnapshot_hourly' : hours * 5, - timestamps + 'last_zfssnapshot_daily' : hours * 36, - timestamps + 'last_zfssnapshot_weekly' : days * 9, - timestamps + 'last_zfssnapshot_monthly' : days * 70, - timestamps + 'last_zfssnapshot_cleanup' : hours * 24, +import logging +import subprocess +from typing import Dict - timestamps + 'last_disk_selftest_short' : days * 14, - timestamps + 'last_disk_selftest_long' : days * 31, - timestamps + 'last_zfs_scrub' : days * 9, - timestamps + 'last_zfs_scrub_backup' : days * 9, +import file_writer +import renderer - timestamps + 'last_zfsxfer_backup.house' : hours * 36, - timestamps + 'last_zfsxfer_ski.dyn.guru.org' : days * 7, - timestamps + 'last_photos_sync' : hours * 8, - timestamps + 'last_disk_selftest_backup_short': days * 14, - timestamps + 'last_disk_selftest_backup_long' : days * 31, - timestamps + 'last_healthy_wifi' : mins * 10, - timestamps + 'last_healthy_network' : mins * 10, - timestamps + 'last_scott_sync' : days * 2, - } - self.write_header(f) +logger = logging.getLogger(__file__) - now = time.time() - n = 0 - for x in sorted(limits): - ts = os.stat(x).st_mtime - age = now - ts - self.debug_print("%s -- age is %ds, limit is %ds" % (x, age, limits[x])) - if age < limits[x]: - f.write('\n') - else: - f.write('\n') - f.write("
\n") - name = x.replace(timestamps, "") - name = name.replace("last_", "") - name = name.replace("_", " ") - days = divmod(age, constants.seconds_per_day) - hours = divmod(days[1], constants.seconds_per_hour) - minutes = divmod(hours[1], constants.seconds_per_minute) +class periodic_health_renderer(renderer.abstaining_renderer): + def __init__(self, name_to_timeout_dict: Dict[str, int]) -> None: + super().__init__(name_to_timeout_dict) - self.debug_print("%s is %d days %02d:%02d old." % ( - name, days[0], hours[0], minutes[0])) - f.write("%s
\n%d days %02d:%02d old.\n" % ( - name, days[0], hours[0], minutes[0])) - f.write("
\n\n\n") - n += 1 - if n % 3 == 0: - f.write("\n\n\n") - self.write_footer(f) - f.close() + def periodic_render(self, key: str) -> bool: + with file_writer.file_writer("periodic-health_6_300.html") as f: + command = "/home/pi/bin/cronhealth.py --kiosk_mode" + p = subprocess.Popen(command, shell=True, bufsize=0, stdout=subprocess.PIPE) + for line in iter(p.stdout.readline, b''): + f.write(line.decode("utf-8")) + p.stdout.close() return True - def write_header(self, f): - f.write(""" - - - - - - - - - - -

Periodic Cronjob Health Report

-
-
- - -""") - - def write_footer(self, f): - f.write(""" - -
- -""") - #test = periodic_health_renderer({"Test", 123}) +#test.periodic_render("Test")