Merge "Add a docker pull retry to docker-puppet.py" into stable/pike
authorJenkins <jenkins@review.openstack.org>
Tue, 12 Sep 2017 04:22:22 +0000 (04:22 +0000)
committerGerrit Code Review <review@openstack.org>
Tue, 12 Sep 2017 04:22:22 +0000 (04:22 +0000)
docker/docker-puppet.py

index 0451ed5..cc24703 100755 (executable)
@@ -26,6 +26,7 @@ import sys
 import subprocess
 import sys
 import tempfile
+import time
 import multiprocessing
 
 logger = None
@@ -59,10 +60,23 @@ def short_hostname():
 
 def pull_image(name):
     log.info('Pulling image: %s' % name)
-    subproc = subprocess.Popen(['/usr/bin/docker', 'pull', name],
-                               stdout=subprocess.PIPE,
-                               stderr=subprocess.PIPE)
-    cmd_stdout, cmd_stderr = subproc.communicate()
+    retval = -1
+    count = 0
+    while retval != 0:
+        count += 1
+        subproc = subprocess.Popen(['/usr/bin/docker', 'pull', name],
+                                   stdout=subprocess.PIPE,
+                                   stderr=subprocess.PIPE)
+
+        cmd_stdout, cmd_stderr = subproc.communicate()
+        retval = subproc.returncode
+        if retval != 0:
+            time.sleep(3)
+            log.warning('docker pull failed: %s' % cmd_stderr)
+            log.warning('retrying pulling image: %s' % name)
+        if count >= 5:
+            log.error('Failed to pull image: %s' % name)
+            break
     if cmd_stdout:
         log.debug(cmd_stdout)
     if cmd_stderr: