From b7505747102ae8b766979b1d6ff77a925f105e3d Mon Sep 17 00:00:00 2001 From: Sagi Shnaidman Date: Thu, 9 Jan 2020 13:32:26 +0200 Subject: [PATCH] Improve idempotency of podman_container Make image comparing more readable If 'command' is not set, don't compare it with current, assume it's empty. Change-Id: I935c617b242fb955ed08ed492bbd09e7f3f4fd4c (cherry picked from commit fe6d3d4721b76ee13e2950af0f522ede3d530a7f) --- .../modules/podman_container.py | 36 +++++++++++-------- .../molecule/podman_container/playbook.yml | 4 +-- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/tripleo_ansible/ansible_plugins/modules/podman_container.py b/tripleo_ansible/ansible_plugins/modules/podman_container.py index f82fd74d4..93fc8e9b7 100644 --- a/tripleo_ansible/ansible_plugins/modules/podman_container.py +++ b/tripleo_ansible/ansible_plugins/modules/podman_container.py @@ -1397,13 +1397,16 @@ class PodmanContainerDiff: return self._diff_update_and_compare('cidfile', before, after) def diffparam_command(self): - before = self.info['config']['cmd'] - after = self.params['command'] - if isinstance(after, str): - after = [i.lower() for i in after.split()] - elif isinstance(after, list): - after = [i.lower() for i in after] - return self._diff_update_and_compare('command', before, after) + # TODO(sshnaidm): to inspect image to get the default command + if self.module.params['command'] is not None: + before = self.info['config']['cmd'] + after = self.params['command'] + if isinstance(after, str): + after = [i.lower() for i in after.split()] + elif isinstance(after, list): + after = [i.lower() for i in after] + return self._diff_update_and_compare('command', before, after) + return False def diffparam_conmon_pidfile(self): before = self.info['conmonpidfile'] @@ -1515,14 +1518,17 @@ class PodmanContainerDiff: return self._diff_update_and_compare('hostname', before, after) def diffparam_image(self): - before = self.info['config']['image'].replace( - "docker.io/library/", "").replace( - "docker.io/", "").replace( - ":latest", "") - after = self.params['image'].replace( - "docker.io/library/", "").replace( - "docker.io/", "").replace( - ":latest", "") + # TODO(sshnaidm): for strict image compare use SHAs + before = self.info['config']['image'] + after = self.params['image'] + strip_from_name = [ + "docker.io/library/", + "docker.io/", + ":latest", + ] + for repl in strip_from_name: + before = before.replace(repl, "") + after = after.replace(repl, "") return self._diff_update_and_compare('image', before, after) def diffparam_ipc(self): diff --git a/tripleo_ansible/ansible_plugins/tests/molecule/podman_container/playbook.yml b/tripleo_ansible/ansible_plugins/tests/molecule/podman_container/playbook.yml index 50344dc65..ee995b95a 100644 --- a/tripleo_ansible/ansible_plugins/tests/molecule/podman_container/playbook.yml +++ b/tripleo_ansible/ansible_plugins/tests/molecule/podman_container/playbook.yml @@ -327,14 +327,14 @@ - name: Check basic idempotency of running container podman_container: name: testidem - image: alpine + image: docker.io/alpine state: present command: sleep 20m - name: Check basic idempotency of running container - run it again podman_container: name: testidem - image: alpine + image: alpine:latest state: present command: sleep 20m register: idem