Skip to content

Commit 66d4d13

Browse files
committed
Check and return errors while validating science image.
Fixes ssl-hep#540.
1 parent 246ed4e commit 66d4d13

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

servicex_app/servicex/docker_repo_adapter.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,23 +35,29 @@ class DockerRepoAdapter:
3535
def __init__(self, registry_endpoint="https://hub.docker.com"):
3636
self.registry_endpoint = registry_endpoint
3737

38-
def check_image_exists(self, tagged_image: str) -> bool:
38+
def check_image_exists(self, tagged_image: str) -> (bool, str):
3939
"""
4040
Checks that the given Docker image
4141
:param tagged_image: Full Docker image name, e.g. "sslhep/servicex_app:latest".
4242
:return: Whether or not the image exists in the registry.
4343
"""
4444
search_result = re.search("(.+)/(.+):(.+)", tagged_image)
4545
if not search_result or len(search_result.groups()) != 3:
46-
return False
46+
return False, f"Requested transformer docker image is not in the right format: {tagged_image}"
4747

4848
(repo, image, tag) = search_result.groups()
4949

5050
query = f'{self.registry_endpoint}/v2/repositories/{repo}/{image}/tags/{tag}'
5151
r = requests.get(query)
52+
53+
if r.status_code >= 200 and r.status_code < 300:
54+
current_app.logger.info(f"Requested Image: {tagged_image} exists, "
55+
f"last updated {r.json()['last_updated']}")
56+
return True, ""
57+
5258
if r.status_code == 404:
53-
return False
59+
return False, f"Requested transformer docker image doesn't exist: {tagged_image}"
60+
61+
msg = f"Unexpected error in validating transformer docker image ({tagged_image}), status_code: {r.status_code}, msg ({r.content})"
62+
return False, msg
5463

55-
current_app.logger.info(f"Requested Image: {tagged_image} exists, "
56-
f"last updated {r.json()['last_updated']}")
57-
return True

servicex_app/servicex/resources/transformation/submit.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,8 @@ def post(self):
150150
request_rec.image = codegen_transformer_image
151151

152152
if config['TRANSFORMER_VALIDATE_DOCKER_IMAGE']:
153-
if not self.docker_repo_adapter.check_image_exists(request_rec.image):
154-
msg = f"Requested transformer docker image doesn't exist: {request_rec.image}"
153+
exists, msg = self.docker_repo_adapter.check_image_exists(request_rec.image)
154+
if not exists:
155155
current_app.logger.error(msg, extra={'requestId': request_id})
156156
return {'message': msg}, 400
157157

0 commit comments

Comments
 (0)