Better handle case where diagnosis cache is missing

This commit is contained in:
Alexandre Aubin 2019-11-20 18:37:59 +01:00
parent 09bbd733b1
commit 16f6d500a3
2 changed files with 30 additions and 20 deletions

View file

@ -158,6 +158,7 @@
"diagnosis_found_warnings": "Found {warnings} item(s) that could be improved for {category}.", "diagnosis_found_warnings": "Found {warnings} item(s) that could be improved for {category}.",
"diagnosis_everything_ok": "Everything looks good for {category}!", "diagnosis_everything_ok": "Everything looks good for {category}!",
"diagnosis_failed": "Failed to fetch diagnosis result for category '{category}' : {error}", "diagnosis_failed": "Failed to fetch diagnosis result for category '{category}' : {error}",
"diagnosis_no_cache": "No diagnosis cache yet for category '{category}'",
"diagnosis_ip_connected_ipv4": "The server is connected to the Internet through IPv4 !", "diagnosis_ip_connected_ipv4": "The server is connected to the Internet through IPv4 !",
"diagnosis_ip_no_ipv4": "The server does not have a working IPv4.", "diagnosis_ip_no_ipv4": "The server does not have a working IPv4.",
"diagnosis_ip_connected_ipv6": "The server is connected to the Internet through IPv6 !", "diagnosis_ip_connected_ipv6": "The server is connected to the Internet through IPv6 !",

View file

@ -61,28 +61,37 @@ def diagnosis_show(categories=[], issues=False, full=False, share=False):
# Fetch all reports # Fetch all reports
all_reports = [] all_reports = []
for category in categories: for category in categories:
try: if not os.path.exists(Diagnoser.cache_file(category)):
report = Diagnoser.get_cached_report(category) logger.warning(m18n.n("diagnosis_no_cache", category=category))
except Exception as e: report = {"id": category,
logger.error(m18n.n("diagnosis_failed", category=category, error=str(e))) "cached_for": -1,
"timestamp": -1,
"items": []}
Diagnoser.i18n(report)
else: else:
add_ignore_flag_to_issues(report) try:
if not full: report = Diagnoser.get_cached_report(category)
del report["timestamp"] except Exception as e:
del report["cached_for"] logger.error(m18n.n("diagnosis_failed", category=category, error=str(e)))
report["items"] = [item for item in report["items"] if not item["ignored"]] continue
for item in report["items"]:
del item["meta"]
del item["ignored"]
if "data" in item:
del item["data"]
if issues:
report["items"] = [item for item in report["items"] if item["status"] in ["WARNING", "ERROR"]]
# Ignore this category if no issue was found
if not report["items"]:
continue
all_reports.append(report) add_ignore_flag_to_issues(report)
if not full:
del report["timestamp"]
del report["cached_for"]
report["items"] = [item for item in report["items"] if not item["ignored"]]
for item in report["items"]:
del item["meta"]
del item["ignored"]
if "data" in item:
del item["data"]
if issues:
report["items"] = [item for item in report["items"] if item["status"] in ["WARNING", "ERROR"]]
# Ignore this category if no issue was found
if not report["items"]:
continue
all_reports.append(report)
if share: if share:
from yunohost.utils.yunopaste import yunopaste from yunohost.utils.yunopaste import yunopaste