From a164f4661bb92eb962e6954836b33f6d10b173d0 Mon Sep 17 00:00:00 2001 From: Aaron Cowdin Date: Tue, 2 May 2017 17:14:05 -0700 Subject: [PATCH] Better error handling, itterate on json stream directly. Signed-off-by: Aaron Cowdin --- docker/models/images.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/docker/models/images.py b/docker/models/images.py index cb9c80d2..55e7ced8 100644 --- a/docker/models/images.py +++ b/docker/models/images.py @@ -166,19 +166,18 @@ class ImageCollection(Collection): resp = self.client.api.build(**kwargs) if isinstance(resp, six.string_types): return self.get(resp) - events = list(json_stream(resp)) - if not events: - return BuildError('Unknown') - for event in events: - if 'stream' in event: + for chunk in json_stream(resp): + if 'error' in chunk: + raise BuildError(chunk['error']) + break + if 'stream' in chunk: match = re.search(r'(Successfully built |sha256:)([0-9a-f]+)', - event.get('stream', '')) + chunk['stream']) if match: image_id = match.group(2) return self.get(image_id) - event = events[-1] - raise BuildError(event.get('error') or event) + return BuildError('Unknown') def get(self, name): """