Add a docker pull retry to docker-puppet.py

Co-Authored-By: Ian Main <imain@redhat.com>

Change-Id: Iad6d38690340f4a064a4527c58ed439d91fa5188
Closes-bug: #1715136
This commit is contained in:
Dan Prince 2017-09-07 16:48:28 -04:00
parent 6ba9a71f40
commit d3b3361a76
1 changed files with 18 additions and 4 deletions

View File

@ -26,6 +26,7 @@ import sys
import subprocess import subprocess
import sys import sys
import tempfile import tempfile
import time
import multiprocessing import multiprocessing
logger = None logger = None
@ -59,10 +60,23 @@ def short_hostname():
def pull_image(name): def pull_image(name):
log.info('Pulling image: %s' % name) log.info('Pulling image: %s' % name)
subproc = subprocess.Popen(['/usr/bin/docker', 'pull', name], retval = -1
stdout=subprocess.PIPE, count = 0
stderr=subprocess.PIPE) while retval != 0:
cmd_stdout, cmd_stderr = subproc.communicate() 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: if cmd_stdout:
log.debug(cmd_stdout) log.debug(cmd_stdout)
if cmd_stderr: if cmd_stderr: