From 37e28b62d386422e5c7f3f077c99f7b8af1589d0 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Wed, 28 Feb 2024 21:43:30 +0100 Subject: [PATCH] Do not fail on non-fatal errors. (#810) --- changelogs/fragments/810-compose-errors.yml | 4 ++++ plugins/module_utils/compose_v2.py | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/810-compose-errors.yml diff --git a/changelogs/fragments/810-compose-errors.yml b/changelogs/fragments/810-compose-errors.yml new file mode 100644 index 00000000..658b435e --- /dev/null +++ b/changelogs/fragments/810-compose-errors.yml @@ -0,0 +1,4 @@ +bugfixes: + - "docker_compose_v2 - do not fail when non-fatal errors occur. This can happen when pulling an image fails, but then the image can be built + for another service. Docker Compose emits an error in that case, but ``docker compose up`` still completes successfully + (https://github.com/ansible-collections/community.docker/issues/807, https://github.com/ansible-collections/community.docker/pull/810)." diff --git a/plugins/module_utils/compose_v2.py b/plugins/module_utils/compose_v2.py index 2a048ac1..8bc16507 100644 --- a/plugins/module_utils/compose_v2.py +++ b/plugins/module_utils/compose_v2.py @@ -404,6 +404,8 @@ def is_failed(events, rc): def update_failed(result, events, args, stdout, stderr, rc, cli): + if not rc: + return False errors = [] for event in events: if event.status in DOCKER_STATUS_ERROR: @@ -419,8 +421,6 @@ def update_failed(result, events, args, stdout, stderr, rc, cli): status=event.status, msg=event.msg, )) - if not errors and not rc: - return False if not errors: errors.append('Return code {code} is non-zero'.format(code=rc)) result['failed'] = True