docker_plugin: do not crash when plugin doesn't exist (#553)

* Do not crash when plugin doesn't exist.

* Improve style.

Co-authored-by: Brian Scholer <1260690+briantist@users.noreply.github.com>

Co-authored-by: Brian Scholer <1260690+briantist@users.noreply.github.com>
This commit is contained in:
Felix Fontein 2023-01-13 20:49:06 +01:00 committed by GitHub
parent 01429108d3
commit c7cbec0163
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 74 additions and 1 deletions

View File

@ -0,0 +1,2 @@
bugfixes:
- "docker_plugin - do not crash if plugin is installed in check mode (https://github.com/ansible-collections/community.docker/issues/552, https://github.com/ansible-collections/community.docker/pull/553)."

View File

@ -346,11 +346,18 @@ class DockerPluginManager(object):
@property
def result(self):
plugin_data = {}
if self.parameters.state != 'absent':
try:
plugin_data = self.client.get_json('/plugins/{0}/json', self.preferred_name)
except NotFound:
# This can happen in check mode
pass
result = {
'actions': self.actions,
'changed': self.changed,
'diff': self.diff,
'plugin': self.client.get_json('/plugins/{0}/json', self.preferred_name) if self.parameters.state != 'absent' else {}
'plugin': plugin_data,
}
return dict((k, v) for k, v in result.items() if v is not None)

View File

@ -14,48 +14,104 @@
############ basic test ############
####################################
- name: Create a plugin (check mode)
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: present
register: create_1_check
check_mode: true
- name: Create a plugin
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: present
register: create_1
- name: Create a plugin (Idempotent, check mode)
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: present
register: create_2_check
check_mode: true
- name: Create a plugin (Idempotent)
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: present
register: create_2
- name: Enable a plugin (check mode)
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: enable
register: create_3_check
check_mode: true
- name: Enable a plugin
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: enable
register: create_3
- name: Enable a plugin (Idempotent, check mode)
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: enable
register: create_4_check
check_mode: true
- name: Enable a plugin (Idempotent)
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: enable
register: create_4
- name: Disable a plugin (check mode)
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: disable
register: absent_1_check
check_mode: true
- name: Disable a plugin
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: disable
register: absent_1
- name: Disable a plugin (Idempotent, check mode)
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: disable
register: absent_2_check
check_mode: true
- name: Disable a plugin (Idempotent)
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: disable
register: absent_2
- name: Remove a plugin (check mode)
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: absent
register: absent_3_check
check_mode: true
- name: Remove a plugin
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: absent
register: absent_3
- name: Remove a plugin (Idempotent, check mode)
docker_plugin:
plugin_name: "{{ plugin_name }}"
state: absent
register: absent_4_check
check_mode: true
- name: Remove a plugin (Idempotent)
docker_plugin:
plugin_name: "{{ plugin_name }}"
@ -70,13 +126,21 @@
- assert:
that:
- create_1_check is changed
- create_1 is changed
- create_2_check is not changed
- create_2 is not changed
- create_3_check is changed
- create_3 is changed
- create_4_check is not changed
- create_4 is not changed
- absent_1_check is changed
- absent_1 is changed
- absent_2_check is not changed
- absent_2 is not changed
- absent_3_check is changed
- absent_3 is changed
- absent_4_check is not changed
- absent_4 is not changed
############ Plugin_Options ############