Fix Bug Unable to get scoped data model

This patch removes 'audit_scope' from __init__ of
BaseClusterDataModelCollector class, as it is a singleton class
and cannot be instantiate more than once.

A new method is defined in BaseClusterDataModelCollector in place
of property audit_scope_handler, which takes audit_scope as
argument.

Change-Id: I0664c151d71a711c118d43c180d8b0760b1c81fa
Closes-Bug: #1732849
This commit is contained in:
aditi
2017-11-17 08:06:45 +00:00
parent 77c9f88fc4
commit e55f3793b6
8 changed files with 31 additions and 40 deletions

View File

@@ -123,19 +123,13 @@ class BaseClusterDataModelCollector(loadable.LoadableSingleton):
STALE_MODEL = model_root.ModelRoot(stale=True)
def __init__(self, config, osc=None, audit_scope=None):
def __init__(self, config, osc=None):
super(BaseClusterDataModelCollector, self).__init__(config)
self.osc = osc if osc else clients.OpenStackClients()
self._cluster_data_model = None
self.lock = threading.RLock()
self._audit_scope = audit_scope
self._audit_scope_handler = None
@abc.abstractproperty
def audit_scope_handler(self):
"""Get audit scope handler"""
raise NotImplementedError()
@property
def cluster_data_model(self):
if self._cluster_data_model is None:
@@ -163,6 +157,11 @@ class BaseClusterDataModelCollector(loadable.LoadableSingleton):
def set_cluster_data_model_as_stale(self):
self.cluster_data_model = self.STALE_MODEL
@abc.abstractmethod
def get_audit_scope_handler(self, audit_scope):
"""Get audit scope handler"""
raise NotImplementedError()
@abc.abstractmethod
def execute(self):
"""Build a cluster data model"""

View File

@@ -37,10 +37,6 @@ class CinderClusterDataModelCollector(base.BaseClusterDataModelCollector):
def __init__(self, config, osc=None):
super(CinderClusterDataModelCollector, self).__init__(config, osc)
@property
def audit_scope_handler(self):
return None
@property
def notification_endpoints(self):
"""Associated notification endpoints
@@ -58,6 +54,9 @@ class CinderClusterDataModelCollector(base.BaseClusterDataModelCollector):
cinder.VolumeResizeEnd(self)
]
def get_audit_scope_handler(self, audit_scope):
return None
def execute(self):
"""Build the storage cluster data model"""
LOG.debug("Building latest Cinder cluster data model")

View File

@@ -50,17 +50,15 @@ class CollectorManager(object):
return self._notification_endpoints
def get_cluster_model_collector(self, name, osc=None, audit_scope=None):
def get_cluster_model_collector(self, name, osc=None):
"""Retrieve cluster data model collector
:param name: name of the cluster data model collector plugin
:type name: str
:param osc: an OpenStackClients instance
:type osc: :py:class:`~.OpenStackClients` instance
:param audit_scope: an BaseScope instance
:type audit_scope: :py:class:`~.BaseScope` instance
:returns: cluster data model collector plugin
:rtype: :py:class:`~.BaseClusterDataModelCollector`
"""
return self.collector_loader.load(
name, osc=osc, audit_scope=audit_scope)
name, osc=osc)

View File

@@ -139,13 +139,6 @@ class NovaClusterDataModelCollector(base.BaseClusterDataModelCollector):
def __init__(self, config, osc=None):
super(NovaClusterDataModelCollector, self).__init__(config, osc)
@property
def audit_scope_handler(self):
if not self._audit_scope_handler:
self._audit_scope_handler = compute_scope.ComputeScope(
self._audit_scope, self.config)
return self._audit_scope_handler
@property
def notification_endpoints(self):
"""Associated notification endpoints
@@ -166,6 +159,11 @@ class NovaClusterDataModelCollector(base.BaseClusterDataModelCollector):
nova.LegacyLiveMigratedEnd(self),
]
def get_audit_scope_handler(self, audit_scope):
self._audit_scope_handler = compute_scope.ComputeScope(
audit_scope, self.config)
return self._audit_scope_handler
def execute(self):
"""Build the compute cluster data model"""
LOG.debug("Building latest Nova cluster data model")