From fab699530ce070b11f278fdf04ef337a1cc6da97 Mon Sep 17 00:00:00 2001 From: yackob03 Date: Wed, 5 Feb 2014 19:59:26 -0500 Subject: [PATCH] Check for errors before delegating to the cleanup function. --- workers/dockerfilebuild.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/workers/dockerfilebuild.py b/workers/dockerfilebuild.py index 7cd801d9a..3d0b99933 100644 --- a/workers/dockerfilebuild.py +++ b/workers/dockerfilebuild.py @@ -54,7 +54,7 @@ class DockerfileBuildContext(object): self._tag_name = tag_name self._push_token = push_token self._build_uuid = build_uuid - self._cl = Client(timeout=1200) + self._cl = Client(timeout=1200, version='1.7') self._status = StatusWrapper(self._build_uuid) dockerfile_path = os.path.join(self._build_dir, "Dockerfile") @@ -100,7 +100,7 @@ class DockerfileBuildContext(object): current_step = 0 built_image = None for status in build_status: - logger.debug('Status: %s', str(status)) + logger.debug('Status: %s', str(status.encode('utf-8'))) build_logs.append_log_message(self._build_uuid, str(status)) step_increment = re.search(r'Step ([0-9]+) :', status) if step_increment: @@ -189,7 +189,11 @@ class DockerfileBuildContext(object): repos = set() for image in self._cl.images(): images_to_remove.add(image['Id']) - repos.add(image['Repository']) + + for tag in image['RepoTags']: + tag_repo = tag.split(':')[0] + if tag_repo != '': + repos.add(tag_repo) for repo in repos: repo_url = 'https://index.docker.io/v1/repositories/%s/images' % repo @@ -275,9 +279,9 @@ class DockerfileBuildWorker(Worker): repository_build.phase = 'building' repository_build.save() - try: - with DockerfileBuildContext(build_dir, tag_name, access_token, - repository_build.uuid) as build_ctxt: + with DockerfileBuildContext(build_dir, tag_name, access_token, + repository_build.uuid) as build_ctxt: + try: built_image = build_ctxt.build() if not built_image: @@ -294,12 +298,12 @@ class DockerfileBuildWorker(Worker): repository_build.phase = 'complete' repository_build.save() - except Exception as exc: - logger.exception('Exception when processing request.') - repository_build.phase = 'error' - repository_build.save() - build_logs.append_log_message(uuid, exc.message) - return False + except Exception as exc: + logger.exception('Exception when processing request.') + repository_build.phase = 'error' + repository_build.save() + build_logs.append_log_message(uuid, exc.message) + return False return True