From 7bac04295488922ad21e6be1f2717ffecd1c36b7 Mon Sep 17 00:00:00 2001 From: Joseph Schorr Date: Fri, 23 Oct 2015 15:49:31 -0400 Subject: [PATCH] Fix verbs for merged changes to image and image storage Fixes #698 --- endpoints/verbs.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/endpoints/verbs.py b/endpoints/verbs.py index 6201bd897..4e67733c7 100644 --- a/endpoints/verbs.py +++ b/endpoints/verbs.py @@ -22,17 +22,14 @@ verbs = Blueprint('verbs', __name__) logger = logging.getLogger(__name__) -def _open_stream(formatter, namespace, repository, tag, synthetic_image_id, image_json, - image_id_list): +def _open_stream(formatter, namespace, repository, tag, synthetic_image_id, image_json, repo_image): store = Storage(app) # For performance reasons, we load the full image list here, cache it, then disconnect from # the database. with database.UseThenDisconnect(app.config): - image_list = list(model.image.get_matching_repository_images(namespace, repository, - image_id_list)) - - image_list.sort(key=lambda image: image_id_list.index(image.docker_image_id)) + image_list = list(model.image.get_parent_images(namespace, repository, repo_image)) + image_list.append(repo_image) def get_next_image(): for current_image in image_list: @@ -114,7 +111,7 @@ def _verify_repo_verb(store, namespace, repository, tag, verb, checker=None): abort(404) # Lookup the tag's image and storage. - repo_image = model.image.get_repo_image(namespace, repository, tag_image.docker_image_id) + repo_image = model.image.get_repo_image_extended(namespace, repository, tag_image.docker_image_id) if not repo_image: abort(404) @@ -186,8 +183,6 @@ def _repo_verb(namespace, repository, tag, verb, formatter, sign=False, checker= uuid = repo_image.storage.uuid logger.debug('Building and returning derived %s image %s', verb, derived.uuid) - ancestry_data = store.get_content(repo_image.storage.locations, store.image_ancestry_path(uuid)) - full_image_list = json.loads(ancestry_data) # Load the image's JSON layer. if not image_json: @@ -202,7 +197,7 @@ def _repo_verb(namespace, repository, tag, verb, formatter, sign=False, checker= # Create a queue process to generate the data. The queue files will read from the process # and send the results to the client and storage. - args = (formatter, namespace, repository, tag, synthetic_image_id, image_json, full_image_list) + args = (formatter, namespace, repository, tag, synthetic_image_id, image_json, repo_image) queue_process = QueueProcess(_open_stream, 8 * 1024, 10 * 1024 * 1024, # 8K/10M chunk/max args, finished=_cleanup)