From 178564dccd07b9267b627b3969bde8d3a0045857 Mon Sep 17 00:00:00 2001 From: Alexey Date: Tue, 17 Aug 2021 21:15:17 +0300 Subject: [PATCH] allow vhost0 to pass list of members - in case of L3MH Contrail feature for kernel mode BIND_INT might be a list Change-Id: I2c44d86822b7bf74a10e7e7e81abcb22b5f639ae --- os_net_config/impl_ifcfg.py | 6 ++---- os_net_config/schema.yaml | 1 - os_net_config/tests/test_impl_ifcfg.py | 23 +++++++++++++++++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/os_net_config/impl_ifcfg.py b/os_net_config/impl_ifcfg.py index fe953b92..c0797fdd 100644 --- a/os_net_config/impl_ifcfg.py +++ b/os_net_config/impl_ifcfg.py @@ -1070,13 +1070,11 @@ class IfcfgNetConfig(os_net_config.NetConfig): """ logger.info('adding contrail_vrouter interface: %s' % contrail_vrouter.name) - # Contrail vrouter will have the only member (of type interface, - # vlan or linux_bond) - ifname = contrail_vrouter.members[0].name + ifnames = ",".join([m.name for m in contrail_vrouter.members]) data = self._add_common(contrail_vrouter) data += "DEVICETYPE=vhost\n" data += "TYPE=kernel_mode\n" - data += "BIND_INT=%s\n" % ifname + data += "BIND_INT=%s\n" % ifnames logger.debug('contrail data: %s' % data) self.interface_data[contrail_vrouter.name] = data if contrail_vrouter.routes: diff --git a/os_net_config/schema.yaml b/os_net_config/schema.yaml index 4b3ad2b6..9f03b304 100644 --- a/os_net_config/schema.yaml +++ b/os_net_config/schema.yaml @@ -988,7 +988,6 @@ definitions: - $ref: "#/definitions/vlan" - $ref: "#/definitions/linux_bond" minItems: 1 - maxItems: 1 # common options: use_dhcp: $ref: "#/definitions/bool_or_param" diff --git a/os_net_config/tests/test_impl_ifcfg.py b/os_net_config/tests/test_impl_ifcfg.py index 04c19912..56892719 100644 --- a/os_net_config/tests/test_impl_ifcfg.py +++ b/os_net_config/tests/test_impl_ifcfg.py @@ -537,6 +537,18 @@ TYPE=kernel_mode BIND_INT=em3 """ +_CONTRAIL_VROUTER_IFACE_L3MH = """# This file is autogenerated by os-net-config +DEVICE=vhost0 +ONBOOT=yes +HOTPLUG=no +NM_CONTROLLED=no +PEERDNS=no +BOOTPROTO=none +DEVICETYPE=vhost +TYPE=kernel_mode +BIND_INT=em3,em4 +""" + _CONTRAIL_VROUTER_VLAN_IFACE = """# This file is autogenerated by os-net-config DEVICE=vhost0 ONBOOT=yes @@ -1045,6 +1057,17 @@ class TestIfcfgNetConfig(base.TestCase): self.provider.interface_data['vhost0']) self.assertEqual('', self.get_route_config('vhost0')) + def test_add_contrail_vrouter_l3mh(self): + interface1 = objects.Interface('em3') + interface2 = objects.Interface('em4') + cvi = objects.ContrailVrouter('vhost0', + members=[interface1, interface2],) + self.provider.add_contrail_vrouter(cvi) + self.assertEqual( + _CONTRAIL_VROUTER_IFACE_L3MH, + self.provider.interface_data['vhost0']) + self.assertEqual('', self.get_route_config('vhost0')) + def test_add_contrail_vrouter_vlan(self): addresses = [objects.Address('10.0.0.30/24')] interface1 = objects.Interface('vlan100')