Merge remote-tracking branch 'origin/master' into pullinprivate

Conflicts:
	test/data/test.db
This commit is contained in:
jakedt 2014-04-01 18:28:48 -04:00
commit 3525e383df
14 changed files with 594 additions and 111 deletions

View file

@ -6,6 +6,7 @@ import requests
import re
import json
import shutil
import tarfile
from docker import Client, APIError
from tempfile import TemporaryFile, mkdtemp
@ -16,6 +17,7 @@ from data.queue import dockerfile_build_queue
from data import model
from workers.worker import Worker
from app import app
from util.safetar import safe_extractall
root_logger = logging.getLogger('')
@ -164,8 +166,14 @@ class DockerfileBuildContext(object):
for status in build_status:
fully_unwrapped = ""
if isinstance(status, dict):
if len(status) > 0:
fully_unwrapped = status.values()[0]
keys_to_extract = ['error', 'status', 'stream']
for key in keys_to_extract:
if key in status:
fully_unwrapped = status[key]
break
if not fully_unwrapped:
logger.debug('Status dict did not have any extractable keys and was: %s', status)
elif isinstance(status, basestring):
fully_unwrapped = status
@ -303,6 +311,8 @@ class DockerfileBuildWorker(Worker):
'application/x-zip-compressed': DockerfileBuildWorker.__prepare_zip,
'text/plain': DockerfileBuildWorker.__prepare_dockerfile,
'application/octet-stream': DockerfileBuildWorker.__prepare_dockerfile,
'application/x-tar': DockerfileBuildWorker.__prepare_tarball,
'application/gzip': DockerfileBuildWorker.__prepare_tarball,
}
@staticmethod
@ -311,7 +321,7 @@ class DockerfileBuildWorker(Worker):
# Save the zip file to temp somewhere
with TemporaryFile() as zip_file:
zip_file.write(request_file.content)
zip_file.write(request_file.raw)
to_extract = ZipFile(zip_file)
to_extract.extractall(build_dir)
@ -326,6 +336,16 @@ class DockerfileBuildWorker(Worker):
return build_dir
@staticmethod
def __prepare_tarball(request_file):
build_dir = mkdtemp(prefix='docker-build-')
# Save the zip file to temp somewhere
with tarfile.open(mode='r|*', fileobj=request_file.raw) as tar_stream:
safe_extractall(tar_stream, build_dir)
return build_dir
def process_queue_item(self, job_details):
repository_build = model.get_repository_build(job_details['namespace'],
job_details['repository'],
@ -350,7 +370,7 @@ class DockerfileBuildWorker(Worker):
repo))
log_appender(start_msg)
docker_resource = requests.get(resource_url)
docker_resource = requests.get(resource_url, stream=True)
c_type = docker_resource.headers['content-type']
filetype_msg = ('Request to build type: %s with repo: %s and tags: %s' %