コード例 #1
0
 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)
コード例 #2
0
    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)