From 69c2517d5211b483fdfe968b0a2b36b672ee7ab2 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Tue, 11 Jan 2022 16:55:19 +0100 Subject: [PATCH] Fix local Add-on restore on blank instance (#3403) Make sure to not reference version attribute from the DockerAddon instance since it is not yet populated in case this instance hadn't installed that Add-on previously. Use the higher level Images.load() API which returns a list of images instead of loading with the lower level API and then search for the image we just imported. --- supervisor/docker/addon.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/supervisor/docker/addon.py b/supervisor/docker/addon.py index be13f5776..1ec06b2e3 100644 --- a/supervisor/docker/addon.py +++ b/supervisor/docker/addon.py @@ -582,9 +582,15 @@ class DockerAddon(DockerInterface): """ try: with tar_file.open("rb") as read_tar: - self.sys_docker.api.load_image(read_tar, quiet=True) + docker_image_list = self.sys_docker.images.load(read_tar) - docker_image = self.sys_docker.images.get(f"{self.image}:{self.version}") + if len(docker_image_list) != 1: + _LOGGER.warning( + "Unexpected image count %d while importing image from tar", + len(docker_image_list), + ) + return + docker_image = docker_image_list[0] except (docker.errors.DockerException, OSError) as err: _LOGGER.error("Can't import image %s: %s", self.image, err) raise DockerError() from err