mirror of
https://github.com/ansible-collections/community.docker.git
synced 2025-12-16 20:08:41 +00:00
docker_compose_v2_pull: add new options ignore_buildable, include_deps, and services; fix service CLI for docker_compose_v2 module (#942)
* Add new options for --ignore-buildable, --include-deps, and for providing services. * Add services after -- and not before.
This commit is contained in:
parent
45b2531129
commit
0fe84b510b
6
changelogs/fragments/942-compose-v2-pull.yml
Normal file
6
changelogs/fragments/942-compose-v2-pull.yml
Normal file
@ -0,0 +1,6 @@
|
||||
minor_changes:
|
||||
- "docker_compose_v2_pull - add new options ``ignore_buildable``, ``include_deps``, and ``services``
|
||||
(https://github.com/ansible-collections/community.docker/issues/941, https://github.com/ansible-collections/community.docker/pull/942)."
|
||||
bugfixes:
|
||||
- "docker_compose_v2 - make sure that services provided in ``services`` are appended to the command line after ``--`` and not before it
|
||||
(https://github.com/ansible-collections/community.docker/pull/942)."
|
||||
@ -497,9 +497,9 @@ class ServicesManager(BaseComposeManager):
|
||||
args.append('--no-start')
|
||||
if dry_run:
|
||||
args.append('--dry-run')
|
||||
args.append('--')
|
||||
for service in self.services:
|
||||
args.append(service)
|
||||
args.append('--')
|
||||
return args
|
||||
|
||||
def cmd_up(self):
|
||||
@ -518,9 +518,9 @@ class ServicesManager(BaseComposeManager):
|
||||
args.extend(['--timeout', '%d' % self.timeout])
|
||||
if dry_run:
|
||||
args.append('--dry-run')
|
||||
args.append('--')
|
||||
for service in self.services:
|
||||
args.append(service)
|
||||
args.append('--')
|
||||
return args
|
||||
|
||||
def _are_containers_stopped(self):
|
||||
@ -571,9 +571,9 @@ class ServicesManager(BaseComposeManager):
|
||||
args.extend(['--timeout', '%d' % self.timeout])
|
||||
if dry_run:
|
||||
args.append('--dry-run')
|
||||
args.append('--')
|
||||
for service in self.services:
|
||||
args.append(service)
|
||||
args.append('--')
|
||||
return args
|
||||
|
||||
def cmd_restart(self):
|
||||
@ -598,9 +598,9 @@ class ServicesManager(BaseComposeManager):
|
||||
args.extend(['--timeout', '%d' % self.timeout])
|
||||
if dry_run:
|
||||
args.append('--dry-run')
|
||||
args.append('--')
|
||||
for service in self.services:
|
||||
args.append(service)
|
||||
args.append('--')
|
||||
return args
|
||||
|
||||
def cmd_down(self):
|
||||
|
||||
@ -47,6 +47,25 @@ options:
|
||||
- always
|
||||
- missing
|
||||
default: always
|
||||
ignore_buildable:
|
||||
description:
|
||||
- If set to V(true), will not pull images that can be built.
|
||||
type: bool
|
||||
default: false
|
||||
version_added: 3.12.0
|
||||
include_deps:
|
||||
description:
|
||||
- If set to V(true), also pull services that are declared as dependencies.
|
||||
- This only makes sense if O(services) is used.
|
||||
type: bool
|
||||
default: false
|
||||
version_added: 3.12.0
|
||||
services:
|
||||
description:
|
||||
- Specifies a subset of services to be targeted.
|
||||
type: list
|
||||
elements: str
|
||||
version_added: 3.12.0
|
||||
|
||||
author:
|
||||
- Felix Fontein (@felixfontein)
|
||||
@ -114,19 +133,32 @@ class PullManager(BaseComposeManager):
|
||||
parameters = self.client.module.params
|
||||
|
||||
self.policy = parameters['policy']
|
||||
self.ignore_buildable = parameters['ignore_buildable']
|
||||
self.include_deps = parameters['include_deps']
|
||||
self.services = parameters['services'] or []
|
||||
|
||||
if self.policy != 'always' and self.compose_version < LooseVersion('2.22.0'):
|
||||
# https://github.com/docker/compose/pull/10981 - 2.22.0
|
||||
self.fail('A pull policy other than always is only supported since Docker Compose 2.22.0. {0} has version {1}'.format(
|
||||
self.client.get_cli(), self.compose_version))
|
||||
if self.ignore_buildable and self.compose_version < LooseVersion('2.15.0'):
|
||||
# https://github.com/docker/compose/pull/10134 - 2.15.0
|
||||
self.fail('--ignore-buildable is only supported since Docker Compose 2.15.0. {0} has version {1}'.format(
|
||||
self.client.get_cli(), self.compose_version))
|
||||
|
||||
def get_pull_cmd(self, dry_run, no_start=False):
|
||||
args = self.get_base_args() + ['pull']
|
||||
if self.policy != 'always':
|
||||
args.extend(['--policy', self.policy])
|
||||
if self.ignore_buildable:
|
||||
args.append('--ignore-buildable')
|
||||
if self.include_deps:
|
||||
args.append('--include-deps')
|
||||
if dry_run:
|
||||
args.append('--dry-run')
|
||||
args.append('--')
|
||||
for service in self.services:
|
||||
args.append(service)
|
||||
return args
|
||||
|
||||
def run(self):
|
||||
@ -144,6 +176,9 @@ class PullManager(BaseComposeManager):
|
||||
def main():
|
||||
argument_spec = dict(
|
||||
policy=dict(type='str', choices=['always', 'missing'], default='always'),
|
||||
ignore_buildable=dict(type='bool', default=False),
|
||||
include_deps=dict(type='bool', default=False),
|
||||
services=dict(type='list', elements='str'),
|
||||
)
|
||||
argspec_ex = common_compose_argspec_ex()
|
||||
argument_spec.update(argspec_ex.pop('argspec'))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user