mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-23 09:06:29 +00:00
Addon load should not fail due to docker error (#5011)
This commit is contained in:
parent
8c3a520512
commit
f0e2fb3f57
@ -203,7 +203,7 @@ class Addon(AddonModel):
|
|||||||
await self.instance.check_image(self.version, default_image, self.arch)
|
await self.instance.check_image(self.version, default_image, self.arch)
|
||||||
except DockerError:
|
except DockerError:
|
||||||
_LOGGER.info("No %s addon Docker image %s found", self.slug, self.image)
|
_LOGGER.info("No %s addon Docker image %s found", self.slug, self.image)
|
||||||
with suppress(AddonsError):
|
with suppress(DockerError):
|
||||||
await self.instance.install(self.version, default_image, arch=self.arch)
|
await self.instance.install(self.version, default_image, arch=self.arch)
|
||||||
|
|
||||||
self.persist[ATTR_IMAGE] = default_image
|
self.persist[ATTR_IMAGE] = default_image
|
||||||
|
@ -817,3 +817,33 @@ async def test_addon_loads_missing_image(
|
|||||||
)
|
)
|
||||||
assert coresys.docker.images.build.call_args.kwargs["platform"] == "linux/amd64"
|
assert coresys.docker.images.build.call_args.kwargs["platform"] == "linux/amd64"
|
||||||
assert install_addon_ssh.image == "local/amd64-addon-ssh"
|
assert install_addon_ssh.image == "local/amd64-addon-ssh"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_addon_load_succeeds_with_docker_errors(
|
||||||
|
coresys: CoreSys,
|
||||||
|
install_addon_ssh: Addon,
|
||||||
|
container: MagicMock,
|
||||||
|
caplog: pytest.LogCaptureFixture,
|
||||||
|
mock_amd64_arch_supported,
|
||||||
|
):
|
||||||
|
"""Docker errors while building/pulling an image during load should not raise and fail setup."""
|
||||||
|
# Build env invalid failure
|
||||||
|
coresys.docker.images.get.side_effect = ImageNotFound("missing")
|
||||||
|
caplog.clear()
|
||||||
|
await install_addon_ssh.load()
|
||||||
|
assert "Invalid build environment" in caplog.text
|
||||||
|
|
||||||
|
# Image build failure
|
||||||
|
coresys.docker.images.build.side_effect = DockerException()
|
||||||
|
caplog.clear()
|
||||||
|
with patch("pathlib.Path.is_file", return_value=True):
|
||||||
|
await install_addon_ssh.load()
|
||||||
|
assert "Can't build local/amd64-addon-ssh:9.2.1" in caplog.text
|
||||||
|
|
||||||
|
# Image pull failure
|
||||||
|
install_addon_ssh.data["image"] = "test/amd64-addon-ssh"
|
||||||
|
coresys.docker.images.build.reset_mock(side_effect=True)
|
||||||
|
coresys.docker.images.pull.side_effect = DockerException()
|
||||||
|
caplog.clear()
|
||||||
|
await install_addon_ssh.load()
|
||||||
|
assert "Unknown error with test/amd64-addon-ssh:9.2.1" in caplog.text
|
||||||
|
Loading…
x
Reference in New Issue
Block a user