Merge "[Trivial] Refactor libvirt inspector connection & uri"
This commit is contained in:
commit
caeb661d8a
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
@ -416,15 +415,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')
|
||||
|
@ -437,16 +432,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)
|
||||
|
|
Loading…
Reference in New Issue