diff --git a/endpoints/api/tag.py b/endpoints/api/tag.py index a81e7139a..9e928df93 100644 --- a/endpoints/api/tag.py +++ b/endpoints/api/tag.py @@ -8,6 +8,7 @@ from endpoints.api import (resource, nickname, require_repo_read, require_repo_w disallow_for_app_repositories, disallow_under_trust) from endpoints.exception import NotFound from endpoints.api.image import image_view +from endpoints.v2.manifest import _generate_and_store_manifest from data import model from auth.auth_context import get_authenticated_user from util.names import TAG_ERROR, TAG_REGEX @@ -111,11 +112,16 @@ class RepositoryTag(RepositoryParamResource): model.tag.create_or_update_tag(namespace, repository, tag, image_id) username = get_authenticated_user().username - log_action('move_tag' if original_image_id else 'create_tag', namespace, - {'username': username, 'repo': repository, 'tag': tag, - 'namespace': namespace, 'image': image_id, - 'original_image': original_image_id}, - repo=model.repository.get_repository(namespace, repository)) + tag_data = {'username': username, 'repo': repository, 'tag': tag, 'namespace': namespace, + 'image': image_id, 'original_image': original_image_id} + + log_action('move_tag' if original_image_id else 'create_tag', namespace, tag_data, + repo=model.repository.get_repository(namespace, repository)) + try: + _generate_and_store_manifest(namespace, repository, tag) + except: + # log and move on since we'll attempt to store manifest on first pull as well + logger.exception('unable to store manifest for tag', extra=tag_data) return 'Updated', 201