From 2154b03d0e8b12486b3bae917b5381943e0a27d6 Mon Sep 17 00:00:00 2001 From: Michael Hudson-Doyle Date: Fri, 18 Dec 2020 12:29:51 +1300 Subject: [PATCH] add a way of mapping an exception to an error report I am going to add code that generates an error report for an unhandled exception soon and we do not want to generate two reports for one exception... --- subiquity/common/errorreport.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/subiquity/common/errorreport.py b/subiquity/common/errorreport.py index 511988db..f3ce11c7 100644 --- a/subiquity/common/errorreport.py +++ b/subiquity/common/errorreport.py @@ -337,6 +337,7 @@ class ErrorReporter(object): self.reports = [] self._reports_by_base = {} + self._reports_by_exception = {} self.crashdb_spec = { 'impl': 'launchpad', 'project': 'subiquity', @@ -372,11 +373,15 @@ class ErrorReporter(object): def note_data_for_apport(self, key, value): self._apport_data.append((key, value)) + def report_for_exc(self, exc): + return self._reports_by_exception.get(exc) + def make_apport_report(self, kind, thing, *, wait=False, exc=None, **kw): if not self.dry_run and not os.path.exists('/cdrom/.disk/info'): return None log.debug("generating crash report") + os.makedirs(self.crash_directory, exist_ok=True) try: report = ErrorReport.new(self, kind) @@ -393,6 +398,7 @@ class ErrorReporter(object): thing, type(exc).__name__) tb = traceback.TracebackException.from_exception(exc) report.pr['Traceback'] = "".join(tb.format()) + self._reports_by_exception[exc] = report else: report.pr["Title"] = thing