mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Implement diagnosis_show
This commit is contained in:
parent
abffba9607
commit
8a415579bf
2 changed files with 43 additions and 12 deletions
|
@ -1874,9 +1874,9 @@ diagnosis:
|
||||||
action_help: List diagnosis categories
|
action_help: List diagnosis categories
|
||||||
api: GET /diagnosis/list
|
api: GET /diagnosis/list
|
||||||
|
|
||||||
report:
|
show:
|
||||||
action_help: Show most recents diagnosis results
|
action_help: Show most recents diagnosis results
|
||||||
api: GET /diagnosis/report
|
api: GET /diagnosis/show
|
||||||
arguments:
|
arguments:
|
||||||
categories:
|
categories:
|
||||||
help: Diagnosis categories to display (all by default)
|
help: Diagnosis categories to display (all by default)
|
||||||
|
|
|
@ -43,8 +43,33 @@ def diagnosis_list():
|
||||||
all_categories_names = [ h for h, _ in _list_diagnosis_categories() ]
|
all_categories_names = [ h for h, _ in _list_diagnosis_categories() ]
|
||||||
return { "categories": all_categories_names }
|
return { "categories": all_categories_names }
|
||||||
|
|
||||||
def diagnosis_report(categories=[], full=False):
|
def diagnosis_show(categories=[], full=False):
|
||||||
pass
|
|
||||||
|
# Get all the categories
|
||||||
|
all_categories = _list_diagnosis_categories()
|
||||||
|
all_categories_names = [ category for category, _ in all_categories ]
|
||||||
|
|
||||||
|
# Check the requested category makes sense
|
||||||
|
if categories == []:
|
||||||
|
categories = all_categories_names
|
||||||
|
else:
|
||||||
|
unknown_categories = [ c for c in categories if c not in all_categories_names ]
|
||||||
|
if unknown_categories:
|
||||||
|
raise MoulinetteError(m18n.n('unknown_categories', categories=", ".join(categories)))
|
||||||
|
|
||||||
|
# Fetch all reports
|
||||||
|
all_reports = [ Diagnoser.get_cached_report(c) for c in categories ]
|
||||||
|
|
||||||
|
# "Render" the strings with m18n.n
|
||||||
|
for report in all_reports:
|
||||||
|
|
||||||
|
report["description"] = m18n.n(report["description"])
|
||||||
|
|
||||||
|
for r in report["reports"]:
|
||||||
|
type_, message_key, message_args = r["report"]
|
||||||
|
r["report"] = (type_, m18n.n(message_key, **message_args))
|
||||||
|
|
||||||
|
return {"reports": all_reports}
|
||||||
|
|
||||||
def diagnosis_run(categories=[], force=False, args=None):
|
def diagnosis_run(categories=[], force=False, args=None):
|
||||||
|
|
||||||
|
@ -82,6 +107,7 @@ def diagnosis_ignore(category, args="", unignore=False):
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
|
|
||||||
|
|
||||||
class Diagnoser():
|
class Diagnoser():
|
||||||
|
|
||||||
def __init__(self, args, env, loggers):
|
def __init__(self, args, env, loggers):
|
||||||
|
@ -90,10 +116,7 @@ class Diagnoser():
|
||||||
self.env = env
|
self.env = env
|
||||||
self.args = args
|
self.args = args
|
||||||
self.args.update(self.validate_args(args))
|
self.args.update(self.validate_args(args))
|
||||||
|
self.cache_file = Diagnoser.cache_file(self.id_)
|
||||||
@property
|
|
||||||
def cache_file(self):
|
|
||||||
return os.path.join(DIAGNOSIS_CACHE, "%s.json" % self.id_)
|
|
||||||
|
|
||||||
def cached_time_ago(self):
|
def cached_time_ago(self):
|
||||||
|
|
||||||
|
@ -101,9 +124,6 @@ class Diagnoser():
|
||||||
return 99999999
|
return 99999999
|
||||||
return time.time() - os.path.getmtime(self.cache_file)
|
return time.time() - os.path.getmtime(self.cache_file)
|
||||||
|
|
||||||
def get_cached_report(self):
|
|
||||||
return read_json(self.cache_file)
|
|
||||||
|
|
||||||
def write_cache(self, report):
|
def write_cache(self, report):
|
||||||
if not os.path.exists(DIAGNOSIS_CACHE):
|
if not os.path.exists(DIAGNOSIS_CACHE):
|
||||||
os.makedirs(DIAGNOSIS_CACHE)
|
os.makedirs(DIAGNOSIS_CACHE)
|
||||||
|
@ -113,7 +133,7 @@ class Diagnoser():
|
||||||
|
|
||||||
if not self.args.get("force", False) and self.cached_time_ago() < self.cache_duration:
|
if not self.args.get("force", False) and self.cached_time_ago() < self.cache_duration:
|
||||||
self.logger_debug("Using cached report from %s" % self.cache_file)
|
self.logger_debug("Using cached report from %s" % self.cache_file)
|
||||||
return self.get_cached_report()
|
return Diagnoser.get_cached_report(self.id_)
|
||||||
|
|
||||||
self.logger_debug("Running diagnostic for %s" % self.id_)
|
self.logger_debug("Running diagnostic for %s" % self.id_)
|
||||||
|
|
||||||
|
@ -129,6 +149,17 @@ class Diagnoser():
|
||||||
|
|
||||||
return new_report
|
return new_report
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def cache_file(id_):
|
||||||
|
return os.path.join(DIAGNOSIS_CACHE, "%s.json" % id_)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_cached_report(id_):
|
||||||
|
filename = Diagnoser.cache_file(id_)
|
||||||
|
report = read_json(filename)
|
||||||
|
report["timestamp"] = int(os.path.getmtime(filename))
|
||||||
|
return report
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _list_diagnosis_categories():
|
def _list_diagnosis_categories():
|
||||||
|
|
Loading…
Add table
Reference in a new issue