def test_add_interface_with_v6_multiple(self): v6_addresses = [objects.Address('fe80::2677:3ff:fe7d:4c'), objects.Address('2001:abcd::2/64')] interface = self._default_interface(v6_addresses) self.provider.add_interface(interface) self.assertEqual(_V6_IFACE_STATIC_IP_MULTIPLE, self.get_interface_config())
def test_add_interface_with_both_v4_and_v6(self): v4_addr = objects.Address('192.168.1.2/24') v6_addr = objects.Address('fe80::2677:3ff:fe7d:4c') interface = self._default_interface([v4_addr, v6_addr]) self.provider.add_interface(interface) self.assertEqual(_V4_IFACE_STATIC_IP + _V6_IFACE_STATIC_IP, self.get_interface_config())
def test_add_interface_with_v4_multiple(self): v4_addresses = [objects.Address('192.168.1.2/24'), objects.Address('10.0.0.2/8')] interface = self._default_interface(v4_addresses) self.provider.add_interface(interface) self.assertEqual(_V4_IFACE_STATIC_IP_MULTIPLE, self.get_interface_config())
def test_add_interface_with_v6_multiple(self): addresses = [ objects.Address('2001:abc:a::/64'), objects.Address('2001:abc:b::1/64'), objects.Address('2001:abc:c::2/96') ] interface = objects.Interface('em1', addresses=addresses) self.provider.add_interface(interface) self.assertEqual(_V6_IFCFG_MULTIPLE, self.get_interface_config())
def test_add_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') ] interface = objects.Interface('em1', addresses=addresses) self.provider.add_interface(interface) self.assertEqual(_V4_IFCFG_MULTIPLE, self.get_interface_config()) self.assertEqual('', self.get_route_config())
def test_interface_failure_multiple(self): self.stubs.Set(processutils, 'execute', self._failed_execute) v4_addr = objects.Address('192.168.1.2/24') interface = objects.Interface('em1', addresses=[v4_addr]) v4_addr2 = objects.Address('192.168.2.2/24') interface2 = objects.Interface('em2', addresses=[v4_addr2]) self.provider.add_interface(interface) self.provider.add_interface(interface2) self.assertRaises(os_net_config.ConfigurationError, self.provider.apply) # Even though the first one failed, we should have attempted both self.assertEqual(2, len(self.provider.errors))
def test_network_with_ipv6_routes(self): route1 = objects.Route('192.168.1.1', default=True) route2 = objects.Route('192.168.1.1', '172.19.0.0/24') route3 = objects.Route('2001:db8::1', default=True) route4 = objects.Route('fd00:fd00:2000::1', '2001:db8:dead:beef:cafe::/56') v4_addr = objects.Address('192.168.1.2/24') v6_addr = objects.Address('2001:abc:a::/64') interface = objects.Interface('em1', addresses=[v4_addr, v6_addr], routes=[route1, route2, route3, route4]) self.provider.add_interface(interface) self.assertEqual(_V4_V6_IFCFG, self.get_interface_config()) self.assertEqual(_ROUTES_V6, self.get_route6_config())
def test_network_with_routes(self): route1 = objects.Route('192.168.1.1', '172.19.0.0/24') v4_addr = objects.Address('192.168.1.2/24') interface = self._default_interface([v4_addr], [route1]) self.provider.addInterface(interface) self.assertEqual(_V4_IFACE_STATIC_IP, self.get_interface_config()) self.assertEqual(_RTS, self.get_route_config())
def test_interface_failure(self): self.stubs.Set(processutils, 'execute', self._failed_execute) v4_addr = objects.Address('192.168.1.2/24') interface = objects.Interface('em1', addresses=[v4_addr]) self.provider.add_interface(interface) self.assertRaises(os_net_config.ConfigurationError, self.provider.apply) self.assertEqual(1, len(self.provider.errors))
def test_network_with_routes(self): route1 = objects.Route('192.168.1.1', default=True) route2 = objects.Route('192.168.1.1', '172.19.0.0/24') v4_addr = objects.Address('192.168.1.2/24') interface = objects.Interface('em1', addresses=[v4_addr], routes=[route1, route2]) self.provider.add_interface(interface) self.assertEqual(_V4_IFCFG, self.get_interface_config()) self.assertEqual(_ROUTES, self.get_route_config())
def test_network_linux_bridge_static(self): v4_addr = objects.Address('192.168.1.2/24') interface = objects.Interface('em1') bridge = objects.LinuxBridge('br-ctlplane', members=[interface], addresses=[v4_addr]) self.provider.add_interface(interface) self.provider.add_bridge(bridge) self.assertEqual(_LINUX_BRIDGE_IFCFG, self.get_interface_config()) self.assertEqual(_LINUX_BRIDGE_STATIC, self.provider.bridge_data['br-ctlplane'])
def test_network_apply(self): route = objects.Route('192.168.1.1', '172.19.0.0/24') v4_addr = objects.Address('192.168.1.2/24') interface = objects.Interface('eth0', addresses=[v4_addr], routes=[route]) self.provider.addInterface(interface) self.provider.apply() iface_data = utils.get_file_data(self.temp_config_file.name) self.assertEqual((_V4_IFACE_STATIC_IP + _RTS), iface_data)
def test_apply_noactivate(self): route1 = objects.Route('192.168.1.1', '172.19.0.0/24') route2 = objects.Route('192.168.1.5', '172.20.0.0/24', route_options="metric 100") v4_addr = objects.Address('192.168.1.2/24') interface = objects.Interface('eth0', addresses=[v4_addr], routes=[route1, route2]) self.provider.add_interface(interface) self.provider.apply(activate=False) iface_data = utils.get_file_data(self.temp_config_file.name) self.assertEqual((_V4_IFACE_STATIC_IP + _RTS), iface_data) self.assertEqual([], self.ifup_interface_names)
def test_dhclient_stop_on_iface_activate(self): self.stop_dhclient_interfaces = [] v4_addr = objects.Address('192.168.1.2/24') interface = objects.Interface('em1', addresses=[v4_addr]) interface2 = objects.Interface('em2', use_dhcp=True) interface3 = objects.Interface('em3', use_dhcp=False) self.provider.add_interface(interface) self.provider.add_interface(interface2) self.provider.add_interface(interface3) self.provider.apply() # stop dhclient on em1 due to static IP and em3 due to no IP self.assertIn('em1', self.stop_dhclient_interfaces) self.assertIn('em3', self.stop_dhclient_interfaces) self.assertNotIn('em2', self.stop_dhclient_interfaces)
def test_network_apply(self): route1 = objects.Route('192.168.1.1', default=True) route2 = objects.Route('192.168.1.1', '172.19.0.0/24') v4_addr = objects.Address('192.168.1.2/24') interface = objects.Interface('em1', addresses=[v4_addr], routes=[route1, route2]) self.provider.add_interface(interface) self.provider.apply() ifcfg_data = utils.get_file_data(self.temp_ifcfg_file.name) self.assertEqual(_V4_IFCFG, ifcfg_data) route_data = utils.get_file_data(self.temp_route_file.name) self.assertEqual(_ROUTES, route_data)
def test_network_ivs_with_uplink_and_interface(self): interface = objects.Interface('em1') v4_addr = objects.Address('172.16.2.7/24') ivs_interface = objects.IvsInterface(vlan_id=5, name='storage', addresses=[v4_addr]) bridge = objects.IvsBridge(members=[interface, ivs_interface]) self.provider.add_interface(interface) self.provider.add_ivs_interface(ivs_interface) self.provider.add_bridge(bridge) self.assertEqual(_IVS_UPLINK, self.get_interface_config()) self.assertEqual(_IVS_INTERFACE, self.provider.ivsinterface_data[ivs_interface.name]) data = self.provider.generate_ivs_config(['em1'], ['storage5']) self.assertEqual(_IVS_CONFIG, data)
def test_network_ovs_bridge_with_tunnel(self): interface = objects.OvsTunnel('tun0') interface.type = 'ovs_tunnel' interface.tunnel_type = 'gre' interface.ovs_options = ['options:remote_ip=192.168.1.1'] interface.bridge_name = 'br-ctlplane' self.provider.add_interface(interface) v4_addr = objects.Address('192.168.1.2/24') bridge = objects.OvsBridge('br-ctlplane', members=[interface], addresses=[v4_addr]) self.provider.add_bridge(bridge) self.provider.add_interface(interface) self.assertEqual(_OVS_IFCFG_TUNNEL, self.get_interface_config('tun0')) self.assertEqual(_OVS_BRIDGE_STATIC, self.provider.bridge_data['br-ctlplane'])
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], options="-c 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_interface_map_persisted(self): def test_interface_mac(name): macs = {'em1': 'a1:b2:c3:d4:e5'} return macs[name] self.stubs.Set(utils, 'interface_mac', test_interface_mac) nic_mapping = {'nic1': 'em1'} self.stubbed_numbered_nics = nic_mapping v4_addr = objects.Address('192.168.1.2/24') interface = objects.Interface('nic1', addresses=[v4_addr], nic_mapping=nic_mapping, persist_mapping=True) self.assertEqual('a1:b2:c3:d4:e5', interface.hwaddr) self.provider.add_interface(interface) self.assertEqual(_V4_IFCFG_MAPPED, self.get_interface_config('nic1')) self.assertEqual('', self.get_route_config('nic1'))
def test_interface_addresses(self): v4_addr = objects.Address('192.168.1.1/24') v6_addr = objects.Address('2001:abc:a::/64') interface = objects.Interface('foo', addresses=[v4_addr, v6_addr]) self.assertEqual("192.168.1.1", interface.v4_addresses()[0].ip) self.assertEqual("2001:abc:a::", interface.v6_addresses()[0].ip)
def test_add_interface_with_v4(self): v4_addr = objects.Address('192.168.1.2/24') interface = self._default_interface([v4_addr]) self.provider.add_interface(interface) self.assertEqual(_V4_IFACE_STATIC_IP, self.get_interface_config())
def test_add_interface_with_hotplug(self): v4_addr = objects.Address('192.168.1.2/24') interface = self._default_interface(addr=[v4_addr], hotplug=True) self.provider.add_interface(interface) self.assertEqual(_IFACE_HOTPLUG, self.get_interface_config())
def test_add_interface_with_v6(self): v6_addr = objects.Address('fe80::2677:3ff:fe7d:4c') interface = self._default_interface([v6_addr]) self.provider.add_interface(interface) self.assertEqual(_V6_IFACE_STATIC_IP, self.get_interface_config())
def test_ipv4_address(self): address = objects.Address('192.168.1.1/24') self.assertEqual("192.168.1.1", address.ip) self.assertEqual("255.255.255.0", address.netmask) self.assertEqual(4, address.version)
def test_add_interface_with_v6(self): v6_addr = objects.Address('2001:abc:a::/64') interface = objects.Interface('em1', addresses=[v6_addr]) self.provider.add_interface(interface) self.assertEqual(_V6_IFCFG, self.get_interface_config())
def test_ipv6_address(self): address = objects.Address('2001:abc:a::/64') self.assertEqual("2001:abc:a::", address.ip) self.assertEqual("ffff:ffff:ffff:ffff::", address.netmask) self.assertEqual(6, address.version)
def test_add_interface_with_v4(self): v4_addr = objects.Address('192.168.1.2/24') interface = objects.Interface('em1', addresses=[v4_addr]) self.provider.add_interface(interface) self.assertEqual(_V4_IFCFG, self.get_interface_config()) self.assertEqual('', self.get_route_config())