summaryrefslogtreecommitdiff
path: root/cloudinit
diff options
context:
space:
mode:
authorDimitri John Ledkov <xnox@ubuntu.com>2017-05-16 14:18:25 +0100
committerScott Moser <smoser@brickies.net>2017-05-26 14:36:38 -0400
commit16a7302f6acb69adb0aee75eaf12392fa3688853 (patch)
treeec808d6cab9b97ef1de3d29ef91ad78f2537cec9 /cloudinit
parent1815c6d801933c47a01f1a94a8e689824f6797b4 (diff)
downloadvyos-cloud-init-16a7302f6acb69adb0aee75eaf12392fa3688853.tar.gz
vyos-cloud-init-16a7302f6acb69adb0aee75eaf12392fa3688853.zip
net: fix reading and rendering addresses in cidr format.
Input (specifically OpenStack) that had: "ip_address" : "104.130.20.155", "netmask" : "255.255.255.0" Was being rendered to netplan as '104.130.20.155/255.255.255.0'. That is now fixed to '104.130.20.155/24' Also fixed is reading of a route that had a network prefix integer in the 'netmask' rather than a netmask. LP: #1689346 LP: #1684349
Diffstat (limited to 'cloudinit')
-rw-r--r--cloudinit/net/netplan.py14
-rw-r--r--cloudinit/net/network_state.py4
2 files changed, 10 insertions, 8 deletions
diff --git a/cloudinit/net/netplan.py b/cloudinit/net/netplan.py
index d7ddf0c3..a715f3b0 100644
--- a/cloudinit/net/netplan.py
+++ b/cloudinit/net/netplan.py
@@ -4,7 +4,7 @@ import copy
import os
from . import renderer
-from .network_state import subnet_is_ipv6
+from .network_state import mask2cidr, subnet_is_ipv6
from cloudinit import log as logging
from cloudinit import util
@@ -118,9 +118,10 @@ def _extract_addresses(config, entry):
sn_type += '4'
entry.update({sn_type: True})
elif sn_type in ['static']:
- addr = "%s" % subnet.get('address')
- if 'netmask' in subnet:
- addr += "/%s" % subnet.get('netmask')
+ addr = '%s' % subnet.get('address')
+ netmask = subnet.get('netmask')
+ if netmask and '/' not in addr:
+ addr += '/%s' % mask2cidr(netmask)
if 'gateway' in subnet and subnet.get('gateway'):
gateway = subnet.get('gateway')
if ":" in gateway:
@@ -137,8 +138,9 @@ def _extract_addresses(config, entry):
mtukey += '6'
entry.update({mtukey: subnet.get('mtu')})
for route in subnet.get('routes', []):
- to_net = "%s/%s" % (route.get('network'),
- route.get('netmask'))
+ network = route.get('network')
+ netmask = route.get('netmask')
+ to_net = '%s/%s' % (network, mask2cidr(netmask))
route = {
'via': route.get('gateway'),
'to': to_net,
diff --git a/cloudinit/net/network_state.py b/cloudinit/net/network_state.py
index db3c3579..9e9c05a0 100644
--- a/cloudinit/net/network_state.py
+++ b/cloudinit/net/network_state.py
@@ -734,9 +734,9 @@ def ipv6mask2cidr(mask):
def mask2cidr(mask):
- if ':' in mask:
+ if ':' in str(mask):
return ipv6mask2cidr(mask)
- elif '.' in mask:
+ elif '.' in str(mask):
return ipv4mask2cidr(mask)
else:
return mask