diff --git a/os_win/tests/unit/utils/metrics/test_metricsutils.py b/os_win/tests/unit/utils/metrics/test_metricsutils.py index cbc43a75..358783c6 100644 --- a/os_win/tests/unit/utils/metrics/test_metricsutils.py +++ b/os_win/tests/unit/utils/metrics/test_metricsutils.py @@ -72,6 +72,7 @@ class MetricsUtilsTestCase(test_base.OsWinBaseTestCase): def _check_enable_metrics(self, metrics=None, definition=None): mock_element = mock.MagicMock() + self.utils._metrics_svc.ControlMetrics.return_value = [0] self.utils._enable_metrics(mock_element, metrics) @@ -90,6 +91,17 @@ class MetricsUtilsTestCase(test_base.OsWinBaseTestCase): self._check_enable_metrics([metrics_name, mock.sentinel.metrics_name], metrics_def.path_.return_value) + def test_enable_metrics_exception(self): + metric_name = self.utils._CPU_METRICS + metric_def = mock.MagicMock() + self.utils._metrics_defs_obj = {metric_name: metric_def} + + self.utils._metrics_svc.ControlMetrics.return_value = [1] + self.assertRaises(exceptions.OSWinException, + self.utils._enable_metrics, + mock.MagicMock(), + [metric_name]) + @mock.patch.object(metricsutils.MetricsUtils, '_get_metrics') @mock.patch.object(metricsutils.MetricsUtils, '_get_vm_resources') @mock.patch.object(metricsutils.MetricsUtils, '_get_vm') @@ -376,7 +388,7 @@ class MetricsUtilsTestCase(test_base.OsWinBaseTestCase): result = self.utils._get_switch_port(mock.sentinel.port_name) self.assertEqual(mock_unique_result.return_value, result) - conn_class = self.utils._conn.Msvm_SyntheticEthernetPortSettingData + conn_class = self.utils._conn.Msvm_EthernetPortAllocationSettingData conn_class.assert_called_once_with(ElementName=mock.sentinel.port_name) mock_unique_result.assert_called_once_with(conn_class.return_value, mock.sentinel.port_name) diff --git a/os_win/utils/metrics/metricsutils.py b/os_win/utils/metrics/metricsutils.py index 8c30b3c2..f4c44e08 100644 --- a/os_win/utils/metrics/metricsutils.py +++ b/os_win/utils/metrics/metricsutils.py @@ -106,10 +106,17 @@ class MetricsUtils(baseutils.BaseUtilsVirt): element_path = element.path_() for definition_path in definition_paths: - self._metrics_svc.ControlMetrics( + ret_val = self._metrics_svc.ControlMetrics( Subject=element_path, Definition=definition_path, - MetricCollectionEnabled=self._METRICS_ENABLED) + MetricCollectionEnabled=self._METRICS_ENABLED)[0] + if ret_val: + err_msg = _("Failed to enable metrics for resource " + "%(resource_name)s. " + "Return code: %(ret_val)s.") % dict( + resource_name=element.ElementName, + ret_val=ret_val) + raise exceptions.OSWinException(err_msg) def get_cpu_metrics(self, vm_name): vm = self._get_vm(vm_name) @@ -264,7 +271,7 @@ class MetricsUtils(baseutils.BaseUtilsVirt): return self._unique_result(vms, vm_name) def _get_switch_port(self, port_name): - ports = self._conn.Msvm_SyntheticEthernetPortSettingData( + ports = self._conn.Msvm_EthernetPortAllocationSettingData( ElementName=port_name) return self._unique_result(ports, port_name)