def test_ovirtmgmtm_to_ovs(self): """ Test transformation of initial management network to OVS. # TODO: test it with ovirtmgmt and test-network # NOTE: without default route # TODO: more asserts """ 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): network = { NETWORK_NAME: {'nic': right, 'bootproto': 'dhcp', 'bridged': True, 'blockingdhcp': True}} options = NOCHK options['ovs'] = False try: status, msg = self.setupNetworks(network, {}, options) self.assertEqual(status, SUCCESS, msg) self.assertNetworkExists(NETWORK_NAME) options['ovs'] = True status, msg = self.setupNetworks(network, {}, options) self.assertEqual(status, SUCCESS, msg) self.assertNetworkExists(NETWORK_NAME) finally: dhcp.delete_dhclient_leases(NETWORK_NAME, True, False)
def test_ovirtmgmtm_to_ovs(self): """ Test transformation of initial management network to OVS. # TODO: test it with ovirtmgmt and test-network # NOTE: without default route # TODO: more asserts """ 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): network = { NETWORK_NAME: { 'nic': right, 'bootproto': 'dhcp', 'bridged': True, 'blockingdhcp': True } } options = NOCHK options['ovs'] = False try: status, msg = self.setupNetworks(network, {}, options) self.assertEqual(status, SUCCESS, msg) self.assertNetworkExists(NETWORK_NAME) options['ovs'] = True status, msg = self.setupNetworks(network, {}, options) self.assertEqual(status, SUCCESS, msg) self.assertNetworkExists(NETWORK_NAME) finally: dhcp.delete_dhclient_leases(NETWORK_NAME, True, False)
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. """ 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)