summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhiQiang Fan <aji.zqfan@gmail.com>2016-04-30 02:37:07 +0800
committerZhiQiang Fan <aji.zqfan@gmail.com>2016-04-30 02:42:44 +0800
commit39f0f90f3c6a73983d47e91ac1009a6cb8cbfc40 (patch)
treefc31107d0670631237a51ab196857385f5043b1d
parent758d3cdc3f3ac5116ccd3e38e522e0432caff1d8 (diff)
downloadceilometer-39f0f90f3c6a73983d47e91ac1009a6cb8cbfc40.tar.gz
[Trivial] Refactor libvirt inspector connection & uri
libvirt inpsector has an attribute called `uri`, which only used when connecting to libvirtd. There is no such need to do so, a local variable can do it as well. Meanwhile, we initialize connection by calling a method `_get_connection`, and there is an attribute ``connection`` holds the returned value. This method can be replaced with a property `connection`, to shorten typing and avoid function calling style. Change-Id: I8604d00c9298f56009c579fd23adc2c93ad44f8c
-rw-r--r--ceilometer/compute/virt/libvirt/inspector.py25
-rw-r--r--ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py28
2 files changed, 23 insertions, 30 deletions
diff --git a/ceilometer/compute/virt/libvirt/inspector.py b/ceilometer/compute/virt/libvirt/inspector.py
index 8220d997..28be2cac 100644
--- a/ceilometer/compute/virt/libvirt/inspector.py
+++ b/ceilometer/compute/virt/libvirt/inspector.py
@@ -68,32 +68,31 @@ class LibvirtInspector(virt_inspector.Inspector):
per_type_uris = dict(uml='uml:///system', xen='xen:///', lxc='lxc:///')
def __init__(self):
- self.uri = self._get_uri()
- self.connection = None
+ self._connection = None
- def _get_uri(self):
- return CONF.libvirt_uri or self.per_type_uris.get(CONF.libvirt_type,
- 'qemu:///system')
-
- def _get_connection(self):
- if not self.connection:
+ @property
+ def connection(self):
+ if not self._connection:
global libvirt
if libvirt is None:
libvirt = __import__('libvirt')
- LOG.debug('Connecting to libvirt: %s', self.uri)
- self.connection = libvirt.openReadOnly(self.uri)
- return self.connection
+ uri = (CONF.libvirt_uri or
+ self.per_type_uris.get(CONF.libvirt_type, 'qemu:///system'))
+ LOG.debug('Connecting to libvirt: %s', uri)
+ self._connection = libvirt.openReadOnly(uri)
+
+ return self._connection
def check_sanity(self):
- if not self._get_connection():
+ if not self.connection:
raise virt_inspector.NoSanityException()
@retry_on_disconnect
def _lookup_by_uuid(self, instance):
instance_name = util.instance_name(instance)
try:
- return self._get_connection().lookupByUUIDString(instance.id)
+ return self.connection.lookupByUUIDString(instance.id)
except Exception as ex:
if not libvirt or not isinstance(ex, libvirt.libvirtError):
raise virt_inspector.InspectorException(six.text_type(ex))
diff --git a/ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py b/ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py
index 16220cfa..f622e372 100644
--- a/ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py
+++ b/ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py
@@ -41,7 +41,6 @@ class TestLibvirtInspection(base.BaseTestCase):
name = 'instance-00000001'
self.instance = VMInstance
self.inspector = libvirt_inspector.LibvirtInspector()
- self.inspector.connection = mock.Mock()
libvirt_inspector.libvirt = mock.Mock()
libvirt_inspector.libvirt.VIR_DOMAIN_SHUTOFF = 5
libvirt_inspector.libvirt.libvirtError = self.fakeLibvirtError
@@ -338,15 +337,11 @@ class TestLibvirtInspectionWithError(base.BaseTestCase):
self.inspector = libvirt_inspector.LibvirtInspector()
self.useFixture(fixtures.MonkeyPatch(
'ceilometer.compute.virt.libvirt.inspector.'
- 'LibvirtInspector._get_connection',
- self._dummy_get_connection))
+ 'LibvirtInspector.connection',
+ mock.MagicMock(side_effect=Exception('dummy'))))
libvirt_inspector.libvirt = mock.Mock()
libvirt_inspector.libvirt.libvirtError = self.fakeLibvirtError
- @staticmethod
- def _dummy_get_connection(*args, **kwargs):
- raise Exception('dummy')
-
def test_inspect_unknown_error(self):
self.assertRaises(virt_inspector.InspectorException,
self.inspector.inspect_cpus, 'foo')
@@ -359,16 +354,15 @@ class TestLibvirtInitWithError(base.BaseTestCase):
self.inspector = libvirt_inspector.LibvirtInspector()
libvirt_inspector.libvirt = mock.Mock()
- @mock.patch('ceilometer.compute.virt.libvirt.inspector.'
- 'LibvirtInspector._get_connection',
- mock.Mock(return_value=None))
def test_init_error(self):
- self.assertRaises(virt_inspector.NoSanityException,
- self.inspector.check_sanity)
+ with mock.patch.object(libvirt_inspector.libvirt,
+ 'openReadOnly',
+ return_value=None):
+ self.assertRaises(virt_inspector.NoSanityException,
+ self.inspector.check_sanity)
- @mock.patch('ceilometer.compute.virt.libvirt.inspector.'
- 'LibvirtInspector._get_connection',
- mock.Mock(side_effect=virt_inspector.NoDataException))
def test_init_exception(self):
- self.assertRaises(virt_inspector.NoDataException,
- self.inspector.check_sanity)
+ with mock.patch.object(libvirt_inspector.libvirt,
+ 'openReadOnly',
+ side_effect=ImportError):
+ self.assertRaises(ImportError, self.inspector.check_sanity)