From 5e9a2f6fa6212e00c65cca4d2b83f978a847aa10 Mon Sep 17 00:00:00 2001 From: Alexander Chadin Date: Thu, 10 Nov 2016 15:51:45 +0300 Subject: [PATCH] Fix NoMetricValuesForInstance error This patch set allows in case of NoMetricValuesForInstance exception to continue the flow of Workload Stabilization strategy instead of interrupting. Closes-Bug: #1640096 Change-Id: I2de22bb97defb9c34e409102d06846275793b80d --- .../strategy/strategies/workload_stabilization.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/watcher/decision_engine/strategy/strategies/workload_stabilization.py b/watcher/decision_engine/strategy/strategies/workload_stabilization.py index 5fb09d37f..7cd04d1c2 100644 --- a/watcher/decision_engine/strategy/strategies/workload_stabilization.py +++ b/watcher/decision_engine/strategy/strategies/workload_stabilization.py @@ -27,7 +27,7 @@ from oslo_config import cfg from oslo_log import log import oslo_utils -from watcher._i18n import _LI, _ +from watcher._i18n import _LI, _LW, _ from watcher.common import exception from watcher.decision_engine.cluster.history import ceilometer as \ ceilometer_cluster_history @@ -200,8 +200,12 @@ class WorkloadStabilization(base.WorkloadStabilizationBaseStrategy): aggregate='min' ) if avg_meter is None: - raise exception.NoMetricValuesForInstance( - resource_id=instance_uuid, metric_name=meter) + LOG.warning( + _LW("No values returned by %(resource_id)s " + "for %(metric_name)s") % dict( + resource_id=instance_uuid, + metric_name=meter)) + avg_meter = 0 if meter == 'cpu_util': avg_meter /= float(100) instance_load[meter] = avg_meter