Try to use a 301 redirect to download directly from s3. Allow the s3 and userfiles to run without internet access.

This commit is contained in:
yackob03 2013-12-03 16:39:07 -08:00
parent 82229fd8c8
commit bf85013ef6
4 changed files with 50 additions and 14 deletions

View file

@ -1,7 +1,7 @@
import logging
import json
from flask import make_response, request, session, Response, abort
from flask import make_response, request, session, Response, abort, redirect
from functools import wraps
from datetime import datetime
from time import time
@ -80,9 +80,12 @@ def set_cache_headers(f):
def get_image_layer(namespace, repository, image_id, headers):
permission = ReadRepositoryPermission(namespace, repository)
if permission.can() or model.repository_is_public(namespace, repository):
path = store.image_layer_path(namespace, repository, image_id)
direct_download_url = store.get_direct_download_url(path)
if direct_download_url:
return redirect(direct_download_url)
try:
return Response(store.stream_read(store.image_layer_path(
namespace, repository, image_id)), headers=headers)
return Response(store.stream_read(path), headers=headers)
except IOError:
abort(404) # 'Image not found', 404)