From 35ceefe1f121c8d829173cbc8f18dd5965308073 Mon Sep 17 00:00:00 2001 From: Hongbin Lu Date: Sun, 10 Sep 2017 14:34:51 -0400 Subject: [PATCH] Return Image objects on image.load In before, image.load returns what Docker API returns, which is a text stream. This commits propose an improvement for returning more useful information, which is a list of Image objects being loaded. Signed-off-by: Hongbin Lu --- docker/models/images.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/docker/models/images.py b/docker/models/images.py index d1b29ad8a6..89e0e80319 100644 --- a/docker/models/images.py +++ b/docker/models/images.py @@ -236,13 +236,24 @@ def load(self, data): data (binary): Image data to be loaded. Returns: - (generator): Progress output as JSON objects + (list of :py:class:`Image`): The images. Raises: :py:class:`docker.errors.APIError` If the server returns an error. """ - return self.client.api.load_image(data) + resp = self.client.api.load_image(data) + images = [] + for chunk in resp: + if 'stream' in chunk: + match = re.search( + r'(^Loaded image ID: |^Loaded image: )(.+)$', + chunk['stream'] + ) + if match: + image_id = match.group(2) + images.append(image_id) + return [self.get(i) for i in images] def pull(self, name, tag=None, **kwargs): """