diff --git a/os_win/tests/unit/utils/compute/test_vmutils.py b/os_win/tests/unit/utils/compute/test_vmutils.py index a862e0ca..8fe8a8c0 100644 --- a/os_win/tests/unit/utils/compute/test_vmutils.py +++ b/os_win/tests/unit/utils/compute/test_vmutils.py @@ -736,6 +736,30 @@ class VMUtilsTestCase(test_base.OsWinBaseTestCase): self._vmutils._jobutils.remove_virt_resource.assert_called_once_with( mock_nic_data) + @mock.patch.object(vmutils.VMUtils, '_lookup_vm_check') + @mock.patch.object(_wqlutils, 'get_element_associated_class') + def test_get_vm_nics(self, mock_get_assoc, mock_lookup_vm): + vnics = self._vmutils._get_vm_nics(mock.sentinel.vm_name) + + self.assertEqual(mock_get_assoc.return_value, vnics) + mock_lookup_vm.assert_called_once_with(mock.sentinel.vm_name) + mock_get_assoc.assert_called_once_with( + self._vmutils._compat_conn, + self._vmutils._SYNTHETIC_ETHERNET_PORT_SETTING_DATA_CLASS, + element_instance_id=mock_lookup_vm.return_value.InstanceId) + + @mock.patch.object(vmutils.VMUtils, '_get_vm_nics') + def test_get_vm_nic_names(self, mock_get_vm_nics): + exp_nic_names = ['port1', 'port2'] + + mock_get_vm_nics.return_value = [ + mock.Mock(ElementName=nic_name) + for nic_name in exp_nic_names] + nic_names = self._vmutils.get_vm_nic_names(mock.sentinel.vm_name) + + self.assertEqual(exp_nic_names, nic_names) + mock_get_vm_nics.assert_called_once_with(mock.sentinel.vm_name) + def test_set_vm_state(self): mock_vm = self._lookup_vm() mock_vm.RequestStateChange.return_value = ( diff --git a/os_win/utils/compute/vmutils.py b/os_win/utils/compute/vmutils.py index aa63299b..ee32cc9b 100644 --- a/os_win/utils/compute/vmutils.py +++ b/os_win/utils/compute/vmutils.py @@ -645,6 +645,18 @@ class VMUtils(baseutils.BaseUtilsVirt): "to remove vm nic: '%s'. It may have been already " "deleted.", nic_name) + def _get_vm_nics(self, vm_name): + vmsettings = self._lookup_vm_check(vm_name) + nics = _wqlutils.get_element_associated_class( + self._compat_conn, + self._SYNTHETIC_ETHERNET_PORT_SETTING_DATA_CLASS, + element_instance_id=vmsettings.InstanceId) + return nics + + def get_vm_nic_names(self, vm_name): + nics = self._get_vm_nics(vm_name) + return [nic.ElementName for nic in nics] + def soft_shutdown_vm(self, vm_name): vm = self._lookup_vm_check(vm_name, as_vssd=False) shutdown_component = self._conn.Msvm_ShutdownComponent(