diff --git a/plugins/module_utils/podman/podman_container_lib.py b/plugins/module_utils/podman/podman_container_lib.py index c747fb6..2f3179b 100644 --- a/plugins/module_utils/podman/podman_container_lib.py +++ b/plugins/module_utils/podman/podman_container_lib.py @@ -961,6 +961,13 @@ class PodmanContainerDiff: net_mode_before = self.info['hostconfig']['networkmode'] net_mode_after = '' before = list(self.info['networksettings'].get('networks', {})) + # Special case for options for slirp4netns rootless networking from v2 + if net_mode_before == 'slirp4netns' and 'createcommand' in self.info['config']: + cr_com = self.info['config']['createcommand'] + if '--network' in cr_com: + cr_net = cr_com[cr_com.index('--network') + 1].lower() + if 'slirp4netns:' in cr_net: + before = [cr_net] after = self.params['network'] or [] # If container is in pod and no networks are provided if not self.module_params['network'] and self.params['pod']: diff --git a/tests/integration/targets/podman_container_idempotency/tasks/rootless-podman-network.yml b/tests/integration/targets/podman_container_idempotency/tasks/rootless-podman-network.yml index 2178e52..f8518ab 100644 --- a/tests/integration/targets/podman_container_idempotency/tasks/rootless-podman-network.yml +++ b/tests/integration/targets/podman_container_idempotency/tasks/rootless-podman-network.yml @@ -95,6 +95,77 @@ that: - info5 is changed + - name: Run container with slirp4netns options + containers.podman.podman_container: + name: rootlessnet + image: "{{ idem_image }}" + command: 1h + state: present + network: + - slirp4netns:allow_host_loopback=true,cidr=10.0.3.0/24 + register: info6 + + - name: Check info with slirp4netns options + assert: + that: + - info6 is changed + + - name: Run container with slirp4netns options - again + containers.podman.podman_container: + name: rootlessnet + image: "{{ idem_image }}" + command: 1h + state: present + network: + - slirp4netns:allow_host_loopback=true,cidr=10.0.3.0/24 + register: info7 + + - name: Check info with slirp4netns options - again + assert: + that: + - info7 is not changed + + - name: Run container with different slirp4netns options + containers.podman.podman_container: + name: rootlessnet + image: "{{ idem_image }}" + command: 1h + state: present + network: + - slirp4netns:allow_host_loopback=true,cidr=10.0.4.0/24 + register: info8 + + - name: Check info with different slirp4netns options + assert: + that: + - info8 is changed + + - name: Run container without options + containers.podman.podman_container: + name: rootlessnet + image: "{{ idem_image }}" + command: 1h + state: present + register: info9 + + - name: Check info without options + assert: + that: + - info9 is changed + + - name: Run container without options - again + containers.podman.podman_container: + name: rootlessnet + image: "{{ idem_image }}" + command: 1h + state: present + register: info10 + + - name: Check info without options - again + assert: + that: + - info10 is not changed + always: - name: Delete all pods leftovers from tests