diff options
Diffstat (limited to 'os_net_config/tests/test_impl_ifcfg.py')
-rw-r--r-- | os_net_config/tests/test_impl_ifcfg.py | 140 |
1 files changed, 139 insertions, 1 deletions
diff --git a/os_net_config/tests/test_impl_ifcfg.py b/os_net_config/tests/test_impl_ifcfg.py index 71ad9ae..9b24717 100644 --- a/os_net_config/tests/test_impl_ifcfg.py +++ b/os_net_config/tests/test_impl_ifcfg.py @@ -60,12 +60,33 @@ BOOTPROTO=none _V4_IFCFG_MAPPED = _V4_IFCFG.replace('em1', 'nic1') + "HWADDR=a1:b2:c3:d4:e5\n" + +_BASE_IB_IFCFG = """# This file is autogenerated by os-net-config +DEVICE=ib0 +ONBOOT=yes +HOTPLUG=no +NM_CONTROLLED=no +PEERDNS=no +TYPE=Infiniband +""" + +_V4_IB_IFCFG = _BASE_IB_IFCFG + """BOOTPROTO=static +IPADDR=192.168.1.2 +NETMASK=255.255.255.0 +""" + _V4_IFCFG_MULTIPLE = _V4_IFCFG + """IPADDR1=192.168.1.3 NETMASK1=255.255.255.255 IPADDR2=10.0.0.2 NETMASK2=255.0.0.0 """ +_IB_V4_IFCFG_MULTIPLE = _V4_IB_IFCFG + """IPADDR1=192.168.1.3 +NETMASK1=255.255.255.255 +IPADDR2=10.0.0.2 +NETMASK2=255.0.0.0 +""" + _V6_IFCFG = _BASE_IFCFG + """IPV6INIT=yes IPV6_AUTOCONF=no IPV6ADDR=2001:abc:a::/64 @@ -223,11 +244,24 @@ BOOTPROTO=dhcp """ +_LINUX_TEAM_DHCP = """# This file is autogenerated by os-net-config +DEVICE=team0 +ONBOOT=yes +HOTPLUG=no +NM_CONTROLLED=no +BOOTPROTO=dhcp +DEVICETYPE=Team +""" + + _LINUX_BOND_INTERFACE = _BASE_IFCFG + """MASTER=bond0 SLAVE=yes BOOTPROTO=none """ +_LINUX_TEAM_INTERFACE = _BASE_IFCFG + """TEAM_MASTER=team0 +BOOTPROTO=none +""" _IVS_UPLINK = """# This file is autogenerated by os-net-config DEVICE=em1 @@ -258,6 +292,34 @@ NETMASK=255.255.255.0 _IVS_CONFIG = ('DAEMON_ARGS=\"--hitless --certificate /etc/ivs ' '--inband-vlan 4092 -u em1 --internal-port=storage5\"') +_NFVSWITCH_INTERFACE = """# This file is autogenerated by os-net-config +DEVICE=em1 +ONBOOT=yes +HOTPLUG=no +NM_CONTROLLED=no +PEERDNS=no +DEVICETYPE=nfvswitch +NFVSWITCH_BRIDGE=nfvswitch +BOOTPROTO=none +""" + +_NFVSWITCH_INTERNAL = """# This file is autogenerated by os-net-config +DEVICE=storage5 +ONBOOT=yes +HOTPLUG=no +NM_CONTROLLED=no +PEERDNS=no +TYPE=NFVSWITCHIntPort +DEVICETYPE=nfvswitch +NFVSWITCH_BRIDGE=nfvswitch +MTU=1500 +BOOTPROTO=static +IPADDR=172.16.2.7 +NETMASK=255.255.255.0 +""" + +_NFVSWITCH_CONFIG = ('SETUP_ARGS=\" -c 2,3,4,5 -u em1 -m storage5\"') + _OVS_IFCFG_PATCH_PORT = """# This file is autogenerated by os-net-config DEVICE=br-pub-patch ONBOOT=yes @@ -270,6 +332,17 @@ OVS_BRIDGE=br-ex OVS_PATCH_PEER=br-ex-patch """ +_LINUX_TEAM_PRIMARY_IFACE = """# This file is autogenerated by os-net-config +DEVICE=em1 +ONBOOT=yes +HOTPLUG=no +NM_CONTROLLED=no +PEERDNS=no +TEAM_MASTER=team1 +TEAM_PORT_CONFIG='{"prio": 100}' +BOOTPROTO=none +""" + class TestIfcfgNetConfig(base.TestCase): @@ -290,6 +363,9 @@ class TestIfcfgNetConfig(base.TestCase): def get_linux_bond_config(self, name='bond0'): return self.provider.linuxbond_data[name] + def get_linux_team_config(self, name='team0'): + return self.provider.linuxteam_data[name] + def get_route_config(self, name='em1'): return self.provider.route_data.get(name, '') @@ -353,7 +429,7 @@ class TestIfcfgNetConfig(base.TestCase): self.stubs.Set(utils, 'interface_mac', test_interface_mac) nic_mapping = {'nic1': 'em1'} - self.stubbed_numbered_nics = nic_mapping + self.stubbed_mapped_nics = nic_mapping v4_addr = objects.Address('192.168.1.2/24') interface = objects.Interface('nic1', addresses=[v4_addr], nic_mapping=nic_mapping, @@ -505,6 +581,35 @@ class TestIfcfgNetConfig(base.TestCase): data = self.provider.generate_ivs_config(['em1'], ['storage5']) self.assertEqual(_IVS_CONFIG, data) + def test_network_nfvswitch_with_interfaces_and_internal_interfaces(self): + interface = objects.Interface('em1') + v4_addr = objects.Address('172.16.2.7/24') + nfvswitch_internal = objects.NfvswitchInternal(vlan_id=5, + name='storage', + addresses=[v4_addr]) + iface_name = nfvswitch_internal.name + bridge = objects.NfvswitchBridge(members=[interface, + nfvswitch_internal], + cpus="2,3,4,5") + self.provider.add_interface(interface) + self.provider.add_nfvswitch_internal(nfvswitch_internal) + self.provider.add_nfvswitch_bridge(bridge) + self.assertEqual(_NFVSWITCH_INTERFACE, self.get_interface_config()) + self.assertEqual(_NFVSWITCH_INTERNAL, + self.provider.nfvswitch_intiface_data[iface_name]) + data = self.provider.generate_nfvswitch_config(['em1'], ['storage5']) + self.assertEqual(_NFVSWITCH_CONFIG, data) + + def test_add_ib_interface_with_v4_multiple(self): + addresses = [objects.Address('192.168.1.2/24'), + objects.Address('192.168.1.3/32'), + objects.Address('10.0.0.2/8')] + ib_interface = objects.IbInterface('ib0', addresses=addresses) + self.provider.add_interface(ib_interface) + self.assertEqual(_IB_V4_IFCFG_MULTIPLE, + self.get_interface_config('ib0')) + self.assertEqual('', self.get_route_config()) + def test_add_vlan(self): vlan = objects.Vlan('em1', 5) self.provider.add_vlan(vlan) @@ -573,6 +678,19 @@ BOOTPROTO=none self.assertEqual(_LINUX_BOND_INTERFACE, self.get_interface_config('em1')) + def test_linux_team(self): + interface1 = objects.Interface('em1') + interface2 = objects.Interface('em2') + team = objects.LinuxTeam('team0', use_dhcp=True, + members=[interface1, interface2]) + self.provider.add_linux_team(team) + self.provider.add_interface(interface1) + self.provider.add_interface(interface2) + self.assertEqual(_LINUX_TEAM_DHCP, + self.get_linux_team_config('team0')) + self.assertEqual(_LINUX_TEAM_INTERFACE, + self.get_interface_config('em1')) + def test_interface_defroute(self): interface1 = objects.Interface('em1') interface2 = objects.Interface('em2', defroute=False) @@ -775,6 +893,26 @@ class TestIfcfgNetConfigApply(base.TestCase): self.provider.add_interface(interface) self.provider.add_bridge(bridge) self.provider.apply() + self.assertIn('em1', self.ifup_interface_names) + + # test infiniband interfaces act as proper bridge members + ib_interface = objects.IbInterface('ib0') + bridge = objects.OvsBridge('br-ctlplane', use_dhcp=True, + members=[ib_interface]) + self.provider.add_interface(ib_interface) + self.provider.add_bridge(bridge) + self.provider.apply() + self.assertIn('ib0', self.ifup_interface_names) + self.assertIn('br-ctlplane', self.ifup_interface_names) + + # changing the bridge should restart the interface too + self.ifup_interface_names = [] + bridge = objects.OvsBridge('br-ctlplane', use_dhcp=False, + members=[ib_interface]) + self.provider.add_interface(interface) + self.provider.add_bridge(bridge) + self.provider.apply() + self.assertIn('ib0', self.ifup_interface_names) # setup and apply a bond on a bridge self.ifup_interface_names = [] |