Merge "Raise exception on KeyboardInterrupt" into stable/train

This commit is contained in:
Zuul 2020-01-30 09:27:14 +00:00 committed by Gerrit Code Review
commit 8821871fdc
1 changed files with 65 additions and 49 deletions

View File

@ -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):