From 94f112512fad5e99991ac8d68c99d1499e2fd6aa Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 15 Aug 2020 18:26:20 +0200 Subject: [PATCH] Machine ID for user/sentry & cleanups (#1928) * Machine ID for user/sentry & cleanups * Add tests / fix users --- supervisor/api/info.py | 2 +- supervisor/api/security.py | 3 +-- supervisor/coresys.py | 15 --------------- supervisor/docker/addon.py | 2 +- supervisor/docker/audio.py | 2 +- supervisor/docker/cli.py | 2 +- supervisor/docker/dns.py | 2 +- supervisor/docker/homeassistant.py | 4 ++-- supervisor/docker/multicast.py | 2 +- supervisor/misc/filter.py | 2 ++ tests/conftest.py | 4 ++++ tests/misc/test_filter_data.py | 2 ++ 12 files changed, 17 insertions(+), 25 deletions(-) diff --git a/supervisor/api/info.py b/supervisor/api/info.py index d3cc898b8..c8e889690 100644 --- a/supervisor/api/info.py +++ b/supervisor/api/info.py @@ -42,5 +42,5 @@ class APIInfo(CoreSysAttributes): ATTR_SUPPORTED: self.sys_core.supported, ATTR_CHANNEL: self.sys_updater.channel, ATTR_LOGGING: self.sys_config.logging, - ATTR_TIMEZONE: self.sys_timezone, + ATTR_TIMEZONE: self.sys_config.timezone, } diff --git a/supervisor/api/security.py b/supervisor/api/security.py index 1779c3f79..cf7b645b0 100644 --- a/supervisor/api/security.py +++ b/supervisor/api/security.py @@ -131,8 +131,7 @@ class SecurityMiddleware(CoreSysAttributes): request_from = self.sys_homeassistant # Host - # Remove machine_id handling later if all use new CLI - if supervisor_token in (self.sys_machine_id, self.sys_plugins.cli.supervisor_token): + if supervisor_token == self.sys_plugins.cli.supervisor_token: _LOGGER.debug("%s access from Host", request.path) request_from = self.sys_host diff --git a/supervisor/coresys.py b/supervisor/coresys.py index eb8b0bc6b..1500dcd89 100644 --- a/supervisor/coresys.py +++ b/supervisor/coresys.py @@ -90,11 +90,6 @@ class CoreSys: return False return self._updater.channel == UpdateChannels.DEV - @property - def timezone(self) -> str: - """Return timezone.""" - return self._config.timezone - @property def loop(self) -> asyncio.BaseEventLoop: """Return loop object.""" @@ -459,16 +454,6 @@ class CoreSysAttributes: """Return True if we run dev mode.""" return self.coresys.dev - @property - def sys_timezone(self) -> str: - """Return timezone.""" - return self.coresys.timezone - - @property - def sys_machine_id(self) -> Optional[str]: - """Return timezone.""" - return self.coresys.machine_id - @property def sys_loop(self) -> asyncio.BaseEventLoop: """Return loop object.""" diff --git a/supervisor/docker/addon.py b/supervisor/docker/addon.py index df8580ad8..2a115056d 100644 --- a/supervisor/docker/addon.py +++ b/supervisor/docker/addon.py @@ -116,7 +116,7 @@ class DockerAddon(DockerInterface): return { **addon_env, - ENV_TIME: self.sys_timezone, + ENV_TIME: self.sys_config.timezone, ENV_TOKEN: self.addon.supervisor_token, ENV_TOKEN_OLD: self.addon.supervisor_token, } diff --git a/supervisor/docker/audio.py b/supervisor/docker/audio.py index c5fd1749d..aea0d4d89 100644 --- a/supervisor/docker/audio.py +++ b/supervisor/docker/audio.py @@ -69,7 +69,7 @@ class DockerAudio(DockerInterface, CoreSysAttributes): hostname=self.name.replace("_", "-"), detach=True, privileged=True, - environment={ENV_TIME: self.sys_timezone}, + environment={ENV_TIME: self.sys_config.timezone}, volumes=self.volumes, ) diff --git a/supervisor/docker/cli.py b/supervisor/docker/cli.py index c9738924b..13b5595ec 100644 --- a/supervisor/docker/cli.py +++ b/supervisor/docker/cli.py @@ -50,7 +50,7 @@ class DockerCli(DockerInterface, CoreSysAttributes): detach=True, extra_hosts={"supervisor": self.sys_docker.network.supervisor}, environment={ - ENV_TIME: self.sys_timezone, + ENV_TIME: self.sys_config.timezone, ENV_TOKEN: self.sys_plugins.cli.supervisor_token, }, ) diff --git a/supervisor/docker/dns.py b/supervisor/docker/dns.py index 94f87eb1b..83dae412f 100644 --- a/supervisor/docker/dns.py +++ b/supervisor/docker/dns.py @@ -47,7 +47,7 @@ class DockerDNS(DockerInterface, CoreSysAttributes): name=self.name, hostname=self.name.replace("_", "-"), detach=True, - environment={ENV_TIME: self.sys_timezone}, + environment={ENV_TIME: self.sys_config.timezone}, volumes={ str(self.sys_config.path_extern_dns): {"bind": "/config", "mode": "ro"} }, diff --git a/supervisor/docker/homeassistant.py b/supervisor/docker/homeassistant.py index 27b4c1b99..034b28210 100644 --- a/supervisor/docker/homeassistant.py +++ b/supervisor/docker/homeassistant.py @@ -115,7 +115,7 @@ class DockerHomeAssistant(DockerInterface): environment={ "HASSIO": self.sys_docker.network.supervisor, "SUPERVISOR": self.sys_docker.network.supervisor, - ENV_TIME: self.sys_timezone, + ENV_TIME: self.sys_config.timezone, ENV_TOKEN: self.sys_homeassistant.supervisor_token, ENV_TOKEN_OLD: self.sys_homeassistant.supervisor_token, }, @@ -150,7 +150,7 @@ class DockerHomeAssistant(DockerInterface): "mode": "ro", }, }, - environment={ENV_TIME: self.sys_timezone}, + environment={ENV_TIME: self.sys_config.timezone}, ) def is_initialize(self) -> Awaitable[bool]: diff --git a/supervisor/docker/multicast.py b/supervisor/docker/multicast.py index 6168d89cc..f6e8f8cdd 100644 --- a/supervisor/docker/multicast.py +++ b/supervisor/docker/multicast.py @@ -47,7 +47,7 @@ class DockerMulticast(DockerInterface, CoreSysAttributes): network_mode="host", detach=True, extra_hosts={"supervisor": self.sys_docker.network.supervisor}, - environment={ENV_TIME: self.sys_timezone}, + environment={ENV_TIME: self.sys_config.timezone}, ) self._meta = docker_container.attrs diff --git a/supervisor/misc/filter.py b/supervisor/misc/filter.py index 312afda02..e04cc7c4e 100644 --- a/supervisor/misc/filter.py +++ b/supervisor/misc/filter.py @@ -45,6 +45,7 @@ def filter_data(coresys: CoreSys, event: dict, hint: dict) -> dict: ] # Update information + event.setdefault("user", {}).update({"id": coresys.machine_id}) event.setdefault("contexts", {}).update( { "supervisor": { @@ -100,4 +101,5 @@ def filter_data(coresys: CoreSys, event: dict, hint: dict) -> dict: if key in [hdrs.HOST, hdrs.X_FORWARDED_HOST]: event["request"]["headers"][i] = [key, "example.com"] + return event diff --git a/tests/conftest.py b/tests/conftest.py index 35538180f..22c8f99f1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,5 +1,6 @@ """Common test functions.""" from unittest.mock import MagicMock, PropertyMock, patch +from uuid import uuid4 import pytest @@ -39,6 +40,9 @@ async def coresys(loop, docker): coresys_obj.ingress.save_data = MagicMock() coresys_obj.arch._default_arch = "amd64" + coresys_obj._machine = "qemux86-64" + coresys_obj._machine_id = uuid4() + yield coresys_obj diff --git a/tests/misc/test_filter_data.py b/tests/misc/test_filter_data.py index 6ffc771bc..cb38cc459 100644 --- a/tests/misc/test_filter_data.py +++ b/tests/misc/test_filter_data.py @@ -59,7 +59,9 @@ def test_defaults(coresys): assert ["installation_type", "supervised"] in filtered["tags"] assert filtered["contexts"]["host"]["arch"] == "amd64" + assert filtered["contexts"]["host"]["machine"] == "qemux86-64" assert filtered["contexts"]["versions"]["supervisor"] == SUPERVISOR_VERSION + assert filtered["user"]["id"] == coresys.machine_id def test_sanitize(coresys):