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 fe6d3d4721)
This commit is contained in:
Sagi Shnaidman 2020-01-09 13:32:26 +02:00 committed by Emilien Macchi
parent ec4351c566
commit b750574710
2 changed files with 23 additions and 17 deletions

View File

@ -1397,13 +1397,16 @@ class PodmanContainerDiff:
return self._diff_update_and_compare('cidfile', before, after) return self._diff_update_and_compare('cidfile', before, after)
def diffparam_command(self): def diffparam_command(self):
before = self.info['config']['cmd'] # TODO(sshnaidm): to inspect image to get the default command
after = self.params['command'] if self.module.params['command'] is not None:
if isinstance(after, str): before = self.info['config']['cmd']
after = [i.lower() for i in after.split()] after = self.params['command']
elif isinstance(after, list): if isinstance(after, str):
after = [i.lower() for i in after] after = [i.lower() for i in after.split()]
return self._diff_update_and_compare('command', before, after) 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): def diffparam_conmon_pidfile(self):
before = self.info['conmonpidfile'] before = self.info['conmonpidfile']
@ -1515,14 +1518,17 @@ class PodmanContainerDiff:
return self._diff_update_and_compare('hostname', before, after) return self._diff_update_and_compare('hostname', before, after)
def diffparam_image(self): def diffparam_image(self):
before = self.info['config']['image'].replace( # TODO(sshnaidm): for strict image compare use SHAs
"docker.io/library/", "").replace( before = self.info['config']['image']
"docker.io/", "").replace( after = self.params['image']
":latest", "") strip_from_name = [
after = self.params['image'].replace( "docker.io/library/",
"docker.io/library/", "").replace( "docker.io/",
"docker.io/", "").replace( ":latest",
":latest", "") ]
for repl in strip_from_name:
before = before.replace(repl, "")
after = after.replace(repl, "")
return self._diff_update_and_compare('image', before, after) return self._diff_update_and_compare('image', before, after)
def diffparam_ipc(self): def diffparam_ipc(self):

View File

@ -327,14 +327,14 @@
- name: Check basic idempotency of running container - name: Check basic idempotency of running container
podman_container: podman_container:
name: testidem name: testidem
image: alpine image: docker.io/alpine
state: present state: present
command: sleep 20m command: sleep 20m
- name: Check basic idempotency of running container - run it again - name: Check basic idempotency of running container - run it again
podman_container: podman_container:
name: testidem name: testidem
image: alpine image: alpine:latest
state: present state: present
command: sleep 20m command: sleep 20m
register: idem register: idem