1
0
mirror of https://github.com/home-assistant/supervisor.git synced 2025-12-24 12:29:08 +00:00

Docker events based watchdog and docker healthchecks (#3725)

* Docker events based watchdog

* Separate monitor from DockerAPI since it needs coresys

* Move monitor into dockerAPI

* Fix properties on coresys

* Add watchdog tests

* Added tests

* pylint issue

* Current state failures test

* Thread-safe event processing

* Use labels property
This commit is contained in:
Mike Degatano
2022-07-15 03:21:59 -04:00
committed by GitHub
parent 14bc771ba9
commit d19166bb86
31 changed files with 1860 additions and 671 deletions

View File

@@ -27,7 +27,8 @@ from supervisor.dbus.network import NetworkManager
from supervisor.dbus.resolved import Resolved
from supervisor.dbus.systemd import Systemd
from supervisor.dbus.timedate import TimeDate
from supervisor.docker import DockerAPI
from supervisor.docker.manager import DockerAPI
from supervisor.docker.monitor import DockerMonitor
from supervisor.store.addon import AddonStore
from supervisor.store.repository import Repository
from supervisor.utils.dbus import DBus
@@ -48,20 +49,28 @@ def docker() -> DockerAPI:
"""Mock DockerAPI."""
images = [MagicMock(tags=["ghcr.io/home-assistant/amd64-hassio-supervisor:latest"])]
with patch("supervisor.docker.DockerClient", return_value=MagicMock()), patch(
"supervisor.docker.DockerAPI.images", return_value=MagicMock()
), patch("supervisor.docker.DockerAPI.containers", return_value=MagicMock()), patch(
"supervisor.docker.DockerAPI.api", return_value=MagicMock()
with patch(
"supervisor.docker.manager.DockerClient", return_value=MagicMock()
), patch(
"supervisor.docker.DockerAPI.images.list", return_value=images
"supervisor.docker.manager.DockerAPI.images", return_value=MagicMock()
), patch(
"supervisor.docker.DockerAPI.info",
"supervisor.docker.manager.DockerAPI.containers", return_value=MagicMock()
), patch(
"supervisor.docker.manager.DockerAPI.api", return_value=MagicMock()
), patch(
"supervisor.docker.manager.DockerAPI.images.list", return_value=images
), patch(
"supervisor.docker.manager.DockerAPI.info",
return_value=MagicMock(),
), patch(
"supervisor.docker.DockerConfig",
"supervisor.docker.manager.DockerConfig",
return_value=MagicMock(),
), patch(
"supervisor.docker.manager.DockerAPI.load"
), patch(
"supervisor.docker.manager.DockerAPI.unload"
):
docker_obj = DockerAPI()
docker_obj = DockerAPI(MagicMock())
docker_obj.info.logging = "journald"
docker_obj.info.storage = "overlay2"
docker_obj.info.version = "1.0.0"
@@ -219,6 +228,7 @@ async def coresys(loop, docker, network_manager, aiohttp_client, run_dir) -> Cor
# Mock docker
coresys_obj._docker = docker
coresys_obj.docker._monitor = DockerMonitor(coresys_obj)
# Set internet state
coresys_obj.supervisor._connectivity = True