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.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},

View file

@ -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):

View file

@ -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)