diff --git a/changelogs/fragments/786-docker_v2.yml b/changelogs/fragments/786-docker_v2.yml new file mode 100644 index 00000000..d6da262d --- /dev/null +++ b/changelogs/fragments/786-docker_v2.yml @@ -0,0 +1,2 @@ +bugfixes: + - "docker_compose_v2, docker_compose_v2_pull - fix parsing of pull messages for Docker Compose 2.20.0 (https://github.com/ansible-collections/community.docker/issues/785, https://github.com/ansible-collections/community.docker/pull/786)." diff --git a/plugins/module_utils/compose_v2.py b/plugins/module_utils/compose_v2.py index 4caac2f7..fda70493 100644 --- a/plugins/module_utils/compose_v2.py +++ b/plugins/module_utils/compose_v2.py @@ -66,6 +66,7 @@ DOCKER_PULL_PROGRESS_DONE = frozenset(( )) DOCKER_PULL_PROGRESS_WORKING = frozenset(( 'Pulling fs layer', + 'Waiting', 'Downloading', 'Verifying Checksum', 'Extracting', @@ -130,7 +131,7 @@ _RE_PULL_PROGRESS = re.compile( r'\s+' r'(?P%s)' r'\s*' - r'(?:|\s\[[^]]+\]\s+\S+\s*)' + r'(?:|\s\[[^]]+\]\s+\S+\s*|\s+[0-9.kKmMgGbB]+/[0-9.kKmMgGbB]+\s*)' r'$' % '|'.join(re.escape(status) for status in sorted(DOCKER_PULL_PROGRESS_DONE | DOCKER_PULL_PROGRESS_WORKING)) ) diff --git a/tests/unit/plugins/module_utils/test_compose_v2.py b/tests/unit/plugins/module_utils/test_compose_v2.py index 9bcb393b..a90ff6e8 100644 --- a/tests/unit/plugins/module_utils/test_compose_v2.py +++ b/tests/unit/plugins/module_utils/test_compose_v2.py @@ -75,6 +75,106 @@ EXTRA_TEST_CASES = [ ], [], ), + ( + # https://github.com/ansible-collections/community.docker/issues/785 + '2.20.0-manual-pull', + '2.20.0', + False, + '4f4fb700ef54 Waiting\n' + '238022553356 Downloading 541B/541B\n' + '972e292d3a60 Downloading 106kB/10.43MB\n' + 'f2543dc9f0a9 Downloading 25.36kB/2.425MB\n' + '972e292d3a60 Downloading 5.925MB/10.43MB\n' + 'f2543dc9f0a9 Downloading 2.219MB/2.425MB\n' + 'f2543dc9f0a9 Extracting 32.77kB/2.425MB\n' + '4f4fb700ef54 Downloading 32B/32B\n' + 'f2543dc9f0a9 Extracting 2.425MB/2.425MB\n' + '972e292d3a60 Extracting 131.1kB/10.43MB\n' + '972e292d3a60 Extracting 10.43MB/10.43MB\n' + '238022553356 Extracting 541B/541B\n' + '4f4fb700ef54 Extracting 32B/32B\n', + [ + Event( + 'image-layer', + '4f4fb700ef54', + 'Waiting', + None, + ), + Event( + 'image-layer', + '238022553356', + 'Downloading', + None, + ), + Event( + 'image-layer', + '972e292d3a60', + 'Downloading', + None, + ), + Event( + 'image-layer', + 'f2543dc9f0a9', + 'Downloading', + None, + ), + Event( + 'image-layer', + '972e292d3a60', + 'Downloading', + None, + ), + Event( + 'image-layer', + 'f2543dc9f0a9', + 'Downloading', + None, + ), + Event( + 'image-layer', + 'f2543dc9f0a9', + 'Extracting', + None, + ), + Event( + 'image-layer', + '4f4fb700ef54', + 'Downloading', + None, + ), + Event( + 'image-layer', + 'f2543dc9f0a9', + 'Extracting', + None, + ), + Event( + 'image-layer', + '972e292d3a60', + 'Extracting', + None, + ), + Event( + 'image-layer', + '972e292d3a60', + 'Extracting', + None, + ), + Event( + 'image-layer', + '238022553356', + 'Extracting', + None, + ), + Event( + 'image-layer', + '4f4fb700ef54', + 'Extracting', + None, + ), + ], + [], + ), ] _ALL_TEST_CASES = EVENT_TEST_CASES + EXTRA_TEST_CASES