mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-27 04:41:26 -07:00
Docker volume fix labels (#48536)
* Add integration test for labels (which fails). * Changing labels from list to dict. * Add changelog.
This commit is contained in:
parent
9a848ca883
commit
feb60b947c
3 changed files with 56 additions and 4 deletions
2
changelogs/fragments/48536-docker_volume-labels.yml
Normal file
2
changelogs/fragments/48536-docker_volume-labels.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- "docker_volume - ``labels`` now work (and are a ``dict`` and no longer a ``list``)."
|
|
@ -25,6 +25,7 @@ options:
|
||||||
description:
|
description:
|
||||||
- Name of the volume to operate on.
|
- Name of the volume to operate on.
|
||||||
required: true
|
required: true
|
||||||
|
type: dict
|
||||||
aliases:
|
aliases:
|
||||||
- volume_name
|
- volume_name
|
||||||
|
|
||||||
|
@ -32,15 +33,18 @@ options:
|
||||||
description:
|
description:
|
||||||
- Specify the type of volume. Docker provides the C(local) driver, but 3rd party drivers can also be used.
|
- Specify the type of volume. Docker provides the C(local) driver, but 3rd party drivers can also be used.
|
||||||
default: local
|
default: local
|
||||||
|
type: str
|
||||||
|
|
||||||
driver_options:
|
driver_options:
|
||||||
description:
|
description:
|
||||||
- "Dictionary of volume settings. Consult docker docs for valid options and values:
|
- "Dictionary of volume settings. Consult docker docs for valid options and values:
|
||||||
U(https://docs.docker.com/engine/reference/commandline/volume_create/#driver-specific-options)"
|
U(https://docs.docker.com/engine/reference/commandline/volume_create/#driver-specific-options)"
|
||||||
|
type: dict
|
||||||
|
|
||||||
labels:
|
labels:
|
||||||
description:
|
description:
|
||||||
- List of labels to set for the volume
|
- Dictionary of label key/values to set for the volume
|
||||||
|
type: dict
|
||||||
|
|
||||||
force:
|
force:
|
||||||
description:
|
description:
|
||||||
|
@ -185,8 +189,7 @@ class DockerVolumeManager(object):
|
||||||
differences.append('driver_options.%s' % key)
|
differences.append('driver_options.%s' % key)
|
||||||
if self.parameters.labels:
|
if self.parameters.labels:
|
||||||
existing_labels = self.existing_volume.get('Labels', {})
|
existing_labels = self.existing_volume.get('Labels', {})
|
||||||
all_labels = set(self.parameters.labels) | set(existing_labels)
|
for label in self.parameters.labels:
|
||||||
for label in all_labels:
|
|
||||||
if existing_labels.get(label) != self.parameters.labels.get(label):
|
if existing_labels.get(label) != self.parameters.labels.get(label):
|
||||||
differences.append('labels.%s' % label)
|
differences.append('labels.%s' % label)
|
||||||
|
|
||||||
|
@ -247,7 +250,7 @@ def main():
|
||||||
state=dict(type='str', default='present', choices=['present', 'absent']),
|
state=dict(type='str', default='present', choices=['present', 'absent']),
|
||||||
driver=dict(type='str', default='local'),
|
driver=dict(type='str', default='local'),
|
||||||
driver_options=dict(type='dict', default={}),
|
driver_options=dict(type='dict', default={}),
|
||||||
labels=dict(type='list'),
|
labels=dict(type='dict'),
|
||||||
force=dict(type='bool', default=False),
|
force=dict(type='bool', default=False),
|
||||||
debug=dict(type='bool', default=False)
|
debug=dict(type='bool', default=False)
|
||||||
)
|
)
|
||||||
|
|
|
@ -90,3 +90,50 @@
|
||||||
- driver_options_1 is changed
|
- driver_options_1 is changed
|
||||||
- driver_options_2 is not changed
|
- driver_options_2 is not changed
|
||||||
- driver_options_3 is changed
|
- driver_options_3 is changed
|
||||||
|
|
||||||
|
####################################################################
|
||||||
|
## labels ##########################################################
|
||||||
|
####################################################################
|
||||||
|
|
||||||
|
- name: Create a volume with labels
|
||||||
|
docker_volume:
|
||||||
|
name: "{{ vname }}"
|
||||||
|
labels:
|
||||||
|
ansible.test.1: hello
|
||||||
|
ansible.test.2: world
|
||||||
|
register: driver_labels_1
|
||||||
|
|
||||||
|
- name: Create a volume with labels (idempotency)
|
||||||
|
docker_volume:
|
||||||
|
name: "{{ vname }}"
|
||||||
|
labels:
|
||||||
|
ansible.test.2: world
|
||||||
|
ansible.test.1: hello
|
||||||
|
register: driver_labels_2
|
||||||
|
|
||||||
|
- name: Create a volume with labels (less)
|
||||||
|
docker_volume:
|
||||||
|
name: "{{ vname }}"
|
||||||
|
labels:
|
||||||
|
ansible.test.1: hello
|
||||||
|
register: driver_labels_3
|
||||||
|
|
||||||
|
- name: Create a volume with labels (more)
|
||||||
|
docker_volume:
|
||||||
|
name: "{{ vname }}"
|
||||||
|
labels:
|
||||||
|
ansible.test.1: hello
|
||||||
|
ansible.test.3: ansible
|
||||||
|
register: driver_labels_4
|
||||||
|
|
||||||
|
- name: Cleanup
|
||||||
|
docker_volume:
|
||||||
|
name: "{{ vname }}"
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- driver_labels_1 is changed
|
||||||
|
- driver_labels_2 is not changed
|
||||||
|
- driver_labels_3 is not changed
|
||||||
|
- driver_labels_4 is changed
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue