summaryrefslogtreecommitdiff
path: root/cloudinit/sources
diff options
context:
space:
mode:
authorDaniel Watkins <daniel.watkins@canonical.com>2019-03-04 18:41:05 +0000
committerServer Team CI Bot <josh.powers+server-team-bot@canonical.com>2019-03-04 18:41:05 +0000
commit5352dd99eb2937b4eaaaf596b40ad7ca69d87f64 (patch)
tree9f705286334ed161e171793bed907795b3b2ed6e /cloudinit/sources
parentedf052c3196139169ecbfe98049c278f4babc8ca (diff)
downloadvyos-cloud-init-5352dd99eb2937b4eaaaf596b40ad7ca69d87f64.tar.gz
vyos-cloud-init-5352dd99eb2937b4eaaaf596b40ad7ca69d87f64.zip
helpers/openstack: Treat unknown link types as physical
Some deployments of OpenStack expose link types to the guest which cloud-init doesn't recognise. These will almost always be physical, so we can operate more robustly if we assume that they are (whilst warning the user that we're seeing something unexpected). LP: #1639263
Diffstat (limited to 'cloudinit/sources')
-rw-r--r--cloudinit/sources/helpers/openstack.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/cloudinit/sources/helpers/openstack.py b/cloudinit/sources/helpers/openstack.py
index 9c29ceac..8f069115 100644
--- a/cloudinit/sources/helpers/openstack.py
+++ b/cloudinit/sources/helpers/openstack.py
@@ -67,7 +67,7 @@ OS_VERSIONS = (
OS_ROCKY,
)
-PHYSICAL_TYPES = (
+KNOWN_PHYSICAL_TYPES = (
None,
'bgpovs', # not present in OpenStack upstream but used on OVH cloud.
'bridge',
@@ -600,9 +600,7 @@ def convert_net_json(network_json=None, known_macs=None):
subnet['ipv6'] = True
subnets.append(subnet)
cfg.update({'subnets': subnets})
- if link['type'] in PHYSICAL_TYPES:
- cfg.update({'type': 'physical', 'mac_address': link_mac_addr})
- elif link['type'] in ['bond']:
+ if link['type'] in ['bond']:
params = {}
if link_mac_addr:
params['mac_address'] = link_mac_addr
@@ -641,8 +639,10 @@ def convert_net_json(network_json=None, known_macs=None):
curinfo.update({'mac': link['vlan_mac_address'],
'name': name})
else:
- raise ValueError(
- 'Unknown network_data link type: %s' % link['type'])
+ if link['type'] not in KNOWN_PHYSICAL_TYPES:
+ LOG.warning('Unknown network_data link type (%s); treating as'
+ ' physical', link['type'])
+ cfg.update({'type': 'physical', 'mac_address': link_mac_addr})
config.append(cfg)
link_id_info[curinfo['id']] = curinfo