mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
delete: Code cleanups
* Comment the individual classes * Move abstract methods to their own logical section * Simplify some shared code calls Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
parent
1a9e2f4f76
commit
03a6272f81
@ -31,6 +31,9 @@ STORAGE_ROW_TOOLTIP = 7
|
|||||||
|
|
||||||
|
|
||||||
class _vmmDeleteBase(vmmGObjectUI):
|
class _vmmDeleteBase(vmmGObjectUI):
|
||||||
|
"""
|
||||||
|
Base class for both types of VM/device storage deleting wizards
|
||||||
|
"""
|
||||||
@classmethod
|
@classmethod
|
||||||
def show_instance(cls, parentobj, vm):
|
def show_instance(cls, parentobj, vm):
|
||||||
try:
|
try:
|
||||||
@ -56,39 +59,6 @@ class _vmmDeleteBase(vmmGObjectUI):
|
|||||||
|
|
||||||
self._init_state()
|
self._init_state()
|
||||||
|
|
||||||
def _get_dialog_title(self):
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
def _get_disk_datas(self):
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
def _get_title_text(self, devs):
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
def _vm_active_status(self):
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
def _delete_vm(self, vm):
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
def _remove_device(self, paths):
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
def _delete_disks(self, vm, paths, conn, meter):
|
|
||||||
storage_errors = []
|
|
||||||
for path in paths:
|
|
||||||
try:
|
|
||||||
log.debug("Deleting path: %s", path)
|
|
||||||
meter.start(text=_("Deleting path '%s'") % path)
|
|
||||||
self._async_delete_dev(vm, conn, path, meter)
|
|
||||||
except Exception as e:
|
|
||||||
storage_errors.append((str(e),
|
|
||||||
"".join(traceback.format_exc())))
|
|
||||||
meter.end(0)
|
|
||||||
return storage_errors
|
|
||||||
|
|
||||||
def _destroy_vm(self, vm):
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
def _init_state(self):
|
def _init_state(self):
|
||||||
blue = Gdk.Color.parse("#0072A8")[1]
|
blue = Gdk.Color.parse("#0072A8")[1]
|
||||||
@ -114,7 +84,6 @@ class _vmmDeleteBase(vmmGObjectUI):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
# Initialization methods #
|
# Initialization methods #
|
||||||
##########################
|
##########################
|
||||||
@ -228,7 +197,7 @@ class _vmmDeleteBase(vmmGObjectUI):
|
|||||||
|
|
||||||
conn = vm.conn.get_backend()
|
conn = vm.conn.get_backend()
|
||||||
meter = asyncjob.get_meter()
|
meter = asyncjob.get_meter()
|
||||||
storage_errors = self._delete_disks(vm, paths, conn, meter)
|
storage_errors = self._async_delete_paths(paths, conn, meter)
|
||||||
|
|
||||||
self._delete_vm(vm)
|
self._delete_vm(vm)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -259,29 +228,56 @@ class _vmmDeleteBase(vmmGObjectUI):
|
|||||||
asyncjob.set_error(error, details)
|
asyncjob.set_error(error, details)
|
||||||
vm.conn.schedule_priority_tick(pollvm=True)
|
vm.conn.schedule_priority_tick(pollvm=True)
|
||||||
|
|
||||||
def _async_delete_dev(self, vm, conn, path, ignore):
|
def _async_delete_paths(self, paths, conn, meter):
|
||||||
vol = None
|
storage_errors = []
|
||||||
|
for path in paths:
|
||||||
|
try:
|
||||||
|
log.debug("Deleting path: %s", path)
|
||||||
|
meter.start(text=_("Deleting path '%s'") % path)
|
||||||
|
self._async_delete_path(conn, path, meter)
|
||||||
|
except Exception as e:
|
||||||
|
storage_errors.append((str(e),
|
||||||
|
"".join(traceback.format_exc())))
|
||||||
|
meter.end(0)
|
||||||
|
return storage_errors
|
||||||
|
|
||||||
|
def _async_delete_path(self, conn, path, ignore):
|
||||||
try:
|
try:
|
||||||
vol = conn.storageVolLookupByPath(path)
|
vol = conn.storageVolLookupByPath(path)
|
||||||
except Exception:
|
except Exception:
|
||||||
|
vol = None
|
||||||
log.debug("Path '%s' is not managed. Deleting locally", path)
|
log.debug("Path '%s' is not managed. Deleting locally", path)
|
||||||
|
|
||||||
if vol:
|
if vol:
|
||||||
vol.delete(0)
|
vol.delete(0)
|
||||||
else:
|
else:
|
||||||
os.unlink(path)
|
os.unlink(path)
|
||||||
self._async_delete_xmldev(vm, path, ignore)
|
|
||||||
|
|
||||||
def _async_delete_xmldev(self, vm, path, ignore):
|
|
||||||
for d in vm.xmlobj.devices.disk:
|
################
|
||||||
if d.path == path:
|
# Subclass API #
|
||||||
dev = d
|
################
|
||||||
break
|
|
||||||
vm.remove_device(dev)
|
def _get_dialog_title(self):
|
||||||
|
raise NotImplementedError
|
||||||
|
def _get_disk_datas(self):
|
||||||
|
raise NotImplementedError
|
||||||
|
def _get_title_text(self, devs):
|
||||||
|
raise NotImplementedError
|
||||||
|
def _vm_active_status(self):
|
||||||
|
raise NotImplementedError
|
||||||
|
def _delete_vm(self, vm):
|
||||||
|
raise NotImplementedError
|
||||||
|
def _remove_device(self, paths):
|
||||||
|
raise NotImplementedError
|
||||||
|
def _destroy_vm(self, vm):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
class vmmDeleteDialog(_vmmDeleteBase):
|
class vmmDeleteDialog(_vmmDeleteBase):
|
||||||
|
"""
|
||||||
|
Dialog for deleting a VM and optionally its storage
|
||||||
|
"""
|
||||||
def _get_dialog_title(self):
|
def _get_dialog_title(self):
|
||||||
return self.vm.get_name()
|
return self.vm.get_name()
|
||||||
|
|
||||||
@ -318,6 +314,10 @@ class vmmDeleteDialog(_vmmDeleteBase):
|
|||||||
|
|
||||||
|
|
||||||
class vmmDeleteStorage(_vmmDeleteBase):
|
class vmmDeleteStorage(_vmmDeleteBase):
|
||||||
|
"""
|
||||||
|
Dialog for removing a disk device from a VM and optionally deleting
|
||||||
|
its storage
|
||||||
|
"""
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def remove_devobj_internal(vm, err, devobj, deleting_storage=False):
|
def remove_devobj_internal(vm, err, devobj, deleting_storage=False):
|
||||||
log.debug("Removing device: %s", devobj)
|
log.debug("Removing device: %s", devobj)
|
||||||
@ -379,12 +379,6 @@ class vmmDeleteStorage(_vmmDeleteBase):
|
|||||||
def _delete_vm(self, vm):
|
def _delete_vm(self, vm):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def _delete_disks(self, vm, paths, conn, meter):
|
|
||||||
storage_errors = []
|
|
||||||
if paths:
|
|
||||||
super()._delete_disks(vm, paths, conn, meter)
|
|
||||||
return storage_errors
|
|
||||||
|
|
||||||
def _destroy_vm(self, vm):
|
def _destroy_vm(self, vm):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user