def testStaticSourceRouting(self, bridged): """ Copied from networkTests.py, network changed to vlaned. """ with dummyIf(1) as nics: status, msg = self.setupNetworks( {NETWORK_NAME: {'nic': nics[0], 'bridged': bridged, 'ipaddr': IP_ADDRESS, 'netmask': IP_MASK, 'gateway': IP_GATEWAY, 'vlan': VLAN_ID}}, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) self.assertNetworkExists(NETWORK_NAME, bridged) deviceName = NETWORK_NAME if bridged else nics[0] ip_addr = self.vdsm_net.netinfo.networks[NETWORK_NAME]['addr'] self.assertSourceRoutingConfiguration(deviceName, ip_addr) status, msg = self.setupNetworks( {NETWORK_NAME: {'remove': True}}, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) # Assert that routes and rules don't exist source_route = _get_source_route(deviceName, ip_addr) for route in source_route._buildRoutes(): self.assertRouteDoesNotExist(route) for rule in source_route._buildRules(): self.assertRuleDoesNotExist(rule)
def testStaticSourceRouting(self, bridged): """ Copied from networkTests.py, network changed to vlaned. """ with dummyIf(1) as nics: status, msg = self.setupNetworks( { NETWORK_NAME: { 'nic': nics[0], 'bridged': bridged, 'ipaddr': IP_ADDRESS, 'netmask': IP_MASK, 'gateway': IP_GATEWAY, 'vlan': VLAN_ID } }, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) self.assertNetworkExists(NETWORK_NAME, bridged) deviceName = NETWORK_NAME if bridged else nics[0] ip_addr = self.vdsm_net.netinfo.networks[NETWORK_NAME]['addr'] self.assertSourceRoutingConfiguration(deviceName, ip_addr) status, msg = self.setupNetworks({NETWORK_NAME: { 'remove': True }}, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) # Assert that routes and rules don't exist source_route = _get_source_route(deviceName, ip_addr) for route in source_route._buildRoutes(): self.assertRouteDoesNotExist(route) for rule in source_route._buildRules(): self.assertRuleDoesNotExist(rule)
def testSetupNetworksAddDelDhcp(self, bridged, families): """Copied from networkTests.py, source_route checking changed from device_name to BRIDGE_NAME. """ def _assert_applied(network_name, requested, reported): self.assertNetworkExists(network_name) reported_network = reported.networks[network_name] if requested['bridged']: self.assertEqual(reported_network['cfg']['BOOTPROTO'], requested['bootproto']) reported_devices = reported.bridges device_name = network_name else: # CHANGED: always bridged pass self.assertIn(device_name, reported_devices) reported_device = reported_devices[device_name] requested_dhcpv4 = requested['bootproto'] == 'dhcp' self.assertEqual(reported_network['dhcpv4'], requested_dhcpv4) self.assertEqual(reported_network['dhcpv6'], requested['dhcpv6']) self.assertEqual(reported_device['cfg']['BOOTPROTO'], requested['bootproto']) self.assertEqual(reported_device['dhcpv4'], requested_dhcpv4) self.assertEqual(reported_device['dhcpv6'], requested['dhcpv6']) if requested_dhcpv4: self.assertEqual(reported_network['gateway'], IP_GATEWAY) # TODO: source routing not ready for IPv6 ip_addr = reported_network['addr'] self.assertSourceRoutingConfiguration(BRIDGE_NAME, # CHANGED ip_addr) return device_name, ip_addr return None, None with veth_pair() as (left, right): addrAdd(left, IP_ADDRESS, IP_CIDR) addrAdd(left, IPv6_ADDRESS, IPv6_CIDR, 6) linkSet(left, ['up']) with dnsmasqDhcp(left): dhcpv4 = 4 in families dhcpv6 = 6 in families bootproto = 'dhcp' if dhcpv4 else 'none' network = {NETWORK_NAME: {'nic': right, 'bridged': bridged, 'bootproto': bootproto, 'dhcpv6': dhcpv6, 'blockingdhcp': True}} try: status, msg = self.setupNetworks(network, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) device_name, ip_addr = _assert_applied( NETWORK_NAME, network[NETWORK_NAME], self.vdsm_net.netinfo) # Do not report DHCP from (typically still valid) leases network[NETWORK_NAME]['bootproto'] = 'none' network[NETWORK_NAME]['dhcpv6'] = False status, msg = self.setupNetworks(network, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) _assert_applied(NETWORK_NAME, network[NETWORK_NAME], self.vdsm_net.netinfo) network = {NETWORK_NAME: {'remove': True}} status, msg = self.setupNetworks(network, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) self.assertNetworkDoesntExist(NETWORK_NAME) # Assert that routes and rules don't exist if dhcpv4: source_route = _get_source_route(device_name, ip_addr) for route in source_route._buildRoutes(): self.assertRouteDoesNotExist(route) for rule in source_route._buildRules(): self.assertRuleDoesNotExist(rule) finally: dhcp.delete_dhclient_leases( NETWORK_NAME if bridged else right, dhcpv4, dhcpv6)
def testSetupNetworksAddDelDhcp(self, bridged, families): """ Copied from networkTests.py, source_route checking changed from device_name to BRIDGE_NAME. """ with veth.pair() as (left, right): veth.setIP(left, IP_ADDRESS, IP_CIDR) veth.setIP(left, IPv6_ADDRESS, IPv6_CIDR, 6) veth.setLinkUp(left) with dnsmasqDhcp(left): dhcpv4 = 4 in families dhcpv6 = 6 in families bootproto = 'dhcp' if dhcpv4 else 'none' network = {NETWORK_NAME: {'nic': right, 'bridged': bridged, 'bootproto': bootproto, 'dhcpv6': dhcpv6, 'blockingdhcp': True}} try: status, msg = self.setupNetworks(network, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) self.assertNetworkExists(NETWORK_NAME) test_net = self.vdsm_net.netinfo.networks[NETWORK_NAME] self.assertEqual(test_net['dhcpv4'], dhcpv4) self.assertEqual(test_net['dhcpv6'], dhcpv6) if bridged: self.assertEqual(test_net['cfg']['BOOTPROTO'], bootproto) devs = self.vdsm_net.netinfo.bridges device_name = NETWORK_NAME else: devs = self.vdsm_net.netinfo.nics device_name = right self.assertIn(device_name, devs) net_attrs = devs[device_name] self.assertEqual(net_attrs['cfg']['BOOTPROTO'], bootproto) self.assertEqual(net_attrs['dhcpv4'], dhcpv4) self.assertEqual(net_attrs['dhcpv6'], dhcpv6) if dhcpv4: self.assertEqual(test_net['gateway'], IP_GATEWAY) # TODO: source routing not ready for IPv6 ip_addr = test_net['addr'] self.assertSourceRoutingConfiguration(BRIDGE_NAME, ip_addr) # Do not report DHCP from (typically still valid) leases network[NETWORK_NAME]['bootproto'] = 'none' network[NETWORK_NAME]['dhcpv6'] = False status, msg = self.setupNetworks(network, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) test_net = self.vdsm_net.netinfo.networks[NETWORK_NAME] self.assertEqual(test_net['dhcpv4'], False) self.assertEqual(test_net['dhcpv6'], False) network = {NETWORK_NAME: {'remove': True}} status, msg = self.setupNetworks(network, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) self.assertNetworkDoesntExist(NETWORK_NAME) # Assert that routes and rules don't exist if dhcpv4: source_route = _get_source_route(BRIDGE_NAME, ip_addr) for route in source_route._buildRoutes(): self.assertRouteDoesNotExist(route) for rule in source_route._buildRules(): self.assertRuleDoesNotExist(rule) finally: dhcp.delete_dhclient_leases( NETWORK_NAME if bridged else right, dhcpv4, dhcpv6)
def testSetupNetworksAddDelDhcp(self, bridged, families): """Copied from networkTests.py, source_route checking changed from device_name to BRIDGE_NAME. """ def _assert_applied(network_name, requested, reported): self.assertNetworkExists(network_name) reported_network = reported.networks[network_name] if requested['bridged']: reported_devices = reported.bridges device_name = network_name else: # CHANGED: always bridged pass self.assertIn(device_name, reported_devices) reported_device = reported_devices[device_name] requested_dhcpv4 = requested['bootproto'] == 'dhcp' self.assertEqual(reported_network['dhcpv4'], requested_dhcpv4) self.assertEqual(reported_network['dhcpv6'], requested['dhcpv6']) self.assertEqual(reported_device['dhcpv4'], requested_dhcpv4) self.assertEqual(reported_device['dhcpv6'], requested['dhcpv6']) if requested_dhcpv4: self.assertEqual(reported_network['gateway'], IP_GATEWAY) # TODO: source routing not ready for IPv6 ip_addr = reported_network['addr'] self.assertSourceRoutingConfiguration( BRIDGE_NAME, # CHANGED ip_addr) return device_name, ip_addr return None, None with veth_pair() as (left, right): addrAdd(left, IP_ADDRESS, IP_CIDR) addrAdd(left, IPv6_ADDRESS, IPv6_CIDR, 6) linkSet(left, ['up']) with dnsmasq_run(left, DHCP_RANGE_FROM, DHCP_RANGE_TO, DHCPv6_RANGE_FROM, DHCPv6_RANGE_TO, IP_GATEWAY): dhcpv4 = 4 in families dhcpv6 = 6 in families bootproto = 'dhcp' if dhcpv4 else 'none' network = { NETWORK_NAME: { 'nic': right, 'bridged': bridged, 'bootproto': bootproto, 'dhcpv6': dhcpv6, 'blockingdhcp': True } } try: status, msg = self.setupNetworks(network, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) device_name, ip_addr = _assert_applied( NETWORK_NAME, network[NETWORK_NAME], self.vdsm_net.netinfo) # Do not report DHCP from (typically still valid) leases network[NETWORK_NAME]['bootproto'] = 'none' network[NETWORK_NAME]['dhcpv6'] = False status, msg = self.setupNetworks(network, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) _assert_applied(NETWORK_NAME, network[NETWORK_NAME], self.vdsm_net.netinfo) network = {NETWORK_NAME: {'remove': True}} status, msg = self.setupNetworks(network, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) self.assertNetworkDoesntExist(NETWORK_NAME) # Assert that routes and rules don't exist if dhcpv4: source_route = _get_source_route(device_name, ip_addr) for route in source_route._buildRoutes(): self.assertRouteDoesNotExist(route) for rule in source_route._buildRules(): self.assertRuleDoesNotExist(rule) finally: dhcp.delete_dhclient_leases( NETWORK_NAME if bridged else right, dhcpv4, dhcpv6)
def testSetupNetworksAddDelDhcp(self, bridged, families): """ Copied from networkTests.py, source_route checking changed from device_name to BRIDGE_NAME. """ with veth.pair() as (left, right): veth.setIP(left, IP_ADDRESS, IP_CIDR) veth.setIP(left, IPv6_ADDRESS, IPv6_CIDR, 6) veth.setLinkUp(left) with dnsmasqDhcp(left): dhcpv4 = 4 in families dhcpv6 = 6 in families bootproto = 'dhcp' if dhcpv4 else 'none' network = { NETWORK_NAME: { 'nic': right, 'bridged': bridged, 'bootproto': bootproto, 'dhcpv6': dhcpv6, 'blockingdhcp': True } } try: status, msg = self.setupNetworks(network, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) self.assertNetworkExists(NETWORK_NAME) test_net = self.vdsm_net.netinfo.networks[NETWORK_NAME] self.assertEqual(test_net['dhcpv4'], dhcpv4) self.assertEqual(test_net['dhcpv6'], dhcpv6) if bridged: self.assertEqual(test_net['cfg']['BOOTPROTO'], bootproto) devs = self.vdsm_net.netinfo.bridges device_name = NETWORK_NAME else: devs = self.vdsm_net.netinfo.nics device_name = right self.assertIn(device_name, devs) net_attrs = devs[device_name] self.assertEqual(net_attrs['cfg']['BOOTPROTO'], bootproto) self.assertEqual(net_attrs['dhcpv4'], dhcpv4) self.assertEqual(net_attrs['dhcpv6'], dhcpv6) if dhcpv4: self.assertEqual(test_net['gateway'], IP_GATEWAY) # TODO: source routing not ready for IPv6 ip_addr = test_net['addr'] self.assertSourceRoutingConfiguration( BRIDGE_NAME, ip_addr) # Do not report DHCP from (typically still valid) leases network[NETWORK_NAME]['bootproto'] = 'none' network[NETWORK_NAME]['dhcpv6'] = False status, msg = self.setupNetworks(network, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) test_net = self.vdsm_net.netinfo.networks[NETWORK_NAME] self.assertEqual(test_net['dhcpv4'], False) self.assertEqual(test_net['dhcpv6'], False) network = {NETWORK_NAME: {'remove': True}} status, msg = self.setupNetworks(network, {}, NOCHK) self.assertEqual(status, SUCCESS, msg) self.assertNetworkDoesntExist(NETWORK_NAME) # Assert that routes and rules don't exist if dhcpv4: source_route = _get_source_route(BRIDGE_NAME, ip_addr) for route in source_route._buildRoutes(): self.assertRouteDoesNotExist(route) for rule in source_route._buildRules(): self.assertRuleDoesNotExist(rule) finally: dhcp.delete_dhclient_leases( NETWORK_NAME if bridged else right, dhcpv4, dhcpv6)