mirror of
https://github.com/ansible-collections/community.docker.git
synced 2026-07-29 11:55:04 +00:00
docker_compose_v2: add ignore_build_events option; ignore build events by default (#1011)
* Add ignore_build_events option. * Adjust docs and tests. * Switch default to true. * Remove unnecessary parts from tests.
This commit is contained in:
@@ -57,6 +57,8 @@ DOCKER_STATUS_DONE = frozenset((
|
||||
'Recreated',
|
||||
# Extras for pull events
|
||||
'Pulled',
|
||||
# Extras for built events
|
||||
'Built',
|
||||
))
|
||||
DOCKER_STATUS_WORKING = frozenset((
|
||||
'Creating',
|
||||
@@ -76,6 +78,10 @@ DOCKER_STATUS_PULL = frozenset((
|
||||
'Pulled',
|
||||
'Pulling',
|
||||
))
|
||||
DOCKER_STATUS_BUILD = frozenset((
|
||||
'Built',
|
||||
'Building',
|
||||
))
|
||||
DOCKER_STATUS_ERROR = frozenset((
|
||||
'Error',
|
||||
))
|
||||
@@ -542,11 +548,13 @@ def parse_events(stderr, dry_run=False, warn_function=None, nonzero_rc=False):
|
||||
return events
|
||||
|
||||
|
||||
def has_changes(events, ignore_service_pull_events=False):
|
||||
def has_changes(events, ignore_service_pull_events=False, ignore_build_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
|
||||
if ignore_build_events and event.status in DOCKER_STATUS_BUILD:
|
||||
continue
|
||||
return True
|
||||
if event.resource_type == ResourceType.IMAGE_LAYER and event.status in DOCKER_PULL_PROGRESS_WORKING:
|
||||
return True
|
||||
@@ -802,8 +810,20 @@ class BaseComposeManager(DockerBaseClass):
|
||||
def emit_warnings(self, events):
|
||||
emit_warnings(events, warn_function=self.client.warn)
|
||||
|
||||
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)
|
||||
def update_result(
|
||||
self,
|
||||
result,
|
||||
events,
|
||||
stdout,
|
||||
stderr,
|
||||
ignore_service_pull_events=False,
|
||||
ignore_build_events=False,
|
||||
):
|
||||
result['changed'] = result.get('changed', False) or has_changes(
|
||||
events,
|
||||
ignore_service_pull_events=ignore_service_pull_events,
|
||||
ignore_build_events=ignore_build_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))
|
||||
|
||||
Reference in New Issue
Block a user