Merge "Raise exception on KeyboardInterrupt" into stable/train
This commit is contained in:
commit
8821871fdc
|
@ -1093,14 +1093,17 @@ class SkopeoImageUploader(BaseImageUploader):
|
||||||
cmd.append(target)
|
cmd.append(target)
|
||||||
LOG.info('Running %s' % ' '.join(cmd))
|
LOG.info('Running %s' % ' '.join(cmd))
|
||||||
env = os.environ.copy()
|
env = os.environ.copy()
|
||||||
process = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE,
|
try:
|
||||||
universal_newlines=True)
|
process = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE,
|
||||||
|
universal_newlines=True)
|
||||||
|
|
||||||
out, err = process.communicate()
|
out, err = process.communicate()
|
||||||
LOG.info(out)
|
LOG.info(out)
|
||||||
if process.returncode != 0:
|
if process.returncode != 0:
|
||||||
raise ImageUploaderException('Error copying image:\n%s\n%s' %
|
raise ImageUploaderException('Error copying image:\n%s\n%s' %
|
||||||
(' '.join(cmd), err))
|
(' '.join(cmd), err))
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
raise Exception('Action interrupted with ctrl+c')
|
||||||
return out
|
return out
|
||||||
|
|
||||||
def _delete(self, image_url, session=None):
|
def _delete(self, image_url, session=None):
|
||||||
|
@ -1114,14 +1117,17 @@ class SkopeoImageUploader(BaseImageUploader):
|
||||||
cmd.append(image)
|
cmd.append(image)
|
||||||
LOG.info('Running %s' % ' '.join(cmd))
|
LOG.info('Running %s' % ' '.join(cmd))
|
||||||
env = os.environ.copy()
|
env = os.environ.copy()
|
||||||
process = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE,
|
try:
|
||||||
universal_newlines=True)
|
process = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE,
|
||||||
|
universal_newlines=True)
|
||||||
|
|
||||||
out, err = process.communicate()
|
out, err = process.communicate()
|
||||||
LOG.info(out.decode('utf-8'))
|
LOG.info(out.decode('utf-8'))
|
||||||
if process.returncode != 0:
|
if process.returncode != 0:
|
||||||
raise ImageUploaderException('Error deleting image:\n%s\n%s' %
|
raise ImageUploaderException('Error deleting image:\n%s\n%s' %
|
||||||
(' '.join(cmd), err))
|
(' '.join(cmd), err))
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
raise Exception('Action interrupted with ctrl+c')
|
||||||
return out
|
return out
|
||||||
|
|
||||||
def cleanup(self, local_images):
|
def cleanup(self, local_images):
|
||||||
|
@ -1825,25 +1831,28 @@ class PythonImageUploader(BaseImageUploader):
|
||||||
cmd.append(pull_source)
|
cmd.append(pull_source)
|
||||||
LOG.info('Pulling %s' % pull_source)
|
LOG.info('Pulling %s' % pull_source)
|
||||||
LOG.info('Running %s' % ' '.join(cmd))
|
LOG.info('Running %s' % ' '.join(cmd))
|
||||||
process = subprocess.Popen(
|
try:
|
||||||
cmd,
|
process = subprocess.Popen(
|
||||||
stdout=subprocess.PIPE,
|
cmd,
|
||||||
stderr=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
universal_newlines=True,
|
stderr=subprocess.PIPE,
|
||||||
close_fds=True
|
universal_newlines=True,
|
||||||
)
|
close_fds=True
|
||||||
out, err = process.communicate()
|
|
||||||
if process.returncode != 0:
|
|
||||||
error_msg = (
|
|
||||||
'Pulling image failed: cmd "{}", stdout "{}",'
|
|
||||||
' stderr "{}"'.format(
|
|
||||||
' '.join(cmd),
|
|
||||||
out,
|
|
||||||
err
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
LOG.error(error_msg)
|
out, err = process.communicate()
|
||||||
raise ImageUploaderException(error_msg)
|
if process.returncode != 0:
|
||||||
|
error_msg = (
|
||||||
|
'Pulling image failed: cmd "{}", stdout "{}",'
|
||||||
|
' stderr "{}"'.format(
|
||||||
|
' '.join(cmd),
|
||||||
|
out,
|
||||||
|
err
|
||||||
|
)
|
||||||
|
)
|
||||||
|
LOG.error(error_msg)
|
||||||
|
raise ImageUploaderException(error_msg)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
raise Exception('Action interrupted with ctrl+c')
|
||||||
return out
|
return out
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -1904,19 +1913,22 @@ class PythonImageUploader(BaseImageUploader):
|
||||||
'--compress'
|
'--compress'
|
||||||
]
|
]
|
||||||
LOG.debug(' '.join(cmd))
|
LOG.debug(' '.join(cmd))
|
||||||
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
try:
|
||||||
|
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
||||||
|
|
||||||
chunk_size = 2 ** 20
|
chunk_size = 2 ** 20
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
data = p.stdout.read(chunk_size)
|
data = p.stdout.read(chunk_size)
|
||||||
if not data:
|
if not data:
|
||||||
break
|
break
|
||||||
calc_digest.update(data)
|
calc_digest.update(data)
|
||||||
yield data
|
yield data
|
||||||
p.wait()
|
p.wait()
|
||||||
if p.returncode != 0:
|
if p.returncode != 0:
|
||||||
raise ImageUploaderException('Extracting layer failed')
|
raise ImageUploaderException('Extracting layer failed')
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
raise Exception('Action interrupted with ctrl+c')
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@tenacity.retry( # Retry up to 5 times with jittered exponential backoff
|
@tenacity.retry( # Retry up to 5 times with jittered exponential backoff
|
||||||
|
@ -2189,13 +2201,17 @@ class PythonImageUploader(BaseImageUploader):
|
||||||
cmd = ['buildah', 'rmi', image_url.path]
|
cmd = ['buildah', 'rmi', image_url.path]
|
||||||
LOG.info('Running %s' % ' '.join(cmd))
|
LOG.info('Running %s' % ' '.join(cmd))
|
||||||
env = os.environ.copy()
|
env = os.environ.copy()
|
||||||
process = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE,
|
try:
|
||||||
universal_newlines=True)
|
process = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE,
|
||||||
|
universal_newlines=True)
|
||||||
|
|
||||||
out, err = process.communicate()
|
out, err = process.communicate()
|
||||||
LOG.info(out)
|
LOG.info(out)
|
||||||
if process.returncode != 0:
|
if process.returncode != 0:
|
||||||
LOG.warning('Error deleting image:\n%s\n%s' % (' '.join(cmd), err))
|
LOG.warning('Error deleting image:\n%s\n%s' %
|
||||||
|
(' '.join(cmd), err))
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
raise Exception('Action interrupted with ctrl+c')
|
||||||
return out
|
return out
|
||||||
|
|
||||||
def cleanup(self, local_images):
|
def cleanup(self, local_images):
|
||||||
|
|
Loading…
Reference in New Issue