From f6273bfca5ae0f77bac1d611a87f5f834d343372 Mon Sep 17 00:00:00 2001 From: Jadson Santos <42282908+gtjadsonsantos@users.noreply.github.com> Date: Tue, 8 Aug 2023 07:15:08 -0300 Subject: [PATCH] Add prometheus requires_auth parameter (#92964) Co-authored-by: Erik Montnemery --- homeassistant/components/prometheus/__init__.py | 9 +++++++-- tests/components/prometheus/test_init.py | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/prometheus/__init__.py b/homeassistant/components/prometheus/__init__.py index 2bc9fbb5324..e5d7f6cb060 100644 --- a/homeassistant/components/prometheus/__init__.py +++ b/homeassistant/components/prometheus/__init__.py @@ -52,6 +52,7 @@ API_ENDPOINT = "/api/prometheus" DOMAIN = "prometheus" CONF_FILTER = "filter" +CONF_REQUIRES_AUTH = "requires_auth" CONF_PROM_NAMESPACE = "namespace" CONF_COMPONENT_CONFIG = "component_config" CONF_COMPONENT_CONFIG_GLOB = "component_config_glob" @@ -70,6 +71,7 @@ CONFIG_SCHEMA = vol.Schema( { vol.Optional(CONF_FILTER, default={}): entityfilter.FILTER_SCHEMA, vol.Optional(CONF_PROM_NAMESPACE, default=DEFAULT_NAMESPACE): cv.string, + vol.Optional(CONF_REQUIRES_AUTH, default=True): cv.boolean, vol.Optional(CONF_DEFAULT_METRIC): cv.string, vol.Optional(CONF_OVERRIDE_METRIC): cv.string, vol.Optional(CONF_COMPONENT_CONFIG, default={}): vol.Schema( @@ -90,7 +92,9 @@ CONFIG_SCHEMA = vol.Schema( def setup(hass: HomeAssistant, config: ConfigType) -> bool: """Activate Prometheus component.""" - hass.http.register_view(PrometheusView(prometheus_client)) + hass.http.register_view( + PrometheusView(prometheus_client, config[DOMAIN][CONF_REQUIRES_AUTH]) + ) conf = config[DOMAIN] entity_filter = conf[CONF_FILTER] @@ -650,8 +654,9 @@ class PrometheusView(HomeAssistantView): url = API_ENDPOINT name = "api:prometheus" - def __init__(self, prometheus_cli): + def __init__(self, prometheus_cli, requires_auth: bool) -> None: """Initialize Prometheus view.""" + self.requires_auth = requires_auth self.prometheus_cli = prometheus_cli async def get(self, request): diff --git a/tests/components/prometheus/test_init.py b/tests/components/prometheus/test_init.py index 8b0acb9c5b0..09c8a37dc2a 100644 --- a/tests/components/prometheus/test_init.py +++ b/tests/components/prometheus/test_init.py @@ -1581,6 +1581,7 @@ async def test_full_config(hass: HomeAssistant, mock_client) -> None: "namespace": "ns", "default_metric": "m", "override_metric": "m", + "requires_auth": False, "component_config": {"fake.test": {"override_metric": "km"}}, "component_config_glob": {"fake.time_*": {"override_metric": "h"}}, "component_config_domain": {"climate": {"override_metric": "°C"}},