From e031efd82cbe75c4801a3d2f1e25c5909701f885 Mon Sep 17 00:00:00 2001 From: Lars Kellogg-Stedman Date: Thu, 16 Jul 2015 15:25:39 -0400 Subject: [PATCH] Do not erroneously mask exceptions There was a catch-all `except` statement in `create_containers`: try: containers = do_create(count, params) except: self.pull_image() containers = do_create(count, params) This would mask a variety of errors that should be exposed, including API compatability errors (as in #1707) and common Python exceptions (KeyError, ValueError, etc) that could result from errors in the code. This change makes the `except` statement more specific, and only attempts to pull the image and start a container if the original create attempt failed due to a 404 error from the docker API. --- lib/ansible/modules/cloud/docker/docker.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/ansible/modules/cloud/docker/docker.py b/lib/ansible/modules/cloud/docker/docker.py index db17f5e98f..11ee8e8571 100644 --- a/lib/ansible/modules/cloud/docker/docker.py +++ b/lib/ansible/modules/cloud/docker/docker.py @@ -401,6 +401,7 @@ from urlparse import urlparse try: import docker.client import docker.utils + import docker.errors from requests.exceptions import RequestException except ImportError: HAS_DOCKER_PY = False @@ -1347,7 +1348,10 @@ class DockerManager(object): try: containers = do_create(count, params) - except: + except docker.errors.APIError as e: + if e.response.status_code != 404: + raise + self.pull_image() containers = do_create(count, params)