1
0
Fork 0
mirror of https://github.com/containers/ansible-podman-collections.git synced 2026-04-28 20:08:48 +00:00

Change network attribute from str to list in pods #414 #416 (#417)

* Change network attribute from str to list in pods

Signed-off-by: André Cirne <dumahk21@gmail.com>

* Fix tests

Signed-off-by: Sagi Shnaidman <sshnaidm@redhat.com>

Co-authored-by: André Cirne <dumahk21@gmail.com>
This commit is contained in:
Sergey 2022-04-25 02:15:29 +03:00 committed by GitHub
parent b51dc5c814
commit e5d6136694
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 20 deletions

View file

@ -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)))

View file

@ -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:

View file

@ -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 }}"

View file

@ -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