From 4649279c9d14b70a0155b13eb6982a82c0fc5877 Mon Sep 17 00:00:00 2001
From: SamYaple <sam@yaple.net>
Date: Thu, 28 Jan 2016 02:43:55 +0000
Subject: [PATCH] Rework log output if pull fails

Co-Authored-By: Sam Yaple <sam@yaple.net>
Change-Id: I066b2d419abb3ef2d4827ce686865c0dc68a5e97
Closes-bug: #1537763
---
 ansible/library/kolla_docker.py | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/ansible/library/kolla_docker.py b/ansible/library/kolla_docker.py
index 3a1958c7cb..bc751cc939 100644
--- a/ansible/library/kolla_docker.py
+++ b/ansible/library/kolla_docker.py
@@ -337,23 +337,35 @@ class DockerWorker(object):
         ]
 
         for status in reversed(statuses):
-            # NOTE(jeffrey4l): Get the last not empty status with status
-            # property
+            if 'error' in status:
+                if status['error'].endswith('not found'):
+                    self.module.fail_json(
+                        msg="The requested image does not exist: {}:{}".format(
+                            image, tag),
+                        failed=True
+                    )
+                else:
+                    self.module.fail_json(
+                        msg="Unknown error message: {}".format(
+                            status['error']),
+                        failed=True
+                    )
+
             if status and status.get('status'):
                 # NOTE(SamYaple): This allows us to use v1 and v2 docker
                 # registries.  Eventually docker will stop supporting v1
                 # registries and when that happens we can remove this.
-                if 'legacy registry' in status.get('status'):
+                if 'legacy registry' in status['status']:
                     continue
-                elif "Downloaded newer image for" in status.get('status'):
+                elif 'Downloaded newer image for' in status['status']:
                     self.changed = True
                     return
-                elif "Image is up to date for" in status.get('status'):
+                elif 'Image is up to date for' in status['status']:
                     return
                 else:
                     self.module.fail_json(
-                        msg="Invalid status returned from pull",
-                        changed=True,
+                        msg="Unknown status message: {}".format(
+                            status['status']),
                         failed=True
                     )