Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 2 commits into from
Jan 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions changelogs/fragments/553-docker_plugin-check-mode.yml
Original file line number Diff line number Diff line change
@@ -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)."
9 changes: 8 additions & 1 deletion plugins/modules/docker_plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -346,11 +346,18 @@ def disable(self):

@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)

Expand Down
64 changes: 64 additions & 0 deletions tests/integration/targets/docker_plugin/tasks/tests/basic.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}"
Expand All @@ -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 ############
Expand Down