def _setUp(self, same_names=True, wrong_names=False, no_macs=False): # Generate fake pairs of NetworkDetails objects and # local ethernet network adapters. iface_name = "Ethernet" if wrong_names else "eth" self._count = 3 details_names = [ "{}{}".format(iface_name, idx) for idx in range(self._count) ] if same_names: adapters_names = details_names[:] else: adapters_names = ["vm " + name for name in details_names] macs = ["54:EE:75:19:F4:61", "54:EE:75:19:F4:62", "54:EE:75:19:F4:63"] addresses = [ "192.168.122.101", "192.168.103.104", "192.168.122.105", ] netmasks = [ "255.255.255.0", "255.255.0.0", "255.255.255.128", ] broadcasts = [ "192.168.122.255", "192.168.255.255", "192.168.122.127", ] gateways = [ "192.168.122.1", "192.168.122.16", "192.168.122.32", ] dnsnses = [ "8.8.8.8", "8.8.8.8 8.8.4.4", "8.8.8.8 0.0.0.0", ] self._network_adapters = [] self._network_details = [] for ind in range(self._count): adapter = (adapters_names[ind], macs[ind]) nic = service_base.NetworkDetails(details_names[ind], None if no_macs else macs[ind], addresses[ind], netmasks[ind], broadcasts[ind], gateways[ind], dnsnses[ind].split()) self._network_adapters.append(adapter) self._network_details.append(nic) # get the network config plugin self._network_plugin = networkconfig.NetworkConfigPlugin() # execution wrapper self._partial_test_execute = functools.partial( self._test_execute, network_adapters=self._network_adapters, network_details=self._network_details)
def _test_execute_network_details_v2(self, mock_get_os_utils, empty_network_dns_list=False, both_ipv4_dns_list=False, both_ipv6_dns_list=False): mock.sentinel.link_mac1 = u"00:00:00:00:00:01" mock.sentinel.network_cidr1 = u"0.0.0.0/0" mock.sentinel.gateway1 = u"10.0.0.254" mock.sentinel.network_cidr2 = u"172.16.0.0/16" mock.sentinel.gateway2 = u"172.16.1.1" mock.sentinel.address_cidr1 = u"10.0.0.1/24" mock.sentinel.dns1 = "10.0.0.1" mock.sentinel.dns2 = "10.0.0.2" mock.sentinel.network_dns_list1 = [] if empty_network_dns_list: mock.sentinel.dns3 = "10.0.0.3" expected_dns_list = [mock.sentinel.dns1, mock.sentinel.dns3] elif both_ipv4_dns_list: mock.sentinel.dns3 = "2001:db8::3" expected_dns_list = [mock.sentinel.dns1] elif both_ipv6_dns_list: mock.sentinel.address_cidr1 = u"2001:db8::3/24" mock.sentinel.dns3 = "2001:db8::4" expected_dns_list = [mock.sentinel.dns3] else: mock.sentinel.network_dns_list1 = [ mock.sentinel.dns1, mock.sentinel.dns2 ] expected_dns_list = mock.sentinel.network_dns_list1 service = mock.Mock() network_details = self._get_network_details_v2() service.get_network_details_v2.return_value = network_details mock_os_utils = mock.Mock() mock_get_os_utils.return_value = mock_os_utils m = mock_os_utils.get_network_adapter_name_by_mac_address m.return_value = mock.sentinel.adapter_old_name1 plugin = networkconfig.NetworkConfigPlugin() plugin.execute(service, {}) service.get_network_details_v2.assert_called_once_with() service.get_network_details.assert_not_called() m.assert_called_once_with(mock.sentinel.link_mac1) mock_os_utils.rename_network_adapter.assert_called_once_with( mock.sentinel.adapter_old_name1, mock.sentinel.link_name1) bond_name = (networkconfig.BOND_FORMAT_STR % mock.sentinel.bond_link_id1) mock_os_utils.create_network_team.assert_called_once_with( bond_name, mock.sentinel.bond_type1, mock.sentinel.bond_lb_algo1, [mock.sentinel.link_id1], mock.sentinel.bond_link_mac1, mock.sentinel.bond_link_name1, None, mock.sentinel.lacp_rate1) mock_os_utils.add_network_team_nic.assert_called_once_with( bond_name, mock.sentinel.vlan_link_name1, mock.sentinel.vlan_id1) mock_os_utils.set_network_adapter_mtu.assert_has_calls([ mock.call(mock.sentinel.link_name1, mock.sentinel.link_mtu1), mock.call(mock.sentinel.bond_link_name1, mock.sentinel.bond_link_mtu1), mock.call(mock.sentinel.vlan_link_name1, mock.sentinel.vlan_link_mtu1) ], any_order=False) mock_os_utils.enable_network_adapter.assert_has_calls([ mock.call(mock.sentinel.link_name1, mock.sentinel.link_enabled1), mock.call(mock.sentinel.bond_link_name1, mock.sentinel.bond_link_enabled1), mock.call(mock.sentinel.vlan_link_name1, mock.sentinel.vlan_link_enabled1) ], any_order=False) ip_address, prefix_len = mock.sentinel.address_cidr1.split("/") mock_os_utils.set_static_network_config.assert_called_once_with( mock.sentinel.link_id1, ip_address, prefix_len, mock.sentinel.gateway1, expected_dns_list)