From 24c842fdd64d56710f370ef342c9f7c27bf83099 Mon Sep 17 00:00:00 2001 From: Sergey <6213510+sshnaidm@users.noreply.github.com> Date: Thu, 20 Jun 2024 09:53:16 +0300 Subject: [PATCH] Fix idempotency for empty values (#790) Fix #788 Signed-off-by: Sagi Shnaidman --- plugins/module_utils/podman/common.py | 4 ++ .../tasks/idem_all.yml | 38 +++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/plugins/module_utils/podman/common.py b/plugins/module_utils/podman/common.py index aac7b60..acdc649 100644 --- a/plugins/module_utils/podman/common.py +++ b/plugins/module_utils/podman/common.py @@ -404,11 +404,15 @@ def diff_generic(params, info_config, module_arg, cmd_arg, boolean_type=False): after = ",".join(sorted([str(i).lower() for i in after])) if before: before = ",".join(sorted([str(i).lower() for i in before])) + else: + before = '' elif isinstance(after, dict): after = ",".join(sorted( [str(k).lower() + "=" + str(v).lower() for k, v in after.items() if v is not None])) if before: before = ",".join(sorted([j.lower() for j in before])) + else: + before = '' elif isinstance(after, bool): after = str(after).capitalize() if before is not None: diff --git a/tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml b/tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml index 0babf03..11dbf59 100644 --- a/tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml +++ b/tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml @@ -26,6 +26,44 @@ assert: that: test1 is not changed +- name: Run container with empty vars for list and dict + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + image: "{{ idem_image }}" + name: idempotency + state: present + env: {} + publish: [] + command: 1h + register: test_to_empty + +- name: Run container with empty vars for list and dict - again + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + image: "{{ idem_image }}" + name: idempotency + state: present + env: {} + publish: [] + command: 1h + register: test_empty + +- name: Run container again w/o empty vars + containers.podman.podman_container: + executable: "{{ test_executable | default('podman') }}" + image: "{{ idem_image }}" + name: idempotency + state: present + command: 1h + register: test_from_empty + +- name: Check info when running container again + assert: + that: + - test_to_empty is not changed + - test_empty is not changed + - test_from_empty is not changed + - name: Run container with environment vars containers.podman.podman_container: executable: "{{ test_executable | default('podman') }}"