Add prometheus requires_auth parameter (#92964)

Co-authored-by: Erik Montnemery <erik@montnemery.com>
This commit is contained in:
Jadson Santos 2023-08-08 07:15:08 -03:00 committed by GitHub
parent 40e256847c
commit f6273bfca5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 2 deletions

View File

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

View File

@ -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"}},