mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
support: add is_libvirt_error_no_domain
Repurpose the generic util.exception_is_libvirt_error for the one purpose that it's actually used, add it as a SupportCache staticmethod, and test it
This commit is contained in:
parent
f85e6def55
commit
ecc3e3d34e
@ -228,3 +228,10 @@ class TestXMLMisc(unittest.TestCase):
|
|||||||
randommac = virtinst.DeviceInterface.generate_mac(realconn)
|
randommac = virtinst.DeviceInterface.generate_mac(realconn)
|
||||||
self.assertTrue(randommac != testmac)
|
self.assertTrue(randommac != testmac)
|
||||||
self.assertTrue(len(randommac) == len(testmac))
|
self.assertTrue(len(randommac) == len(testmac))
|
||||||
|
|
||||||
|
def test_support_misc(self):
|
||||||
|
try:
|
||||||
|
self.conn.lookupByName("foobar-idontexist")
|
||||||
|
except Exception as e:
|
||||||
|
if not self.conn.support.is_libvirt_error_no_domain(e):
|
||||||
|
raise
|
||||||
|
@ -14,7 +14,6 @@ import libvirt
|
|||||||
from virtinst import DomainCapabilities
|
from virtinst import DomainCapabilities
|
||||||
from virtinst import DomainSnapshot
|
from virtinst import DomainSnapshot
|
||||||
from virtinst import Guest
|
from virtinst import Guest
|
||||||
from virtinst import util
|
|
||||||
from virtinst import DeviceController
|
from virtinst import DeviceController
|
||||||
from virtinst import DeviceDisk
|
from virtinst import DeviceDisk
|
||||||
|
|
||||||
@ -1343,10 +1342,10 @@ class vmmDomain(vmmLibvirtObject):
|
|||||||
if self._has_managed_save is None:
|
if self._has_managed_save is None:
|
||||||
try:
|
try:
|
||||||
self._has_managed_save = self._backend.hasManagedSaveImage(0)
|
self._has_managed_save = self._backend.hasManagedSaveImage(0)
|
||||||
except libvirt.libvirtError as e:
|
except Exception as e:
|
||||||
if not util.exception_is_libvirt_error(e, "VIR_ERR_NO_DOMAIN"):
|
if self.conn.support.is_libvirt_error_no_domain(e):
|
||||||
raise
|
return False
|
||||||
return False
|
raise
|
||||||
|
|
||||||
return self._has_managed_save
|
return self._has_managed_save
|
||||||
|
|
||||||
|
@ -11,8 +11,6 @@ from gi.repository import Gtk
|
|||||||
from gi.repository import Gdk
|
from gi.repository import Gdk
|
||||||
from gi.repository import GdkPixbuf
|
from gi.repository import GdkPixbuf
|
||||||
|
|
||||||
import libvirt
|
|
||||||
|
|
||||||
from virtinst import util
|
from virtinst import util
|
||||||
|
|
||||||
from . import vmmenu
|
from . import vmmenu
|
||||||
@ -704,8 +702,8 @@ class vmmManager(vmmGObjectUI):
|
|||||||
|
|
||||||
desc = vm.get_description()
|
desc = vm.get_description()
|
||||||
row[ROW_HINT] = util.xml_escape(desc)
|
row[ROW_HINT] = util.xml_escape(desc)
|
||||||
except libvirt.libvirtError as e:
|
except Exception as e:
|
||||||
if util.exception_is_libvirt_error(e, "VIR_ERR_NO_DOMAIN"):
|
if vm.conn.support.is_libvirt_error_no_domain(e):
|
||||||
return
|
return
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
@ -9,10 +9,6 @@ import logging
|
|||||||
from gi.repository import Gdk
|
from gi.repository import Gdk
|
||||||
from gi.repository import Gtk
|
from gi.repository import Gtk
|
||||||
|
|
||||||
import libvirt
|
|
||||||
|
|
||||||
from virtinst import util
|
|
||||||
|
|
||||||
from . import vmmenu
|
from . import vmmenu
|
||||||
from .baseclass import vmmGObjectUI
|
from .baseclass import vmmGObjectUI
|
||||||
from .details import vmmDetails
|
from .details import vmmDetails
|
||||||
@ -561,8 +557,8 @@ class vmmVMWindow(vmmGObjectUI):
|
|||||||
try:
|
try:
|
||||||
if self.is_visible():
|
if self.is_visible():
|
||||||
self.vm.ensure_latest_xml()
|
self.vm.ensure_latest_xml()
|
||||||
except libvirt.libvirtError as e:
|
except Exception as e:
|
||||||
if util.exception_is_libvirt_error(e, "VIR_ERR_NO_DOMAIN"):
|
if self.conn.support.is_libvirt_error_no_domain(e):
|
||||||
self.close()
|
self.close()
|
||||||
return
|
return
|
||||||
raise
|
raise
|
||||||
|
@ -235,6 +235,18 @@ class SupportCache:
|
|||||||
Class containing all support checks and access APIs, and support for
|
Class containing all support checks and access APIs, and support for
|
||||||
caching returned results
|
caching returned results
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def is_libvirt_error_no_domain(err):
|
||||||
|
"""
|
||||||
|
Small helper to check if the passed exception is a libvirt error
|
||||||
|
with code VIR_ERR_NO_DOMAIN
|
||||||
|
"""
|
||||||
|
if not isinstance(err, libvirt.libvirtError):
|
||||||
|
return False
|
||||||
|
return err.get_error_code() == libvirt.VIR_ERR_NO_DOMAIN
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, virtconn):
|
def __init__(self, virtconn):
|
||||||
self._cache = {}
|
self._cache = {}
|
||||||
self._virtconn = virtconn
|
self._virtconn = virtconn
|
||||||
|
@ -137,11 +137,6 @@ def is_error_nosupport(err):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def exception_is_libvirt_error(e, error):
|
|
||||||
return (hasattr(libvirt, error) and
|
|
||||||
e.get_error_code() == getattr(libvirt, error))
|
|
||||||
|
|
||||||
|
|
||||||
def local_libvirt_version():
|
def local_libvirt_version():
|
||||||
"""
|
"""
|
||||||
Lookup the local libvirt library version, but cache the value since
|
Lookup the local libvirt library version, but cache the value since
|
||||||
|
Loading…
Reference in New Issue
Block a user