Petr Horáček has uploaded a new change for review. Change subject: net: canonicalize IPv4 prefix to netmask ......................................................................
net: canonicalize IPv4 prefix to netmask In order to simplify static IP handling and fix OVS switch, this patch introduces canonicalization of passed IPv4 prefix into netmask. It also adds missing 'prefix' to setupNetworks documentation. Change-Id: I344eef120b4c19f90d4dd20c7857bb73ab259e9b Bug-Url: https://bugzilla.redhat.com/1374194 Signed-off-by: Petr Horáček <phora...@redhat.com> --- M lib/vdsm/network/api.py M lib/vdsm/network/canonicalize.py M tests/network/func_static_ip_test.py M tests/network/netfunctestlib.py 4 files changed, 23 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/94/64494/1 diff --git a/lib/vdsm/network/api.py b/lib/vdsm/network/api.py index 9350efe..9eae392 100644 --- a/lib/vdsm/network/api.py +++ b/lib/vdsm/network/api.py @@ -209,7 +209,7 @@ bonding="<name>" | nic="<name>" (bonding and nics are mutually exclusive) ipaddr="<ipv4>" - netmask="<ipv4>" + netmask="<ipv4>" | prefix=<prefixlen> gateway="<ipv4>" bootproto="..." ipv6addr="<ipv6>[/<prefixlen>]" diff --git a/lib/vdsm/network/canonicalize.py b/lib/vdsm/network/canonicalize.py index b0bc983..655db7b 100644 --- a/lib/vdsm/network/canonicalize.py +++ b/lib/vdsm/network/canonicalize.py @@ -22,6 +22,7 @@ import six from .netinfo import bridges, mtus, bonding, dns +from .netinfo.addresses import prefix2netmask from vdsm import utils from .errors import ConfigNetworkError @@ -47,6 +48,7 @@ _canonicalize_switch_type_net(attrs) _canonicalize_ip_default_route(attrs) _canonicalize_nameservers(attrs) + _canonicalize_netmask(attrs) def canonicalize_bondings(bonds): @@ -138,3 +140,9 @@ data['nameservers'] = dns.get_host_nameservers() else: data['nameservers'] = [] + + +def _canonicalize_netmask(data): + prefix = data.pop('prefix', None) + if prefix: + data['netmask'] = prefix2netmask(int(prefix)) diff --git a/tests/network/func_static_ip_test.py b/tests/network/func_static_ip_test.py index 529e01e..d16c56e 100644 --- a/tests/network/func_static_ip_test.py +++ b/tests/network/func_static_ip_test.py @@ -122,6 +122,17 @@ with self.setupNetworks(netcreate, bondcreate, NOCHK): self.assertNetworkIp(NETWORK_NAME, netcreate[NETWORK_NAME]) + def test_add_net_with_prefix(self): + with dummy_device() as nic: + network_attrs = {'nic': nic, + 'ipaddr': IPv4_ADDRESS, + 'prefix': IPv4_PREFIX_LEN, + 'switch': self.switch} + netcreate = {NETWORK_NAME: network_attrs} + + with self.setupNetworks(netcreate, {}, NOCHK): + self.assertNetworkIp(NETWORK_NAME, netcreate[NETWORK_NAME]) + @attr(type='functional', switch='legacy') class NetworkStaticIpBasicLegacyTest(NetworkStaticIpBasicTemplate): diff --git a/tests/network/netfunctestlib.py b/tests/network/netfunctestlib.py index 2d238aa..cdf8d78 100644 --- a/tests/network/netfunctestlib.py +++ b/tests/network/netfunctestlib.py @@ -32,6 +32,7 @@ from vdsm.network.ip import dhclient from vdsm.network.ip.address import ipv6_supported from vdsm.network.link.iface import is_oper_up +from vdsm.network.netinfo.addresses import prefix2netmask from testlib import VdsmTestCase @@ -289,7 +290,8 @@ def assertStaticIPv4(self, netattrs, ipinfo): requires_ipaddress() address = netattrs['ipaddr'] - netmask = netattrs['netmask'] + netmask = (netattrs.get('netmask') or + prefix2netmask(int(netattrs.get('prefix')))) self.assertEqual(address, ipinfo['addr']) self.assertEqual(netmask, ipinfo['netmask']) ipv4 = ipaddress.IPv4Interface( -- To view, visit https://gerrit.ovirt.org/64494 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I344eef120b4c19f90d4dd20c7857bb73ab259e9b Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Petr Horáček <phora...@redhat.com> _______________________________________________ vdsm-patches mailing list -- vdsm-patches@lists.fedorahosted.org To unsubscribe send an email to vdsm-patches-le...@lists.fedorahosted.org