diff options
Diffstat (limited to 'docker/models/images.py')
-rw-r--r-- | docker/models/images.py | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/docker/models/images.py b/docker/models/images.py index 3fd3dc1..48f3590 100644 --- a/docker/models/images.py +++ b/docker/models/images.py @@ -166,18 +166,21 @@ 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') - event = events[-1] - if 'stream' in event: - match = re.search(r'(Successfully built |sha256:)([0-9a-f]+)', - event.get('stream', '')) - if match: - image_id = match.group(2) - return self.get(image_id) - - raise BuildError(event.get('error') or event) + last_event = None + for chunk in json_stream(resp): + if 'error' in chunk: + raise BuildError(chunk['error']) + if 'stream' in chunk: + match = re.search( + r'(Successfully built |sha256:)([0-9a-f]+)', + chunk['stream'] + ) + if match: + image_id = match.group(2) + return self.get(image_id) + last_event = chunk + + raise BuildError(last_event or 'Unknown') def get(self, name): """ |