diff options
author | ZhiQiang Fan <aji.zqfan@gmail.com> | 2016-04-30 02:37:07 +0800 |
---|---|---|
committer | ZhiQiang Fan <aji.zqfan@gmail.com> | 2016-04-30 02:42:44 +0800 |
commit | 39f0f90f3c6a73983d47e91ac1009a6cb8cbfc40 (patch) | |
tree | fc31107d0670631237a51ab196857385f5043b1d | |
parent | 758d3cdc3f3ac5116ccd3e38e522e0432caff1d8 (diff) | |
download | ceilometer-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.py | 25 | ||||
-rw-r--r-- | ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py | 28 |
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) |