diff --git a/supervisor/addons/addon.py b/supervisor/addons/addon.py index 6c5b69430..41f46513a 100644 --- a/supervisor/addons/addon.py +++ b/supervisor/addons/addon.py @@ -888,7 +888,11 @@ class Addon(AddonModel): if event.name != self.instance.name: return - if event.state == ContainerState.RUNNING: + if event.state in [ + ContainerState.RUNNING, + ContainerState.HEALTHY, + ContainerState.UNHEALTHY, + ]: self.state = AddonState.STARTED elif event.state == ContainerState.STOPPED: self.state = AddonState.STOPPED diff --git a/tests/addons/test_addon.py b/tests/addons/test_addon.py index f3b1fabc7..bebd03f17 100644 --- a/tests/addons/test_addon.py +++ b/tests/addons/test_addon.py @@ -99,6 +99,18 @@ async def test_addon_state_listener(coresys: CoreSys, install_addon_ssh: Addon) await asyncio.sleep(0) assert install_addon_ssh.state == AddonState.STOPPED + coresys.bus.fire_event( + BusEvent.DOCKER_CONTAINER_STATE_CHANGE, + DockerContainerStateEvent( + name=f"addon_{TEST_ADDON_SLUG}", + state=ContainerState.HEALTHY, + id="abc123", + time=1, + ), + ) + await asyncio.sleep(0) + assert install_addon_ssh.state == AddonState.STARTED + coresys.bus.fire_event( BusEvent.DOCKER_CONTAINER_STATE_CHANGE, DockerContainerStateEvent(