[v1,11/13] tests/docker: fall back more gracefully when pull fails

Message ID 20200709141327.14631-12-alex.bennee@linaro.org
State Superseded
Headers show
Series
  • misc rc0 fixes (docs, plugins, docker)
Related show

Commit Message

Alex Bennée July 9, 2020, 2:13 p.m.
I only spotted this in the small window between my testing with my
registry while waiting for the gitlab PR to go in. As we pre-pull the
registry image we know if that fails there isn't any point attempting
to use the cache. Fall back to the way we used to do it at that point.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

---
 tests/docker/docker.py | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

-- 
2.20.1

Comments

Philippe Mathieu-Daudé July 9, 2020, 2:46 p.m. | #1
On 7/9/20 4:13 PM, Alex Bennée wrote:
> I only spotted this in the small window between my testing with my

> registry while waiting for the gitlab PR to go in. As we pre-pull the

> registry image we know if that fails there isn't any point attempting

> to use the cache. Fall back to the way we used to do it at that point.

> 

> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

> ---

>  tests/docker/docker.py | 11 ++++++-----

>  1 file changed, 6 insertions(+), 5 deletions(-)

> 

> diff --git a/tests/docker/docker.py b/tests/docker/docker.py

> index 9684f07bdebe..2d67bbd15a5b 100755

> --- a/tests/docker/docker.py

> +++ b/tests/docker/docker.py

> @@ -306,13 +306,14 @@ class Docker(object):

>          checksum = _text_checksum(_dockerfile_preprocess(dockerfile))

>  

>          if registry is not None:

> -            dockerfile = dockerfile.replace("FROM qemu/",

> -                                            "FROM %s/qemu/" %

> -                                            (registry))

>              # see if we can fetch a cache copy, may fail...

>              pull_args = ["pull", "%s/%s" % (registry, tag)]

> -            self._do(pull_args, quiet=quiet)

> -

> +            if self._do(pull_args, quiet=quiet) == 0:


Maybe worth defining EXIT_SUCCESS = 0. Otherwise:
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>


> +                dockerfile = dockerfile.replace("FROM qemu/",

> +                                                "FROM %s/qemu/" %

> +                                                (registry))

> +            else:

> +                registry = None

>  

>          tmp_df = tempfile.NamedTemporaryFile(mode="w+t",

>                                               encoding='utf-8',

>

Patch

diff --git a/tests/docker/docker.py b/tests/docker/docker.py
index 9684f07bdebe..2d67bbd15a5b 100755
--- a/tests/docker/docker.py
+++ b/tests/docker/docker.py
@@ -306,13 +306,14 @@  class Docker(object):
         checksum = _text_checksum(_dockerfile_preprocess(dockerfile))
 
         if registry is not None:
-            dockerfile = dockerfile.replace("FROM qemu/",
-                                            "FROM %s/qemu/" %
-                                            (registry))
             # see if we can fetch a cache copy, may fail...
             pull_args = ["pull", "%s/%s" % (registry, tag)]
-            self._do(pull_args, quiet=quiet)
-
+            if self._do(pull_args, quiet=quiet) == 0:
+                dockerfile = dockerfile.replace("FROM qemu/",
+                                                "FROM %s/qemu/" %
+                                                (registry))
+            else:
+                registry = None
 
         tmp_df = tempfile.NamedTemporaryFile(mode="w+t",
                                              encoding='utf-8',