diff --git a/ceilometer/compute/pollsters/__init__.py b/ceilometer/compute/pollsters/__init__.py index 45c90d0d19..579a60db1a 100644 --- a/ceilometer/compute/pollsters/__init__.py +++ b/ceilometer/compute/pollsters/__init__.py @@ -35,7 +35,7 @@ class BaseComputePollster(plugin_base.PollsterBase): try: inspector = self._inspector except AttributeError: - inspector = virt_inspector.get_hypervisor_inspector() + inspector = virt_inspector.get_hypervisor_inspector(self.conf) BaseComputePollster._inspector = inspector return inspector diff --git a/ceilometer/compute/virt/hyperv/inspector.py b/ceilometer/compute/virt/hyperv/inspector.py index 685323c7ac..d7e9671c05 100644 --- a/ceilometer/compute/virt/hyperv/inspector.py +++ b/ceilometer/compute/virt/hyperv/inspector.py @@ -77,8 +77,8 @@ exception_conversion_map = collections.OrderedDict([ @decorate_all_methods(convert_exceptions, exception_conversion_map) class HyperVInspector(virt_inspector.Inspector): - def __init__(self): - super(HyperVInspector, self).__init__() + def __init__(self, conf): + super(HyperVInspector, self).__init__(conf) self._utils = utilsfactory.get_metricsutils() self._host_max_cpu_clock = self._compute_host_max_cpu_clock() diff --git a/ceilometer/compute/virt/inspector.py b/ceilometer/compute/virt/inspector.py index 3dfdc063ea..3401008bd2 100644 --- a/ceilometer/compute/virt/inspector.py +++ b/ceilometer/compute/virt/inspector.py @@ -226,6 +226,9 @@ class NoSanityException(InspectorException): # class Inspector(object): + def __init__(self, conf): + self.conf = conf + def check_sanity(self): """Check the sanity of hypervisor inspector. @@ -365,13 +368,14 @@ class Inspector(object): raise ceilometer.NotImplementedError -def get_hypervisor_inspector(): +def get_hypervisor_inspector(conf): try: namespace = 'ceilometer.compute.virt' mgr = driver.DriverManager(namespace, - cfg.CONF.hypervisor_inspector, - invoke_on_load=True) + conf.hypervisor_inspector, + invoke_on_load=True, + invoke_args=(conf, )) return mgr.driver except ImportError as e: LOG.error(_("Unable to load the hypervisor inspector: %s") % e) - return Inspector() + return Inspector(conf) diff --git a/ceilometer/compute/virt/libvirt/inspector.py b/ceilometer/compute/virt/libvirt/inspector.py index 664df356d8..d0c67b2d54 100644 --- a/ceilometer/compute/virt/libvirt/inspector.py +++ b/ceilometer/compute/virt/libvirt/inspector.py @@ -67,7 +67,8 @@ class LibvirtInspector(virt_inspector.Inspector): per_type_uris = dict(uml='uml:///system', xen='xen:///', lxc='lxc:///') - def __init__(self): + def __init__(self, conf): + super(LibvirtInspector, self).__init__(conf) self._connection = None @property @@ -77,8 +78,9 @@ class LibvirtInspector(virt_inspector.Inspector): if libvirt is None: libvirt = __import__('libvirt') - uri = (CONF.libvirt_uri or - self.per_type_uris.get(CONF.libvirt_type, 'qemu:///system')) + uri = (self.conf.libvirt_uri or + self.per_type_uris.get(self.conf.libvirt_type, + 'qemu:///system')) LOG.debug('Connecting to libvirt: %s', uri) self._connection = libvirt.openReadOnly(uri) diff --git a/ceilometer/compute/virt/vmware/inspector.py b/ceilometer/compute/virt/vmware/inspector.py index 0009defa52..ba08808d4e 100644 --- a/ceilometer/compute/virt/vmware/inspector.py +++ b/ceilometer/compute/virt/vmware/inspector.py @@ -78,26 +78,26 @@ VC_DISK_WRITE_RATE_CNTR = "disk:write:average" VC_DISK_WRITE_REQUESTS_RATE_CNTR = "disk:numberWriteAveraged:average" -def get_api_session(): +def get_api_session(conf): api_session = api.VMwareAPISession( - cfg.CONF.vmware.host_ip, - cfg.CONF.vmware.host_username, - cfg.CONF.vmware.host_password, - cfg.CONF.vmware.api_retry_count, - cfg.CONF.vmware.task_poll_interval, - wsdl_loc=cfg.CONF.vmware.wsdl_location, - port=cfg.CONF.vmware.host_port, - cacert=cfg.CONF.vmware.ca_file, - insecure=cfg.CONF.vmware.insecure) + conf.vmware.host_ip, + conf.vmware.host_username, + conf.vmware.host_password, + conf.vmware.api_retry_count, + conf.vmware.task_poll_interval, + wsdl_loc=conf.vmware.wsdl_location, + port=conf.vmware.host_port, + cacert=conf.vmware.ca_file, + insecure=conf.vmware.insecure) return api_session class VsphereInspector(virt_inspector.Inspector): - def __init__(self): - super(VsphereInspector, self).__init__() + def __init__(self, conf): + super(VsphereInspector, self).__init__(conf) self._ops = vsphere_operations.VsphereOperations( - get_api_session(), 1000) + get_api_session(self.conf), 1000) def inspect_cpu_util(self, instance, duration=None): vm_moid = self._ops.get_vm_moid(instance.id) diff --git a/ceilometer/compute/virt/xenapi/inspector.py b/ceilometer/compute/virt/xenapi/inspector.py index 18ed5d7ebb..45da31f220 100644 --- a/ceilometer/compute/virt/xenapi/inspector.py +++ b/ceilometer/compute/virt/xenapi/inspector.py @@ -61,13 +61,13 @@ def swap_xapi_host(url, host_addr): return urlparse.urlunparse(replaced) -def get_api_session(): +def get_api_session(conf): if not api: raise ImportError(_('XenAPI not installed')) - url = CONF.xenapi.connection_url - username = CONF.xenapi.connection_username - password = CONF.xenapi.connection_password + url = conf.xenapi.connection_url + username = conf.xenapi.connection_username + password = conf.xenapi.connection_password if not url or password is None: raise XenapiException(_('Must specify connection_url, and ' 'connection_password to use')) @@ -94,9 +94,9 @@ def get_api_session(): class XenapiInspector(virt_inspector.Inspector): - def __init__(self): - super(XenapiInspector, self).__init__() - self.session = get_api_session() + def __init__(self, conf): + super(XenapiInspector, self).__init__(conf) + self.session = get_api_session(self.conf) def _get_host_ref(self): """Return the xenapi host on which nova-compute runs on.""" diff --git a/ceilometer/tests/unit/compute/virt/hyperv/test_inspector.py b/ceilometer/tests/unit/compute/virt/hyperv/test_inspector.py index 7df4f2e409..cf0149d91f 100644 --- a/ceilometer/tests/unit/compute/virt/hyperv/test_inspector.py +++ b/ceilometer/tests/unit/compute/virt/hyperv/test_inspector.py @@ -19,6 +19,7 @@ import sys import mock from os_win import exceptions as os_win_exc +from oslo_config import fixture as fixture_config from oslo_utils import units from oslotest import base @@ -32,7 +33,8 @@ class TestHyperVInspection(base.BaseTestCase): @mock.patch.object(hyperv_inspector.HyperVInspector, '_compute_host_max_cpu_clock') def setUp(self, mock_compute_host_cpu_clock): - self._inspector = hyperv_inspector.HyperVInspector() + self.CONF = self.useFixture(fixture_config.Config()).conf + self._inspector = hyperv_inspector.HyperVInspector(self.CONF) self._inspector._utils = mock.MagicMock() super(TestHyperVInspection, self).setUp() diff --git a/ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py b/ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py index 041dcb62af..eb73bc0fe5 100644 --- a/ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py +++ b/ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py @@ -21,6 +21,7 @@ except ImportError: import fixtures import mock +from oslo_config import fixture as fixture_config from oslo_utils import units from oslotest import base @@ -35,12 +36,13 @@ class TestLibvirtInspection(base.BaseTestCase): def setUp(self): super(TestLibvirtInspection, self).setUp() + self.CONF = self.useFixture(fixture_config.Config()).conf class VMInstance(object): id = 'ff58e738-12f4-4c58-acde-77617b68da56' name = 'instance-00000001' self.instance = VMInstance - self.inspector = libvirt_inspector.LibvirtInspector() + self.inspector = libvirt_inspector.LibvirtInspector(self.CONF) libvirt_inspector.libvirt = mock.Mock() libvirt_inspector.libvirt.VIR_DOMAIN_SHUTOFF = 5 libvirt_inspector.libvirt.libvirtError = self.fakeLibvirtError @@ -426,7 +428,8 @@ class TestLibvirtInspectionWithError(base.BaseTestCase): def setUp(self): super(TestLibvirtInspectionWithError, self).setUp() - self.inspector = libvirt_inspector.LibvirtInspector() + self.CONF = self.useFixture(fixture_config.Config()).conf + self.inspector = libvirt_inspector.LibvirtInspector(self.CONF) self.useFixture(fixtures.MonkeyPatch( 'ceilometer.compute.virt.libvirt.inspector.' 'LibvirtInspector.connection', @@ -443,7 +446,8 @@ class TestLibvirtInitWithError(base.BaseTestCase): def setUp(self): super(TestLibvirtInitWithError, self).setUp() - self.inspector = libvirt_inspector.LibvirtInspector() + self.CONF = self.useFixture(fixture_config.Config()).conf + self.inspector = libvirt_inspector.LibvirtInspector(self.CONF) libvirt_inspector.libvirt = mock.Mock() def test_init_error(self): diff --git a/ceilometer/tests/unit/compute/virt/vmware/test_inspector.py b/ceilometer/tests/unit/compute/virt/vmware/test_inspector.py index a6ca74a612..7e458704df 100644 --- a/ceilometer/tests/unit/compute/virt/vmware/test_inspector.py +++ b/ceilometer/tests/unit/compute/virt/vmware/test_inspector.py @@ -17,6 +17,7 @@ Tests for VMware vSphere inspector. """ import mock +from oslo_config import fixture as fixture_config from oslo_vmware import api from oslotest import base @@ -27,16 +28,16 @@ from ceilometer.compute.virt.vmware import inspector as vsphere_inspector class TestVsphereInspection(base.BaseTestCase): def setUp(self): + super(TestVsphereInspection, self).setUp() + self.CONF = self.useFixture(fixture_config.Config()).conf api_session = api.VMwareAPISession("test_server", "test_user", "test_password", 0, None, create_session=False, port=7443) vsphere_inspector.get_api_session = mock.Mock( return_value=api_session) - self._inspector = vsphere_inspector.VsphereInspector() + self._inspector = vsphere_inspector.VsphereInspector(self.CONF) self._inspector._ops = mock.MagicMock() - super(TestVsphereInspection, self).setUp() - def test_inspect_memory_usage(self): fake_instance_moid = 'fake_instance_moid' fake_instance_id = 'fake_instance_id' diff --git a/ceilometer/tests/unit/compute/virt/xenapi/test_inspector.py b/ceilometer/tests/unit/compute/virt/xenapi/test_inspector.py index 7e8f8272f8..4d40b952ee 100644 --- a/ceilometer/tests/unit/compute/virt/xenapi/test_inspector.py +++ b/ceilometer/tests/unit/compute/virt/xenapi/test_inspector.py @@ -15,6 +15,7 @@ """ import mock +from oslo_config import fixture as fixture_config from oslotest import base from ceilometer.compute.virt import inspector as virt_inspector @@ -52,11 +53,11 @@ class TestSwapXapiHost(base.BaseTestCase): class TestXenapiInspection(base.BaseTestCase): def setUp(self): + super(TestXenapiInspection, self).setUp() + self.CONF = self.useFixture(fixture_config.Config()).conf api_session = mock.Mock() xenapi_inspector.get_api_session = mock.Mock(return_value=api_session) - self.inspector = xenapi_inspector.XenapiInspector() - - super(TestXenapiInspection, self).setUp() + self.inspector = xenapi_inspector.XenapiInspector(self.CONF) def test_inspect_cpu_util(self): fake_instance = {'OS-EXT-SRV-ATTR:instance_name': 'fake_instance_name',