Fix error handling (Yunohost / Moulinette / Asserts)

This commit is contained in:
Alexandre Aubin 2019-05-02 17:59:35 +02:00
parent ded4895b7e
commit 2b2ff08f08
3 changed files with 9 additions and 12 deletions

View file

@ -4,6 +4,7 @@ import os
from moulinette import m18n from moulinette import m18n
from moulinette.utils.network import download_text from moulinette.utils.network import download_text
from yunohost.diagnosis import Diagnoser from yunohost.diagnosis import Diagnoser
class IPDiagnoser(Diagnoser): class IPDiagnoser(Diagnoser):
@ -16,8 +17,7 @@ class IPDiagnoser(Diagnoser):
if "version" not in args.keys(): if "version" not in args.keys():
return { "versions" : [4, 6] } return { "versions" : [4, 6] }
else: else:
if str(args["version"]) not in ["4", "6"]: assert str(args["version"]) in ["4", "6"], "Invalid version, should be 4 or 6."
raise MoulinetteError(1, "Invalid version, should be 4 or 6.")
return { "versions" : [int(args["version"])] } return { "versions" : [int(args["version"])] }
def run(self): def run(self):
@ -30,7 +30,7 @@ class IPDiagnoser(Diagnoser):
result = ipv4, result = ipv4,
report = ("SUCCESS", "diagnosis_network_connected_ipv4", {}) if ipv4 \ report = ("SUCCESS", "diagnosis_network_connected_ipv4", {}) if ipv4 \
else ("ERROR", "diagnosis_network_no_ipv4", {})) else ("ERROR", "diagnosis_network_no_ipv4", {}))
if 6 in versions: if 6 in versions:
ipv6 = self.get_public_ip(6) ipv6 = self.get_public_ip(6)
yield dict(meta = {"version": 6}, yield dict(meta = {"version": 6},

View file

@ -2,9 +2,8 @@
import os import os
from moulinette import m18n
from moulinette.utils.network import download_text 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 moulinette.utils.process import check_output
from yunohost.diagnosis import Diagnoser from yunohost.diagnosis import Diagnoser
@ -26,8 +25,7 @@ class DNSDiagnoser(Diagnoser):
if "domain" not in args.keys(): if "domain" not in args.keys():
return { "domains" : all_domains } return { "domains" : all_domains }
else: else:
if args["domain"] not in all_domains: assert args["domain"] in all_domains, "Unknown domain"
raise MoulinetteError(errno.EINVAL, m18n.n('domain_unknown'))
return { "domains" : [ args["domain"] ] } return { "domains" : [ args["domain"] ] }
def run(self): def run(self):

View file

@ -24,15 +24,14 @@
Look for possible issues on the server Look for possible issues on the server
""" """
import errno
import os import os
import time import time
from moulinette import m18n from moulinette import m18n
from moulinette.core import MoulinetteError
from moulinette.utils import log from moulinette.utils import log
from moulinette.utils.filesystem import read_json, write_to_json from moulinette.utils.filesystem import read_json, write_to_json
from yunohost.utils.error import YunohostError
from yunohost.hook import hook_list, hook_exec from yunohost.hook import hook_list, hook_exec
logger = log.getActionLogger('yunohost.diagnosis') logger = log.getActionLogger('yunohost.diagnosis')
@ -55,7 +54,7 @@ def diagnosis_show(categories=[], full=False):
else: else:
unknown_categories = [ c for c in categories if c not in all_categories_names ] unknown_categories = [ c for c in categories if c not in all_categories_names ]
if unknown_categories: if unknown_categories:
raise MoulinetteError(m18n.n('unknown_categories', categories=", ".join(categories))) raise YunohostError('unknown_categories', categories=", ".join(categories))
# Fetch all reports # Fetch all reports
all_reports = [] all_reports = []
@ -88,7 +87,7 @@ def diagnosis_run(categories=[], force=False, args=None):
else: else:
unknown_categories = [ c for c in categories if c not in all_categories_names ] unknown_categories = [ c for c in categories if c not in all_categories_names ]
if unknown_categories: 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" } # Transform "arg1=val1&arg2=val2" to { "arg1": "val1", "arg2": "val2" }
if args is not None: if args is not None:
@ -108,7 +107,7 @@ def diagnosis_run(categories=[], force=False, args=None):
successes.append(category) successes.append(category)
except Exception as e: except Exception as e:
# FIXME / TODO : add stacktrace here ? # 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) return diagnosis_show(successes)