diff options
| -rw-r--r-- | cloudinit/net/netplan.py | 14 | ||||
| -rw-r--r-- | cloudinit/net/network_state.py | 4 | ||||
| -rw-r--r-- | tests/unittests/test_distros/test_netconfig.py | 2 | ||||
| -rw-r--r-- | tests/unittests/test_net.py | 2 | 
4 files changed, 12 insertions, 10 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 diff --git a/tests/unittests/test_distros/test_netconfig.py b/tests/unittests/test_distros/test_netconfig.py index fd7c051f..be9a8318 100644 --- a/tests/unittests/test_distros/test_netconfig.py +++ b/tests/unittests/test_distros/test_netconfig.py @@ -127,7 +127,7 @@ network:      ethernets:          eth0:              addresses: -            - 192.168.1.5/255.255.255.0 +            - 192.168.1.5/24              gateway4: 192.168.1.254          eth1:              dhcp4: true diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py index 5169821a..167ed01e 100644 --- a/tests/unittests/test_net.py +++ b/tests/unittests/test_net.py @@ -406,7 +406,7 @@ NETWORK_CONFIGS = {                              - sach.maas                              - wark.maas                          routes: -                        -   to: 0.0.0.0/0.0.0.0 +                        -   to: 0.0.0.0/0                              via: 65.61.151.37                          set-name: eth99          """).rstrip(' '),  | 
