fix erroneous failures in docker_compose due to deprecation warnings … (#61650)

* fix erroneous failures in docker_compose due to deprecation warnings from docker (#60961)

* Update error handling to work with new method of capturing output

Co-Authored-By: Felix Fontein <felix@fontein.de>

* update error handling

* fix syntax error

* fix indentation

* fix indentation (again)

* remove erroneous line

(cherry picked from commit 0c73e47a42)
pull/62026/head
Scott Luther 5 years ago committed by Toshio Kuratomi
parent 55e7efcd8f
commit 9902888a21

@ -0,0 +1,2 @@
bugfixes:
- "docker_compose - fix issue where docker deprecation warning results in ansible erroneously reporting a failure"

@ -886,11 +886,18 @@ class ContainerManager(DockerBaseClass):
except Exception as exc: except Exception as exc:
self.client.fail("Error: service image lookup failed - %s" % str(exc)) self.client.fail("Error: service image lookup failed - %s" % str(exc))
out_redir_name, err_redir_name = make_redirection_tempfiles()
# pull the image # pull the image
try: try:
service.pull(ignore_pull_failures=False) with stdout_redirector(out_redir_name):
with stderr_redirector(err_redir_name):
service.pull(ignore_pull_failures=False)
except Exception as exc: except Exception as exc:
self.client.fail("Error: pull failed with %s" % str(exc)) fail_reason = get_failure_info(exc, out_redir_name, err_redir_name,
msg_format="Error: pull failed with %s")
self.client.fail(**fail_reason)
else:
cleanup_redirection_tempfiles(out_redir_name, err_redir_name)
# store the new image ID # store the new image ID
new_image_id = '' new_image_id = ''
@ -933,11 +940,18 @@ class ContainerManager(DockerBaseClass):
except Exception as exc: except Exception as exc:
self.client.fail("Error: service image lookup failed - %s" % str(exc)) self.client.fail("Error: service image lookup failed - %s" % str(exc))
out_redir_name, err_redir_name = make_redirection_tempfiles()
# build the image # build the image
try: try:
new_image_id = service.build(pull=self.pull, no_cache=self.nocache) with stdout_redirector(out_redir_name):
with stderr_redirector(err_redir_name):
new_image_id = service.build(pull=self.pull, no_cache=self.nocache)
except Exception as exc: except Exception as exc:
self.client.fail("Error: build failed with %s" % str(exc)) fail_reason = get_failure_info(exc, out_redir_name, err_redir_name,
msg_format="Error: build failed with %s")
self.client.fail(**fail_reason)
else:
cleanup_redirection_tempfiles(out_redir_name, err_redir_name)
if new_image_id not in old_image_id: if new_image_id not in old_image_id:
# if a new image was built # if a new image was built
@ -966,10 +980,17 @@ class ContainerManager(DockerBaseClass):
)) ))
if not self.check_mode and result['changed']: if not self.check_mode and result['changed']:
image_type = image_type_from_opt('--rmi', self.remove_images) image_type = image_type_from_opt('--rmi', self.remove_images)
out_redir_name, err_redir_name = make_redirection_tempfiles()
try: try:
self.project.down(image_type, self.remove_volumes, self.remove_orphans) with stdout_redirector(out_redir_name):
with stderr_redirector(err_redir_name):
self.project.down(image_type, self.remove_volumes, self.remove_orphans)
except Exception as exc: except Exception as exc:
self.client.fail("Error stopping project - %s" % str(exc)) fail_reason = get_failure_info(exc, out_redir_name, err_redir_name,
msg_format="Error stopping project - %s")
self.client.fail(**fail_reason)
else:
cleanup_redirection_tempfiles(out_redir_name, err_redir_name)
return result return result
def cmd_stop(self, service_names): def cmd_stop(self, service_names):
@ -1057,10 +1078,17 @@ class ContainerManager(DockerBaseClass):
result['changed'] = True result['changed'] = True
service_res['scale'] = scale - len(containers) service_res['scale'] = scale - len(containers)
if not self.check_mode: if not self.check_mode:
out_redir_name, err_redir_name = make_redirection_tempfiles()
try: try:
service.scale(scale) with stdout_redirector(out_redir_name):
with stderr_redirector(err_redir_name):
service.scale(scale)
except Exception as exc: except Exception as exc:
self.client.fail("Error scaling %s - %s" % (service.name, str(exc))) fail_reason = get_failure_info(exc, out_redir_name, err_redir_name,
msg_format="Error scaling {0} - %s".format(service.name))
self.client.fail(**fail_reason)
else:
cleanup_redirection_tempfiles(out_redir_name, err_redir_name)
result['actions'].append(service_res) result['actions'].append(service_res)
return result return result

Loading…
Cancel
Save