Use naming convention to infer VLAN tagging

Any interface not matching the convention: <interface>.<vlan id> will be
assumed to untagged when generating the config drive. The link type will
be set to `phy` in `network_data.json` instead of `vlan`. This prevents
invalid config drive configuration from being generated.

Change-Id: I00e7615581c7a214e0ee8e8f04cacdbb3ea4131a
Story: 2009910
Task: 44736
This commit is contained in:
Will Szumski 2022-03-10 12:22:48 +00:00 committed by Pierre Riteau
parent 678b915aff
commit dd956189ed
2 changed files with 10 additions and 2 deletions

View File

@ -595,7 +595,7 @@ def net_configdrive_network_device(context, name, inventory_hostname=None):
bootproto = net_bootproto(context, name, inventory_hostname)
mtu = net_mtu(context, name, inventory_hostname)
vlan = net_vlan(context, name, inventory_hostname)
if vlan:
if vlan and '.' in device:
backend = [device.split('.')[0]]
else:
backend = None
@ -608,7 +608,7 @@ def net_configdrive_network_device(context, name, inventory_hostname=None):
'mtu': mtu,
'backend': backend,
}
if vlan:
if backend:
interface['type'] = 'vlan'
interface = {k: v for k, v in interface.items() if v is not None}
return interface

View File

@ -0,0 +1,8 @@
---
fixes:
- |
Fixes an issue with config drive generation for infrastructure and seed VMs
when using untagged interfaces. The symptom of this issue is that kayobe
cannot login to the instance. If you check the libvirt console log, you
will see ``KeyError: 'vlan_link'``. See `story 2009910
<https://storyboard.openstack.org/#!/story/2009910>`__ for details.