From 2b2ff08f08e8e62761e3a126090ebebd3bce7877 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Thu, 2 May 2019 17:59:35 +0200 Subject: [PATCH] Fix error handling (Yunohost / Moulinette / Asserts) --- data/hooks/diagnosis/10-ip.py | 6 +++--- data/hooks/diagnosis/12-dns.py | 6 ++---- src/yunohost/diagnosis.py | 9 ++++----- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/data/hooks/diagnosis/10-ip.py b/data/hooks/diagnosis/10-ip.py index 574741da9..d229eea8f 100644 --- a/data/hooks/diagnosis/10-ip.py +++ b/data/hooks/diagnosis/10-ip.py @@ -4,6 +4,7 @@ import os from moulinette import m18n from moulinette.utils.network import download_text + from yunohost.diagnosis import Diagnoser class IPDiagnoser(Diagnoser): @@ -16,8 +17,7 @@ class IPDiagnoser(Diagnoser): if "version" not in args.keys(): return { "versions" : [4, 6] } else: - if str(args["version"]) not in ["4", "6"]: - raise MoulinetteError(1, "Invalid version, should be 4 or 6.") + assert str(args["version"]) in ["4", "6"], "Invalid version, should be 4 or 6." return { "versions" : [int(args["version"])] } def run(self): @@ -30,7 +30,7 @@ class IPDiagnoser(Diagnoser): result = ipv4, report = ("SUCCESS", "diagnosis_network_connected_ipv4", {}) if ipv4 \ else ("ERROR", "diagnosis_network_no_ipv4", {})) - + if 6 in versions: ipv6 = self.get_public_ip(6) yield dict(meta = {"version": 6}, diff --git a/data/hooks/diagnosis/12-dns.py b/data/hooks/diagnosis/12-dns.py index b4cedebad..9bf6a13a3 100644 --- a/data/hooks/diagnosis/12-dns.py +++ b/data/hooks/diagnosis/12-dns.py @@ -2,9 +2,8 @@ import os -from moulinette import m18n from moulinette.utils.network import download_text -from moulinette.core import MoulinetteError, init_authenticator +from moulinette.core import init_authenticator from moulinette.utils.process import check_output from yunohost.diagnosis import Diagnoser @@ -26,8 +25,7 @@ class DNSDiagnoser(Diagnoser): if "domain" not in args.keys(): return { "domains" : all_domains } else: - if args["domain"] not in all_domains: - raise MoulinetteError(errno.EINVAL, m18n.n('domain_unknown')) + assert args["domain"] in all_domains, "Unknown domain" return { "domains" : [ args["domain"] ] } def run(self): diff --git a/src/yunohost/diagnosis.py b/src/yunohost/diagnosis.py index 48e9977c1..22770ce87 100644 --- a/src/yunohost/diagnosis.py +++ b/src/yunohost/diagnosis.py @@ -24,15 +24,14 @@ Look for possible issues on the server """ -import errno import os import time from moulinette import m18n -from moulinette.core import MoulinetteError from moulinette.utils import log from moulinette.utils.filesystem import read_json, write_to_json +from yunohost.utils.error import YunohostError from yunohost.hook import hook_list, hook_exec logger = log.getActionLogger('yunohost.diagnosis') @@ -55,7 +54,7 @@ def diagnosis_show(categories=[], full=False): 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))) + raise YunohostError('unknown_categories', categories=", ".join(categories)) # Fetch all reports all_reports = [] @@ -88,7 +87,7 @@ def diagnosis_run(categories=[], force=False, args=None): 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(unknown_categories))) + raise YunohostError('unknown_categories', categories=", ".join(unknown_categories)) # Transform "arg1=val1&arg2=val2" to { "arg1": "val1", "arg2": "val2" } if args is not None: @@ -108,7 +107,7 @@ def diagnosis_run(categories=[], force=False, args=None): successes.append(category) except Exception as e: # FIXME / TODO : add stacktrace here ? - logger.error("Diagnosis failed for category '%s' : %s" % (category, str(e))) # FIXME : i18n + logger.error("Diagnosis failed for category '%s' : %s" % (category, str(e))) # FIXME : i18n return diagnosis_show(successes)