summaryrefslogtreecommitdiff
path: root/cloudinit/net/netplan.py
diff options
context:
space:
mode:
authorChad Smith <chad.smith@canonical.com>2018-03-28 12:29:04 -0600
committerChad Smith <chad.smith@canonical.com>2018-03-28 12:29:04 -0600
commitcf3eaed2e01062f9b5d47042d7a76b092970e0cf (patch)
tree53f7c52c5a76bb586da0483699fd6d188e72f457 /cloudinit/net/netplan.py
parent9f159f3a55a7bba7868e03d9cccd898678381f03 (diff)
parent8caa3bcf8f2c5b3a448b9d892d4cf53ed8db9be9 (diff)
downloadvyos-cloud-init-cf3eaed2e01062f9b5d47042d7a76b092970e0cf.tar.gz
vyos-cloud-init-cf3eaed2e01062f9b5d47042d7a76b092970e0cf.zip
merge from master at 18.2
Diffstat (limited to 'cloudinit/net/netplan.py')
-rw-r--r--cloudinit/net/netplan.py35
1 files changed, 14 insertions, 21 deletions
diff --git a/cloudinit/net/netplan.py b/cloudinit/net/netplan.py
index d3788af8..63443484 100644
--- a/cloudinit/net/netplan.py
+++ b/cloudinit/net/netplan.py
@@ -311,12 +311,12 @@ class Renderer(renderer.Renderer):
if newname is None:
continue
br_config.update({newname: value})
- if newname == 'path-cost':
- # <interface> <cost> -> <interface>: int(<cost>)
+ if newname in ['path-cost', 'port-priority']:
+ # <interface> <value> -> <interface>: int(<value>)
newvalue = {}
- for costval in value:
- (port, cost) = costval.split()
- newvalue[port] = int(cost)
+ for val in value:
+ (port, portval) = val.split()
+ newvalue[port] = int(portval)
br_config.update({newname: newvalue})
if len(br_config) > 0:
@@ -336,22 +336,15 @@ class Renderer(renderer.Renderer):
_extract_addresses(ifcfg, vlan)
vlans.update({ifname: vlan})
- # inject global nameserver values under each physical interface
- if nameservers:
- for _eth, cfg in ethernets.items():
- nscfg = cfg.get('nameservers', {})
- addresses = nscfg.get('addresses', [])
- addresses += nameservers
- nscfg.update({'addresses': addresses})
- cfg.update({'nameservers': nscfg})
-
- if searchdomains:
- for _eth, cfg in ethernets.items():
- nscfg = cfg.get('nameservers', {})
- search = nscfg.get('search', [])
- search += searchdomains
- nscfg.update({'search': search})
- cfg.update({'nameservers': nscfg})
+ # inject global nameserver values under each all interface which
+ # has addresses and do not already have a DNS configuration
+ if nameservers or searchdomains:
+ nscfg = {'addresses': nameservers, 'search': searchdomains}
+ for section in [ethernets, wifis, bonds, bridges, vlans]:
+ for _name, cfg in section.items():
+ if 'nameservers' in cfg or 'addresses' not in cfg:
+ continue
+ cfg.update({'nameservers': nscfg})
# workaround yaml dictionary key sorting when dumping
def _render_section(name, section):