-
Notifications
You must be signed in to change notification settings - Fork 1k
Description
Bug report
Creating two bridges on top of two interfaces using Network-Config version 2 for cloud-init, using NetworkManager renderer, cloud-init failed stage init-local with KeyError.
https://issues.redhat.com/browse/RHEL-52718
Environment details
- Cloud-init version: cloud-init-23.4
- Operating System Distribution: rhel 9.4
- Cloud provider, platform or installer type: KVM, NoCloud
How reproducible:
100%
##Steps to reproduce the problem
I used the same Network-Config data with #5574 but using NM renderer.
modified /etc/cloud/cloud.cfg to
network:
renderers: ['network-manager', 'eni', 'netplan', 'sysconfig', 'networkd']
network-config
network:
bridges:
baremetal:
addresses:
- fc00:1:1::2/64
interfaces:
- baremetalport
nameservers:
addresses:
- fc00:1:1::1
routes:
- on-link: true
to: ::/0
via: fc00:1:1::1
stp: false
provisioning:
addresses:
- fc00:1:2::2/64
interfaces:
- provisioningport
routes: []
stp: false
ethernets:
baremetalport:
match:
macaddress: 52:54:00:bd:8f:cb
set-name: baremetal0
provisioningport:
match:
macaddress: 52:54:00:25:ae:12
set-name: provisioning0
renderer: NetworkManager
version: 2
Command used to build config-drive ISO image:
genisoimage -output config-drive.iso -volid CIDATA -joliet
-rock user-data meta-data
network-config
Create a VM in libvirt with two network interfaces, match MAC address of network-config.
Boot the VM
Expected results
The VM should boot and correctly configure the network interfaces and bridges.
Actual results
cloud-init failed stage init-local with KeyError.
cloud-init logs
2024-08-03 07:43:52,820 - network_state.py[DEBUG]: v2(ethernets) -> v1(physical))
:
{'type': 'physical', 'mac_address': '52:54:00:25:ae:12', 'name': 'provisioning0''
, 'match': {'macaddress': '52:54:00:25:ae:12'}}
2024-08-03 07:43:52,826 - network_state.py[DEBUG]: v2_common: handling config:
{'baremetalport': {'match': {'macaddress': '52:54:00:bd:8f:cb'}, 'set-name': 'baremetal0'}, 'provisionport': {'match': {'macaddress': '52:54:00:25:ae:12'}, 'set-name': 'provisioning0'}}
2024-08-03 07:43:52,828 - network_manager.py[WARNING]: iface: {'name': 'baremetalport', 'type': None, 'mac_address': None, 'inet': 'inet', 'mode': 'manual', 'mtu': None, 'address': None, 'gateway': None, 'subnets': [], 'accept-ra': None, 'wakeonlan': None} type: None
2024-08-03 07:43:52,828 - network_manager.py[WARNING]: KeyError: None
2024-08-03 07:43:52,828 - util.py[WARNING]: failed stage init-local
2024-08-03 07:43:52,828 - util.py[DEBUG]: failed stage init-local
Traceback (most recent call last):
File "/usr/lib/python3.9/site-packages/cloudinit/cmd/main.py", line 781, in status_wrapper
ret = functor(name, args)
File "/usr/lib/python3.9/site-packages/cloudinit/cmd/main.py", line 442, in main_init
init.apply_network_config(bring_up=bring_up_interfaces)
File "/usr/lib/python3.9/site-packages/cloudinit/stages.py", line 1061, in apply_network_config
return self.distro.apply_network_config(
File "/usr/lib/python3.9/site-packages/cloudinit/distros/__init__.py", line 413, in apply_network_config
self._write_network_state(network_state, renderer)
File "/usr/lib/python3.9/site-packages/cloudinit/distros/__init__.py", line 293, in _write_network_state
478, in render_network_state
conn.render_interface(iface, network_state, self)
File "/usr/lib/python3.9/site-packages/cloudinit/net/network_manager.py", line 270, in render_interface
raise err
File "/usr/lib/python3.9/site-packages/cloudinit/net/network_manager.py", line 267, in render_interface
if_type = _type_map[iface["type"]]
KeyError: None
when I tested #5674, I found the error changed to
2024-09-19 09:25:13,614 - network_state.py[DEBUG]: v2(ethernets) -> v1(physical))
:
{'config_id': 'provisionport', 'type': 'physical', 'mac_address': '52:54:00:25:ae:12', 'name': 'provisioning0', 'match': {'macaddress': '52:54:00:25:ae:12'}}
2024-09-19 09:25:13,620 - network_state.py[DEBUG]: v2_common: handling config:
{'baremetalport': {'match': {'macaddress': '52:54:00:bd:8f:cb'}, 'set-name': 'baremetal0'}, 'provisionport': {'match': {'macaddress': '52:54:00:25:ae:12'}, 'set-name': 'provisioning0'}}
2024-09-19 09:25:13,621 - util.py[WARNING]: failed stage init-local
2024-09-19 09:25:13,623 - util.py[DEBUG]: failed stage init-local
Traceback (most recent call last):
File "/usr/lib/python3.9/site-packages/cloudinit/cmd/main.py", line 781, in status_wrapper
ret = functor(name, args)
File "/usr/lib/python3.9/site-packages/cloudinit/cmd/main.py", line 442, in main_init
init.apply_network_config(bring_up=bring_up_interfaces)
File "/usr/lib/python3.9/site-packages/cloudinit/stages.py", line 1061, in apply_network_config
return self.distro.apply_network_config(
File "/usr/lib/python3.9/site-packages/cloudinit/distros/__init__.py", line 413, in apply_network_config
self._write_network_state(network_state, renderer)
File "/usr/lib/python3.9/site-packages/cloudinit/distros/__init__.py", line 293, in _write_network_state
renderer.render_network_state(network_state)
File "/usr/lib/python3.9/site-packages/cloudinit/net/network_manager.py", line 472, in render_network_state
conn.render_interface(iface, network_state, self)
File "/usr/lib/python3.9/site-packages/cloudinit/net/network_manager.py", line 408, in render_interface
port = renderer.get_conn(port)
File "/usr/lib/python3.9/site-packages/cloudinit/net/network_manager.py", line 448, in get_conn
return self.connections[con_id]
KeyError: 'baremetalport'