summaryrefslogtreecommitdiff
path: root/docker/models/images.py
diff options
context:
space:
mode:
Diffstat (limited to 'docker/models/images.py')
-rw-r--r--docker/models/images.py27
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):
"""