diff --git a/changelogs/fragments/886-compose-v2-req.yml b/changelogs/fragments/886-compose-v2-req.yml new file mode 100644 index 00000000..7c80d899 --- /dev/null +++ b/changelogs/fragments/886-compose-v2-req.yml @@ -0,0 +1,2 @@ +bugfixes: + - "docker_compose_v2* modules - there was no check to make sure that one of ``project_src`` and ``definition`` is provided. The modules crashed if none were provided (https://github.com/ansible-collections/community.docker/issues/885, https://github.com/ansible-collections/community.docker/pull/886)." diff --git a/plugins/doc_fragments/compose_v2.py b/plugins/doc_fragments/compose_v2.py index 234a94fe..58ea7dc2 100644 --- a/plugins/doc_fragments/compose_v2.py +++ b/plugins/doc_fragments/compose_v2.py @@ -18,7 +18,7 @@ options: - Path to a directory containing a Compose file (C(compose.yml), C(compose.yaml), C(docker-compose.yml), or C(docker-compose.yaml)). - If O(files) is provided, will look for these files in this directory instead. - - Mutually exclusive with O(definition). + - Mutually exclusive with O(definition). One of O(project_src) and O(definition) must be provided. type: path project_name: description: @@ -37,7 +37,7 @@ options: definition: description: - Compose file describing one or more services, networks and volumes. - - Mutually exclusive with O(project_src) and O(files). + - Mutually exclusive with O(project_src) and O(files). One of O(project_src) and O(definition) must be provided. - If provided, PyYAML must be available to this module, and O(project_name) must be specified. - Note that a temporary directory will be created and deleted afterwards when using this option. type: dict diff --git a/plugins/module_utils/compose_v2.py b/plugins/module_utils/compose_v2.py index 85fbd5d8..80d6be66 100644 --- a/plugins/module_utils/compose_v2.py +++ b/plugins/module_utils/compose_v2.py @@ -518,6 +518,9 @@ def common_compose_argspec_ex(): ('definition', 'project_src'), ('definition', 'files') ], + required_one_of=[ + ('definition', 'project_src'), + ], required_by={ 'definition': ('project_name', ), },