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())