Make collectd available to plugin components
Collectd module could be required by plugin components but importing it from their modules makes unit testing harder because it would require running tests from inside collectd process. This changes make the module available by passing it to component constructors which makes testing and mocking easier. Related-Bug: #1583301 Change-Id: I6abfd330c8f3b5108e78543df7c803cd65a15655
This commit is contained in:
committed by
Emma Foley
parent
e13d118a0c
commit
cac62bf2b1
@@ -21,6 +21,9 @@ from collectd_ceilometer.settings import Config
|
||||
class Meter(object):
|
||||
"""Default collectd meter"""
|
||||
|
||||
def __init__(self, collectd):
|
||||
self._collectd = collectd
|
||||
|
||||
def meter_name(self, vl):
|
||||
"""Return meter name"""
|
||||
# pylint: disable=no-self-use
|
||||
|
||||
@@ -24,7 +24,8 @@ import threading
|
||||
class LibvirtMeter(Meter):
|
||||
"""Specialization for libvirt plugin"""
|
||||
|
||||
def __init__(self):
|
||||
def __init__(self, collectd):
|
||||
super(LibvirtMeter, self).__init__(collectd=collectd)
|
||||
self._cache_lock = threading.Lock()
|
||||
self._conn = None
|
||||
self._vms = {}
|
||||
|
||||
@@ -29,12 +29,12 @@ class MeterStorage(object):
|
||||
'libvirt': LibvirtMeter,
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
def __init__(self, collectd):
|
||||
self._meters = {}
|
||||
self._default = Meter()
|
||||
self._default = Meter(collectd=collectd)
|
||||
|
||||
# fill dict with specialized meters classes
|
||||
self._meters = {key: meter_class()
|
||||
self._meters = {key: meter_class(collectd=collectd)
|
||||
for key, meter_class in six.iteritems(self._classes)}
|
||||
|
||||
def get(self, plugin):
|
||||
|
||||
@@ -51,7 +51,7 @@ class Plugin(object):
|
||||
"""Initialization callback"""
|
||||
|
||||
collectd.info('Initializing the collectd OpenStack python plugin')
|
||||
self._meters = MeterStorage()
|
||||
self._meters = MeterStorage(collectd=collectd)
|
||||
self._writer = Writer(self._meters)
|
||||
|
||||
def write(self, vl, data=None):
|
||||
|
||||
Reference in New Issue
Block a user