mirror of
https://github.com/virt-manager/virt-manager.git
synced 2026-08-05 18:57:03 -05:00
Import logged info from validation errors
This commit is contained in:
@@ -1148,7 +1148,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
disk.driver_name = virtinst.VirtualDisk.DRIVER_TAP
|
||||
|
||||
except Exception, e:
|
||||
return self.err.val_err(_("Storage parameter error."), str(e))
|
||||
return self.err.val_err(_("Storage parameter error."), e)
|
||||
|
||||
# Generate target
|
||||
used = []
|
||||
@@ -1224,7 +1224,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
self._dev.listen = self.get_config_graphics_address()
|
||||
self._dev.keymap = self.get_config_keymap()
|
||||
except ValueError, e:
|
||||
self.err.val_err(_("Graphics device parameter error"), str(e))
|
||||
self.err.val_err(_("Graphics device parameter error"), e)
|
||||
|
||||
def validate_page_sound(self):
|
||||
smodel = self.get_config_sound_model()
|
||||
@@ -1232,7 +1232,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
self._dev = virtinst.VirtualAudio(conn=self.conn.vmm,
|
||||
model=smodel)
|
||||
except Exception, e:
|
||||
return self.err.val_err(_("Sound device parameter error"), str(e))
|
||||
return self.err.val_err(_("Sound device parameter error"), e)
|
||||
|
||||
def validate_page_hostdev(self):
|
||||
ret = self.get_config_host_device_info()
|
||||
@@ -1247,7 +1247,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
conn=self.conn.vmm,
|
||||
name=nodedev_name)
|
||||
except Exception, e:
|
||||
return self.err.val_err(_("Host device parameter error"), str(e))
|
||||
return self.err.val_err(_("Host device parameter error"), e)
|
||||
|
||||
def validate_page_char(self):
|
||||
chartype = self.get_char_type()
|
||||
@@ -1290,7 +1290,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
self._dev.get_xml_config()
|
||||
except Exception, e:
|
||||
return self.err.val_err(_("%s device parameter error") %
|
||||
chartype.capitalize(), str(e))
|
||||
chartype.capitalize(), e)
|
||||
|
||||
def validate_page_video(self):
|
||||
conn = self.conn.vmm
|
||||
@@ -1300,8 +1300,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
self._dev = VirtualVideoDevice(conn=conn)
|
||||
self._dev.model_type = model
|
||||
except Exception, e:
|
||||
return self.err.val_err(_("Video device parameter error"),
|
||||
str(e))
|
||||
return self.err.val_err(_("Video device parameter error"), e)
|
||||
|
||||
def validate_page_watchdog(self):
|
||||
conn = self.conn.vmm
|
||||
@@ -1313,8 +1312,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
self._dev.model = model
|
||||
self._dev.action = action
|
||||
except Exception, e:
|
||||
return self.err.val_err(_("Watchdog parameter error"),
|
||||
str(e))
|
||||
return self.err.val_err(_("Watchdog parameter error"), e)
|
||||
|
||||
def validate_page_filesystem(self):
|
||||
conn = self.conn.vmm
|
||||
@@ -1337,8 +1335,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
if fstype:
|
||||
self._dev.type = fstype
|
||||
except Exception, e:
|
||||
return self.err.val_err(_("Filesystem parameter error"),
|
||||
str(e))
|
||||
return self.err.val_err(_("Filesystem parameter error"), e)
|
||||
|
||||
def validate_page_smartcard(self):
|
||||
conn = self.conn.vmm
|
||||
@@ -1347,8 +1344,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
try:
|
||||
self._dev = VirtualSmartCardDevice(conn, mode)
|
||||
except Exception, e:
|
||||
return self.err.val_err(_("Video device parameter error"),
|
||||
str(e))
|
||||
return self.err.val_err(_("Video device parameter error"), e)
|
||||
|
||||
|
||||
####################
|
||||
|
||||
@@ -99,7 +99,7 @@ class vmmChooseCD(vmmGObjectUI):
|
||||
try:
|
||||
self.disk.path = path
|
||||
except Exception, e:
|
||||
return self.err.val_err(_("Invalid Media Path"), str(e))
|
||||
return self.err.val_err(_("Invalid Media Path"), e)
|
||||
|
||||
uihelpers.check_path_search_for_qemu(self.topwin, self.conn, path)
|
||||
|
||||
|
||||
+20
-20
@@ -1466,7 +1466,7 @@ class vmmCreate(vmmGObjectUI):
|
||||
g = virtinst.Guest(conn=self.conn.vmm)
|
||||
g.name = name
|
||||
except Exception, e:
|
||||
return self.verr(_("Invalid System Name"), str(e))
|
||||
return self.err.val_err(_("Invalid System Name"), e)
|
||||
|
||||
return True
|
||||
|
||||
@@ -1487,7 +1487,8 @@ class vmmCreate(vmmGObjectUI):
|
||||
media = self.get_config_local_media()
|
||||
|
||||
if not media:
|
||||
return self.verr(_("An install media selection is required."))
|
||||
return self.err.val_err(
|
||||
_("An install media selection is required."))
|
||||
|
||||
location = media
|
||||
cdrom = True
|
||||
@@ -1497,7 +1498,7 @@ class vmmCreate(vmmGObjectUI):
|
||||
media, extra, ks = self.get_config_url_info()
|
||||
|
||||
if not media:
|
||||
return self.verr(_("An install tree is required."))
|
||||
return self.err.val_err(_("An install tree is required."))
|
||||
|
||||
location = media
|
||||
|
||||
@@ -1510,21 +1511,22 @@ class vmmCreate(vmmGObjectUI):
|
||||
|
||||
import_path = self.get_config_import_path()
|
||||
if not import_path:
|
||||
return self.verr(_("A storage path to import is required."))
|
||||
return self.err.val_err(
|
||||
_("A storage path to import is required."))
|
||||
|
||||
elif instmethod == INSTALL_PAGE_CONTAINER_APP:
|
||||
instclass = virtinst.ContainerInstaller
|
||||
|
||||
init = self.get_config_container_app_path()
|
||||
if not init:
|
||||
return self.verr(_("An application path is required."))
|
||||
return self.err.val_err(_("An application path is required."))
|
||||
|
||||
elif instmethod == INSTALL_PAGE_CONTAINER_OS:
|
||||
instclass = virtinst.ContainerInstaller
|
||||
|
||||
fs = self.get_config_container_fs_path()
|
||||
if not fs:
|
||||
return self.verr(_("An OS directory path is required."))
|
||||
return self.err.val_err(_("An OS directory path is required."))
|
||||
|
||||
# Build the installer and Guest instance
|
||||
try:
|
||||
@@ -1534,7 +1536,8 @@ class vmmCreate(vmmGObjectUI):
|
||||
if not self.guest:
|
||||
return False
|
||||
except Exception, e:
|
||||
return self.verr(_("Error setting installer parameters."), str(e))
|
||||
return self.err.val_err(
|
||||
_("Error setting installer parameters."), e)
|
||||
|
||||
# Validate media location
|
||||
try:
|
||||
@@ -1562,8 +1565,8 @@ class vmmCreate(vmmGObjectUI):
|
||||
self.guest.add_device(fsdev)
|
||||
|
||||
except Exception, e:
|
||||
return self.verr(_("Error setting install media location."),
|
||||
str(e))
|
||||
return self.err.val_err(
|
||||
_("Error setting install media location."), e)
|
||||
|
||||
# OS distro/variant validation
|
||||
try:
|
||||
@@ -1572,8 +1575,7 @@ class vmmCreate(vmmGObjectUI):
|
||||
if variant and variant != OS_GENERIC:
|
||||
self.guest.os_variant = variant
|
||||
except ValueError, e:
|
||||
return self.err.val_err(_("Error setting OS information."),
|
||||
str(e))
|
||||
return self.err.val_err(_("Error setting OS information."), e)
|
||||
|
||||
# Kind of wonky, run storage validation now, which will assign
|
||||
# the import path. Import installer skips the storage page.
|
||||
@@ -1607,14 +1609,14 @@ class vmmCreate(vmmGObjectUI):
|
||||
try:
|
||||
self.guest.vcpus = int(cpus)
|
||||
except Exception, e:
|
||||
return self.verr(_("Error setting CPUs."), str(e))
|
||||
return self.err.val_err(_("Error setting CPUs."), e)
|
||||
|
||||
# Memory
|
||||
try:
|
||||
self.guest.memory = int(mem)
|
||||
self.guest.maxmemory = int(mem)
|
||||
except Exception, e:
|
||||
return self.verr(_("Error setting guest memory."), str(e))
|
||||
return self.err.val_err(_("Error setting guest memory."), e)
|
||||
|
||||
return True
|
||||
|
||||
@@ -1677,7 +1679,7 @@ class vmmCreate(vmmGObjectUI):
|
||||
diskpath = ideal
|
||||
|
||||
if not diskpath:
|
||||
return self.verr(_("A storage path must be specified."))
|
||||
return self.err.val_err(_("A storage path must be specified."))
|
||||
|
||||
disk = virtinst.VirtualDisk(conn=self.conn.vmm,
|
||||
path=diskpath,
|
||||
@@ -1685,7 +1687,7 @@ class vmmCreate(vmmGObjectUI):
|
||||
sparse=sparse)
|
||||
|
||||
except Exception, e:
|
||||
return self.verr(_("Storage parameter error."), str(e))
|
||||
return self.err.val_err(_("Storage parameter error."), e)
|
||||
|
||||
isfatal, errmsg = disk.is_size_conflict()
|
||||
if not oldguest and not isfatal and errmsg:
|
||||
@@ -1729,8 +1731,9 @@ class vmmCreate(vmmGObjectUI):
|
||||
methname = "URL"
|
||||
|
||||
if methname:
|
||||
return self.verr(_("Network device required for %s install.") %
|
||||
methname)
|
||||
return self.err.val_err(
|
||||
_("Network device required for %s install.") %
|
||||
methname)
|
||||
|
||||
nic = uihelpers.validate_network(self.topwin,
|
||||
self.conn, nettype, devname, macaddr)
|
||||
@@ -2121,9 +2124,6 @@ class vmmCreate(vmmGObjectUI):
|
||||
# No help available yet.
|
||||
pass
|
||||
|
||||
def verr(self, msg, extra=None):
|
||||
return self.err.val_err(msg, extra)
|
||||
|
||||
vmmGObjectUI.type_register(vmmCreate)
|
||||
vmmCreate.signal_new(vmmCreate, "action-show-vm", [str, str])
|
||||
vmmCreate.signal_new(vmmCreate, "action-show-help", [str])
|
||||
|
||||
@@ -997,8 +997,8 @@ class vmmCreateInterface(vmmGObjectUI):
|
||||
|
||||
self.interface = iobj
|
||||
except Exception, e:
|
||||
return self.err.val_err(_("Error setting interface parameters."),
|
||||
str(e))
|
||||
return self.err.val_err(
|
||||
_("Error setting interface parameters."), e)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
@@ -522,7 +522,7 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
self._pool_class = Storage.StoragePool.get_pool_class(typ)
|
||||
self._pool = self._pool_class(name=name, conn=conn)
|
||||
except ValueError, e:
|
||||
return self.err.val_err(_("Pool Parameter Error"), str(e))
|
||||
return self.err.val_err(_("Pool Parameter Error"), e)
|
||||
|
||||
return True
|
||||
|
||||
@@ -547,7 +547,7 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
|
||||
tmppool.get_xml_config()
|
||||
except ValueError, e:
|
||||
return self.err.val_err(_("Pool Parameter Error"), str(e))
|
||||
return self.err.val_err(_("Pool Parameter Error"), e)
|
||||
|
||||
buildval = self.widget("pool-build").get_active()
|
||||
buildsen = (self.widget("pool-build").get_property("sensitive") and
|
||||
|
||||
@@ -255,7 +255,7 @@ class vmmCreateVolume(vmmGObjectUI):
|
||||
if fmt:
|
||||
self.vol.format = fmt
|
||||
except ValueError, e:
|
||||
return self.val_err(_("Volume Parameter Error"), str(e))
|
||||
return self.val_err(_("Volume Parameter Error"), e)
|
||||
return True
|
||||
|
||||
def show_err(self, info, details=None):
|
||||
|
||||
@@ -1669,7 +1669,7 @@ class vmmDetails(vmmGObjectUI):
|
||||
pinstr = self.generate_cpuset()
|
||||
except Exception, e:
|
||||
return self.err.val_err(
|
||||
_("Error generating CPU configuration: %s") % str(e))
|
||||
_("Error generating CPU configuration"), e)
|
||||
|
||||
self.widget("config-vcpupin").set_text("")
|
||||
self.widget("config-vcpupin").set_text(pinstr)
|
||||
@@ -1975,13 +1975,13 @@ class vmmDetails(vmmGObjectUI):
|
||||
vcpu_num = int(row[0])
|
||||
pinlist = virtinst.Guest.cpuset_str_to_tuple(conn.vmm, new_text)
|
||||
except Exception, e:
|
||||
self.err.val_err(_("Error building pin list: %s") % str(e))
|
||||
self.err.val_err(_("Error building pin list"), e)
|
||||
return
|
||||
|
||||
try:
|
||||
self.vm.pin_vcpu(vcpu_num, pinlist)
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error pinning vcpus: %s") % str(e))
|
||||
self.err.show_err(_("Error pinning vcpus"), e)
|
||||
return
|
||||
|
||||
self._refresh_runtime_pinning()
|
||||
|
||||
@@ -106,10 +106,19 @@ class vmmErrorDialog(vmmGObject):
|
||||
sync=not async)
|
||||
|
||||
def val_err(self, text1, text2=None, title=_("Input Error"), async=True):
|
||||
logging.debug("Validation Error: %s" % text1)
|
||||
logtext = "Validation Error: %s" % text1
|
||||
if text2:
|
||||
logtext += " %s" % text2
|
||||
|
||||
if isinstance(text1, Exception) or isinstance(text2, Exception):
|
||||
logging.exception(logtext)
|
||||
else:
|
||||
self._logtrace(logtext)
|
||||
|
||||
dtype = gtk.MESSAGE_ERROR
|
||||
buttons = gtk.BUTTONS_OK
|
||||
self._simple_dialog(dtype, buttons, text1, text2, title, async)
|
||||
self._simple_dialog(dtype, buttons, str(text1), str(text2),
|
||||
str(title), async)
|
||||
return False
|
||||
|
||||
def show_info(self, text1, text2=None, title="", async=True):
|
||||
|
||||
@@ -654,7 +654,7 @@ def validate_network(parent, conn, nettype, devname, macaddr, model=None):
|
||||
macaddr=macaddr,
|
||||
model=model)
|
||||
except Exception, e:
|
||||
return err_dial.val_err(_("Error with network parameters."), str(e))
|
||||
return err_dial.val_err(_("Error with network parameters."), e)
|
||||
|
||||
# Make sure there is no mac address collision
|
||||
isfatal, errmsg = net.is_conflict_net(conn.vmm)
|
||||
|
||||
Reference in New Issue
Block a user