diff --git a/plugins/module_utils/podman/podman_pod_lib.py b/plugins/module_utils/podman/podman_pod_lib.py index aff3c0c..4757e7c 100644 --- a/plugins/module_utils/podman/podman_pod_lib.py +++ b/plugins/module_utils/podman/podman_pod_lib.py @@ -46,7 +46,7 @@ ARGUMENTS_SPEC_POD = dict( label_file=dict(type='str', required=False), mac_address=dict(type='str', required=False), name=dict(type='str', required=True), - network=dict(type='str', required=False), + network=dict(type='list', elements='str', required=False), network_alias=dict(type='list', elements='str', required=False, aliases=['network_aliases']), no_hosts=dict(type='bool', required=False), @@ -212,7 +212,7 @@ class PodmanPodModuleParams: return c + ['--name', self.params['name']] def addparam_network(self, c): - return c + ['--network', self.params['network']] + return c + ['--network', ",".join(self.params['network'])] def addparam_network_aliases(self, c): for alias in self.params['network_aliases']: @@ -414,7 +414,7 @@ class PodmanPodDiff: # Remove default 'podman' network in v3 for comparison if before == ['podman']: before = [] - after = self.params['network'] + after = self.params['network'] or [] # Special case for options for slirp4netns rootless networking from v2 if net_mode_before == 'slirp4netns' and 'createcommand' in self.info: cr_com = self.info['createcommand'] @@ -423,12 +423,9 @@ class PodmanPodDiff: if 'slirp4netns:' in cr_net: before = [cr_net] # Currently supported only 'host' and 'none' network modes idempotency - if after in ['bridge', 'host', 'slirp4netns']: - net_mode_after = after - elif after: - after = after.split(",") - else: - after = [] + if after in [['bridge'], ['host'], ['slirp4netns']]: + net_mode_after = after[0] + if net_mode_after and not before: # Remove differences between v1 and v2 net_mode_after = net_mode_after.replace('bridge', 'default') @@ -492,7 +489,7 @@ class PodmanPodDiff: after = self.params['share'].split(",") else: after = ['uts', 'ipc', 'net'] - if self.params['network'] == 'host': + if 'host' in (self.params['network'] or []): after.remove('net') before, after = sorted(list(set(before))), sorted(list(set(after))) diff --git a/plugins/modules/podman_pod.py b/plugins/modules/podman_pod.py index a3e4f07..75c5161 100644 --- a/plugins/modules/podman_pod.py +++ b/plugins/modules/podman_pod.py @@ -233,9 +233,9 @@ options: description: - Set network mode for the pod. Supported values are bridge (the default), host (do not create a network namespace, all containers in the pod will use the host's - network), or a comma-separated list of the names of CNI networks the pod should - join. - type: str + network), or a list of names of CNI networks to join. + type: list + elements: str required: false network_alias: description: diff --git a/tests/integration/targets/podman_pod/tasks/net-pod.yml b/tests/integration/targets/podman_pod/tasks/net-pod.yml index b1b15de..34574ec 100644 --- a/tests/integration/targets/podman_pod/tasks/net-pod.yml +++ b/tests/integration/targets/podman_pod/tasks/net-pod.yml @@ -25,17 +25,27 @@ - first_net: anothernet next_net: testnet - first_net: testnet - next_net: testnet,anothernet - - first_net: testnet,anothernet + next_net: + - testnet + - anothernet + - first_net: + - testnet + - anothernet next_net: anothernet - - first_net: testnet,anothernet + - first_net: + - testnet + - anothernet next_net: bridge - - first_net: testnet,anothernet + - first_net: + - testnet + - anothernet next_net: host - first_net: host next_net: anothernet - first_net: bridge - next_net: anothernet,testnet + next_net: + - anothernet + - testnet - include_tasks: network-tests.yml loop: "{{ testdata }}" diff --git a/tests/integration/targets/podman_pod/tasks/root-pod.yml b/tests/integration/targets/podman_pod/tasks/root-pod.yml index 015cb5e..8848dfa 100644 --- a/tests/integration/targets/podman_pod/tasks/root-pod.yml +++ b/tests/integration/targets/podman_pod/tasks/root-pod.yml @@ -64,7 +64,9 @@ containers.podman.podman_pod: name: "rootpod" state: started - network: net2,newnet + network: + - net2 + - newnet register: pod4_info - name: Check info @@ -76,7 +78,9 @@ containers.podman.podman_pod: name: "rootpod" state: started - network: newnet,net2 + network: + - newnet + - net2 register: pod5_info - name: Check info