From 8ef9d14a548a6cc38b9c8ddde38ea1e3f5c8b15f Mon Sep 17 00:00:00 2001
From: licanwei
Date: Sat, 6 Jun 2020 11:02:23 +0800
Subject: [PATCH] Check if scope is None
if scope is None, don't create data model
Change-Id: Icf611966c9b0a3882615d778ee6c72a8da73841d
Closed-Bug: #1881920
(cherry picked from commit 9f0138e1cf4bb22cfedd9c0db9744e374d4a62e6)
---
.../decision_engine/model/collector/cinder.py | 3 ++
.../decision_engine/model/collector/ironic.py | 3 ++
.../decision_engine/model/collector/nova.py | 3 ++
.../test_cluster_data_model_collector.py | 36 +++++++++++++++++++
4 files changed, 45 insertions(+)
diff --git a/watcher/decision_engine/model/collector/cinder.py b/watcher/decision_engine/model/collector/cinder.py
index 5a24389de..8b2b9fc4c 100644
--- a/watcher/decision_engine/model/collector/cinder.py
+++ b/watcher/decision_engine/model/collector/cinder.py
@@ -152,6 +152,9 @@ class CinderClusterDataModelCollector(base.BaseClusterDataModelCollector):
if self._audit_scope_handler is None:
LOG.debug("No audit, Don't Build storage data model")
return
+ if self._data_model_scope is None:
+ LOG.debug("No audit scope, Don't Build storage data model")
+ return
builder = CinderModelBuilder(self.osc)
return builder.execute(self._data_model_scope)
diff --git a/watcher/decision_engine/model/collector/ironic.py b/watcher/decision_engine/model/collector/ironic.py
index ecce6e5ac..1be079937 100644
--- a/watcher/decision_engine/model/collector/ironic.py
+++ b/watcher/decision_engine/model/collector/ironic.py
@@ -63,6 +63,9 @@ class BaremetalClusterDataModelCollector(base.BaseClusterDataModelCollector):
if self._audit_scope_handler is None:
LOG.debug("No audit, Don't Build Baremetal data model")
return
+ if self._data_model_scope is None:
+ LOG.debug("No audit scope, Don't Build Baremetal data model")
+ return
builder = BareMetalModelBuilder(self.osc)
return builder.execute(self._data_model_scope)
diff --git a/watcher/decision_engine/model/collector/nova.py b/watcher/decision_engine/model/collector/nova.py
index 6e6bc2771..2fb9a12c7 100644
--- a/watcher/decision_engine/model/collector/nova.py
+++ b/watcher/decision_engine/model/collector/nova.py
@@ -181,6 +181,9 @@ class NovaClusterDataModelCollector(base.BaseClusterDataModelCollector):
if self._audit_scope_handler is None:
LOG.debug("No audit, Don't Build compute data model")
return
+ if self._data_model_scope is None:
+ LOG.debug("No audit scope, Don't Build compute data model")
+ return
builder = NovaModelBuilder(self.osc)
return builder.execute(self._data_model_scope)
diff --git a/watcher/tests/decision_engine/cluster/test_cluster_data_model_collector.py b/watcher/tests/decision_engine/cluster/test_cluster_data_model_collector.py
index 7b2ad3302..d3abddd86 100644
--- a/watcher/tests/decision_engine/cluster/test_cluster_data_model_collector.py
+++ b/watcher/tests/decision_engine/cluster/test_cluster_data_model_collector.py
@@ -17,6 +17,9 @@
import mock
from watcher.decision_engine.model.collector import base
+from watcher.decision_engine.model.collector import cinder
+from watcher.decision_engine.model.collector import ironic
+from watcher.decision_engine.model.collector import nova
from watcher.decision_engine.model import model_root
from watcher.tests import base as test_base
@@ -55,3 +58,36 @@ class TestClusterDataModelCollector(test_base.TestCase):
self.assertIsNot(
collector.cluster_data_model,
collector.get_latest_cluster_data_model())
+
+
+class TestComputeDataModelCollector(test_base.TestCase):
+
+ def test_model_scope_is_none(self):
+ m_config = mock.Mock()
+ collector = nova.NovaClusterDataModelCollector(config=m_config)
+
+ collector._audit_scope_handler = mock.Mock()
+ collector._data_model_scope = None
+ self.assertIsNone(collector.execute())
+
+
+class TestStorageDataModelCollector(test_base.TestCase):
+
+ def test_model_scope_is_none(self):
+ m_config = mock.Mock()
+ collector = cinder.CinderClusterDataModelCollector(config=m_config)
+
+ collector._audit_scope_handler = mock.Mock()
+ collector._data_model_scope = None
+ self.assertIsNone(collector.execute())
+
+
+class TestBareMetalDataModelCollector(test_base.TestCase):
+
+ def test_model_scope_is_none(self):
+ m_config = mock.Mock()
+ collector = ironic.BaremetalClusterDataModelCollector(config=m_config)
+
+ collector._audit_scope_handler = mock.Mock()
+ collector._data_model_scope = None
+ self.assertIsNone(collector.execute())