Merge "Fix handling of SR-IOV PF routes"

This commit is contained in:
Zuul 2019-06-18 23:40:52 +00:00 committed by Gerrit Code Review
commit 65907fd564
2 changed files with 38 additions and 0 deletions

View File

@ -940,6 +940,10 @@ class IfcfgNetConfig(os_net_config.NetConfig):
self.noop, promisc=sriov_pf.promisc,
link_mode=sriov_pf.link_mode)
self.interface_data[sriov_pf.name] = data
if sriov_pf.routes:
self._add_routes(sriov_pf.name, sriov_pf.routes)
if sriov_pf.rules:
self._add_rules(sriov_pf.name, sriov_pf.rules)
def add_sriov_vf(self, sriov_vf):
"""Add a SriovVF object to the net config object

View File

@ -197,6 +197,11 @@ _ROUTES = """default via 192.168.1.1 dev em1 metric 10
172.20.0.0/24 via 192.168.1.5 dev em1 metric 100
"""
_ROUTES_PF = """default via 192.168.1.1 dev enp3s0f0 metric 10
172.19.0.0/24 via 192.168.1.1 dev enp3s0f0
172.20.0.0/24 via 192.168.1.5 dev enp3s0f0 metric 100
"""
_ROUTES_WITH_TABLES = """172.19.0.0/24 via 192.168.1.1 dev em1 table table1
172.20.0.0/24 via 192.168.1.1 dev em1 table 201
172.21.0.0/24 via 192.168.1.1 dev em1 table 200
@ -563,6 +568,17 @@ PEERDNS=no
BOOTPROTO=none
"""
_V4_SRIOV_PF_IFCFG = """# This file is autogenerated by os-net-config
DEVICE=enp3s0f0
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
PEERDNS=no
BOOTPROTO=static
IPADDR=192.168.1.2
NETMASK=255.255.255.0
"""
class TestIfcfgNetConfig(base.TestCase):
def setUp(self):
@ -1952,6 +1968,24 @@ class TestIfcfgNetConfigApply(base.TestCase):
route_data = utils.get_file_data(self.temp_route_file.name)
self.assertEqual(_ROUTES, route_data)
def test_sriov_pf_network_apply(self):
route1 = objects.Route('192.168.1.1', default=True,
route_options="metric 10")
route2 = objects.Route('192.168.1.1', '172.19.0.0/24')
route3 = objects.Route('192.168.1.5', '172.20.0.0/24',
route_options="metric 100")
v4_addr = objects.Address('192.168.1.2/24')
pf = objects.SriovPF('enp3s0f0', numvfs=10, addresses=[v4_addr],
promisc=False, routes=[route1, route2, route3])
self.provider.add_sriov_pf(pf)
self.provider.apply()
ifcfg_data = utils.get_file_data(self.temp_ifcfg_file.name)
self.assertEqual(_V4_SRIOV_PF_IFCFG, ifcfg_data)
route_data = utils.get_file_data(self.temp_route_file.name)
self.assertEqual(_ROUTES_PF, route_data)
def test_dhcp_ovs_bridge_network_apply(self):
interface = objects.Interface('em1')
bridge = objects.OvsBridge('br-ctlplane', use_dhcp=True,