From bc5594e26363e1bd6b80a09f59e51d13299ad1c9 Mon Sep 17 00:00:00 2001 From: Hans Oischinger Date: Fri, 15 Apr 2022 22:22:24 +0200 Subject: [PATCH] vicare: Diagnostics (#69819) * vicare: Diagnostics * Exclude diagnostics from codecoverage --- .coveragerc | 1 + .../components/vicare/diagnostics.py | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 homeassistant/components/vicare/diagnostics.py diff --git a/.coveragerc b/.coveragerc index 97b0b9d2486..787bf7966ac 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1367,6 +1367,7 @@ omit = homeassistant/components/vicare/button.py homeassistant/components/vicare/climate.py homeassistant/components/vicare/const.py + homeassistant/components/vicare/diagnostics.py homeassistant/components/vicare/__init__.py homeassistant/components/vicare/sensor.py homeassistant/components/vicare/water_heater.py diff --git a/homeassistant/components/vicare/diagnostics.py b/homeassistant/components/vicare/diagnostics.py new file mode 100644 index 00000000000..b4c0032037c --- /dev/null +++ b/homeassistant/components/vicare/diagnostics.py @@ -0,0 +1,29 @@ +"""Diagnostics support for ViCare.""" +from __future__ import annotations + +import json +from typing import Any + +from homeassistant.components.diagnostics import async_redact_data +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import CONF_CLIENT_ID, CONF_PASSWORD, CONF_USERNAME +from homeassistant.core import HomeAssistant + +from .const import DOMAIN, VICARE_DEVICE_CONFIG + +TO_REDACT = {CONF_CLIENT_ID, CONF_PASSWORD, CONF_USERNAME} + + +async def async_get_config_entry_diagnostics( + hass: HomeAssistant, entry: ConfigEntry +) -> dict[str, Any]: + """Return diagnostics for a config entry.""" + # Currently we only support a single device + device = hass.data[DOMAIN][entry.entry_id][VICARE_DEVICE_CONFIG] + data: dict[str, Any] = json.loads( + await hass.async_add_executor_job(device.dump_secure) + ) + return { + "entry": async_redact_data(entry.as_dict(), TO_REDACT), + "data": data, + }