Get squashed endpoint for docker import working

This commit is contained in:
Joseph Schorr 2014-09-16 11:53:54 -04:00
parent e3c52fa0eb
commit 9344839295
3 changed files with 4 additions and 136 deletions

View file

@ -11,7 +11,8 @@ from auth.permissions import ReadRepositoryPermission
from data import model
from endpoints.registry import set_cache_headers
from util.dockerimportformat import build_docker_import_stream
from util.gzipwrap import GzipWrap
from util.streamlayerformat import StreamLayerMerger
from werkzeug.wsgi import wrap_file
@ -46,14 +47,6 @@ def get_squashed_tag(namespace, repository, tag, headers):
ancestry_data = store.get_content(repo_image.storage.locations, store.image_ancestry_path(uuid))
full_image_list = json.loads(ancestry_data)
# Load the JSON for the image.
json_data = store.get_content(repo_image.storage.locations, store.image_json_path(uuid))
layer_json = json.loads(json_data)
def get_next_image():
for current_image_id in full_image_list:
yield model.get_repo_image(namespace, repository, current_image_id)
def get_next_layer():
for current_image_id in full_image_list:
current_image_entry = model.get_repo_image(namespace, repository, current_image_id)
@ -64,9 +57,7 @@ def get_squashed_tag(namespace, repository, tag, headers):
logger.debug('Returning image layer %s: %s' % (current_image_id, current_image_path))
yield current_image_stream
stream = build_docker_import_stream(namespace, repository, tag, synthetic_image_id,
layer_json, get_next_image, get_next_layer)
stream = GzipWrap(StreamLayerMerger(get_next_layer).get_generator())
return app.response_class(wrap_file(request.environ, stream, 1024 * 16),
mimetype='application/octet-stream',
direct_passthrough=True)