From cd34a40dd86f5a78e6b85cb74e2a8f66635834f2 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 12 Nov 2020 14:57:04 +0100 Subject: [PATCH] Send issues with sentry report (#2246) --- supervisor/misc/filter.py | 2 ++ tests/misc/test_filter_data.py | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/supervisor/misc/filter.py b/supervisor/misc/filter.py index 2e3f67d11..f4a7093cf 100644 --- a/supervisor/misc/filter.py +++ b/supervisor/misc/filter.py @@ -3,6 +3,7 @@ import os import re from aiohttp import hdrs +import attr from ..const import HEADER_TOKEN_OLD, CoreState from ..coresys import CoreSys @@ -73,6 +74,7 @@ def filter_data(coresys: CoreSys, event: dict, hint: dict) -> dict: "os": coresys.hassos.version, "supervisor": coresys.supervisor.version, }, + "issues": [attr.asdict(issue) for issue in coresys.resolution.issues], } ) event.setdefault("tags", []).extend( diff --git a/tests/misc/test_filter_data.py b/tests/misc/test_filter_data.py index 30c17a87a..1b8491b71 100644 --- a/tests/misc/test_filter_data.py +++ b/tests/misc/test_filter_data.py @@ -7,7 +7,7 @@ import pytest from supervisor.const import SUPERVISOR_VERSION, CoreState from supervisor.exceptions import AddonConfigurationError from supervisor.misc.filter import filter_data -from supervisor.resolution.const import UnsupportedReason +from supervisor.resolution.const import ContextType, IssueType, UnsupportedReason SAMPLE_EVENT = {"sample": "event", "extra": {"Test": "123"}} @@ -101,3 +101,19 @@ def test_sanitize(coresys): ]["headers"] assert ["X-Forwarded-Host", "example.com"] in filtered["request"]["headers"] assert ["X-Hassio-Key", "XXXXXXXXXXXXXXXXXXX"] in filtered["request"]["headers"] + + +def test_issues_on_report(coresys): + """Attach issue to report.""" + + coresys.resolution.create_issue(IssueType.FATAL_ERROR, ContextType.SYSTEM) + + coresys.config.diagnostics = True + coresys.core.state = CoreState.RUNNING + + with patch("shutil.disk_usage", return_value=(42, 42, 2 * (1024.0 ** 3))): + event = filter_data(coresys, SAMPLE_EVENT, {}) + + assert "issues" in event["contexts"] + assert event["contexts"]["issues"][0]["type"] == IssueType.FATAL_ERROR + assert event["contexts"]["issues"][0]["context"] == ContextType.SYSTEM