mirror of
https://github.com/ansible-collections/community.docker.git
synced 2025-12-15 19:42:06 +00:00
docker_compose_v2: ignore some pull events (#803)
* Ignore some pull events. * Adjust tests.
This commit is contained in:
parent
f0c91ef5f9
commit
6f5d67860c
3
changelogs/fragments/803-compose-v2-pull.yml
Normal file
3
changelogs/fragments/803-compose-v2-pull.yml
Normal file
@ -0,0 +1,3 @@
|
||||
bugfixes:
|
||||
- "docker_compose_v2 - do not treat service-level pull events as changes to avoid incorrect ``changed=true`` return value of ``pull=always``
|
||||
(https://github.com/ansible-collections/community.docker/issues/802, https://github.com/ansible-collections/community.docker/pull/803)."
|
||||
@ -350,9 +350,11 @@ def parse_events(stderr, dry_run=False, warn_function=None):
|
||||
return events
|
||||
|
||||
|
||||
def has_changes(events):
|
||||
def has_changes(events, ignore_service_pull_events=False):
|
||||
for event in events:
|
||||
if event.status in DOCKER_STATUS_WORKING:
|
||||
if ignore_service_pull_events and event.status in DOCKER_STATUS_PULL:
|
||||
continue
|
||||
return True
|
||||
return False
|
||||
|
||||
@ -539,8 +541,8 @@ class BaseComposeManager(DockerBaseClass):
|
||||
def emit_warnings(self, events):
|
||||
emit_warnings(events, warn_function=self.client.warn)
|
||||
|
||||
def update_result(self, result, events, stdout, stderr):
|
||||
result['changed'] = result.get('changed', False) or has_changes(events)
|
||||
def update_result(self, result, events, stdout, stderr, ignore_service_pull_events=False):
|
||||
result['changed'] = result.get('changed', False) or has_changes(events, ignore_service_pull_events=ignore_service_pull_events)
|
||||
result['actions'] = result.get('actions', []) + extract_actions(events)
|
||||
result['stdout'] = combine_text_output(result.get('stdout'), to_native(stdout))
|
||||
result['stderr'] = combine_text_output(result.get('stderr'), to_native(stderr))
|
||||
|
||||
@ -496,7 +496,7 @@ class ServicesManager(BaseComposeManager):
|
||||
rc, stdout, stderr = self.client.call_cli(*args, cwd=self.project_src)
|
||||
events = self.parse_events(stderr, dry_run=self.check_mode)
|
||||
self.emit_warnings(events)
|
||||
self.update_result(result, events, stdout, stderr)
|
||||
self.update_result(result, events, stdout, stderr, ignore_service_pull_events=True)
|
||||
self.update_failed(result, events, args, stdout, stderr, rc)
|
||||
return result
|
||||
|
||||
@ -527,7 +527,7 @@ class ServicesManager(BaseComposeManager):
|
||||
rc_1, stdout_1, stderr_1 = self.client.call_cli(*args_1, cwd=self.project_src)
|
||||
events_1 = self.parse_events(stderr_1, dry_run=self.check_mode)
|
||||
self.emit_warnings(events_1)
|
||||
self.update_result(result, events_1, stdout_1, stderr_1)
|
||||
self.update_result(result, events_1, stdout_1, stderr_1, ignore_service_pull_events=True)
|
||||
is_failed_1 = is_failed(events_1, rc_1)
|
||||
if not is_failed_1 and not self._are_containers_stopped():
|
||||
# Make sure all containers are stopped
|
||||
|
||||
@ -199,7 +199,7 @@
|
||||
- present_3_check.actions | selectattr('status', 'eq', 'Pulling') | first
|
||||
- present_3_check.actions | selectattr('status', 'eq', 'Creating') | length == 0
|
||||
- present_3_check.actions | selectattr('status', 'eq', 'Recreating') | length == 0
|
||||
- present_3 is changed
|
||||
- present_3 is not changed
|
||||
- present_3.actions | selectattr('status', 'eq', 'Pulling') | first
|
||||
- present_3.actions | selectattr('status', 'eq', 'Creating') | length == 0
|
||||
- present_3.actions | selectattr('status', 'eq', 'Recreating') | length == 0
|
||||
|
||||
Loading…
Reference in New Issue
Block a user