From 5ac2fe7fe4f6eac6da3ef49837b2fab26cad85cd Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Tue, 27 Feb 2018 12:29:52 -0500 Subject: [PATCH] libvirtenummap: Absorb similar functionality from domain.py For mapping state enums to string names and other similar bits --- virtManager/domain.py | 98 ++++------------------------------- virtManager/libvirtenummap.py | 82 +++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 88 deletions(-) diff --git a/virtManager/domain.py b/virtManager/domain.py index 6d3dac2da..1c3f54510 100644 --- a/virtManager/domain.py +++ b/virtManager/domain.py @@ -35,20 +35,7 @@ from virtinst import VirtualController from virtinst import VirtualDisk from .libvirtobject import vmmLibvirtObject - -if not hasattr(libvirt, "VIR_DOMAIN_PMSUSPENDED"): - setattr(libvirt, "VIR_DOMAIN_PMSUSPENDED", 7) - -vm_status_icons = { - libvirt.VIR_DOMAIN_BLOCKED: "state_running", - libvirt.VIR_DOMAIN_CRASHED: "state_shutoff", - libvirt.VIR_DOMAIN_PAUSED: "state_paused", - libvirt.VIR_DOMAIN_RUNNING: "state_running", - libvirt.VIR_DOMAIN_SHUTDOWN: "state_shutoff", - libvirt.VIR_DOMAIN_SHUTOFF: "state_shutoff", - libvirt.VIR_DOMAIN_NOSTATE: "state_running", - libvirt.VIR_DOMAIN_PMSUSPENDED: "state_paused", -} +from .libvirtenummap import LibvirtEnumMap class _SENTINEL(object): @@ -204,13 +191,13 @@ class vmmDomainSnapshot(vmmLibvirtObject): def run_status(self): status = DomainSnapshot.state_str_to_int(self.get_xmlobj().state) - return vmmDomain.pretty_run_status(status) + return LibvirtEnumMap.pretty_run_status(status, False) def run_status_icon_name(self): status = DomainSnapshot.state_str_to_int(self.get_xmlobj().state) - if status not in vm_status_icons: + if status not in LibvirtEnumMap.VM_STATUS_ICONS: logging.debug("Unknown status %d, using NOSTATE", status) status = libvirt.VIR_DOMAIN_NOSTATE - return vm_status_icons[status] + return LibvirtEnumMap.VM_STATUS_ICONS[status] def is_current(self): return self._backend.isCurrent() @@ -234,73 +221,6 @@ class vmmDomain(vmmLibvirtObject): "pre-startup": (GObject.SignalFlags.RUN_FIRST, None, [object]), } - @staticmethod - def pretty_run_status(status, has_saved=False): - if status == libvirt.VIR_DOMAIN_RUNNING: - return _("Running") - elif status == libvirt.VIR_DOMAIN_PAUSED: - return _("Paused") - elif status == libvirt.VIR_DOMAIN_SHUTDOWN: - return _("Shutting Down") - elif status == libvirt.VIR_DOMAIN_SHUTOFF: - if has_saved: - return _("Saved") - else: - return _("Shutoff") - elif status == libvirt.VIR_DOMAIN_CRASHED: - return _("Crashed") - elif status == libvirt.VIR_DOMAIN_PMSUSPENDED: - return _("Suspended") - - logging.debug("Unknown status %s, returning 'Unknown'", status) - return _("Unknown") - - @staticmethod - def pretty_status_reason(status, reason): - def key(x, y): - return getattr(libvirt, "VIR_DOMAIN_" + x, y) - reasons = { - libvirt.VIR_DOMAIN_RUNNING: { - key("RUNNING_BOOTED", 1): _("Booted"), - key("RUNNING_MIGRATED", 2): _("Migrated"), - key("RUNNING_RESTORED", 3): _("Restored"), - key("RUNNING_FROM_SNAPSHOT", 4): _("From snapshot"), - key("RUNNING_UNPAUSED", 5): _("Unpaused"), - key("RUNNING_MIGRATION_CANCELED", 6): _("Migration canceled"), - key("RUNNING_SAVE_CANCELED", 7): _("Save canceled"), - key("RUNNING_WAKEUP", 8): _("Event wakeup"), - key("RUNNING_CRASHED", 9): _("Crashed"), - }, - libvirt.VIR_DOMAIN_PAUSED: { - key("PAUSED_USER", 1): _("User"), - key("PAUSED_MIGRATION", 2): _("Migrating"), - key("PAUSED_SAVE", 3): _("Saving"), - key("PAUSED_DUMP", 4): _("Dumping"), - key("PAUSED_IOERROR", 5): _("I/O error"), - key("PAUSED_WATCHDOG", 6): _("Watchdog"), - key("PAUSED_FROM_SNAPSHOT", 7): _("From snapshot"), - key("PAUSED_SHUTTING_DOWN", 8): _("Shutting down"), - key("PAUSED_SNAPSHOT", 9): _("Creating snapshot"), - key("PAUSED_CRASHED", 10): _("Crashed"), - }, - libvirt.VIR_DOMAIN_SHUTDOWN: { - key("SHUTDOWN_USER", 1): _("User"), - }, - libvirt.VIR_DOMAIN_SHUTOFF: { - key("SHUTOFF_SHUTDOWN", 1): _("Shut Down"), - key("SHUTOFF_DESTROYED", 2): _("Destroyed"), - key("SHUTOFF_CRASHED", 3): _("Crashed"), - key("SHUTOFF_MIGRATED", 4): _("Migrated"), - key("SHUTOFF_SAVED", 5): _("Saved"), - key("SHUTOFF_FAILED", 6): _("Failed"), - key("SHUTOFF_FROM_SNAPSHOT", 7): _("From snapshot"), - }, - libvirt.VIR_DOMAIN_CRASHED: { - key("CRASHED_PANICKED", 1): _("Panicked"), - } - } - return reasons.get(status) and reasons[status].get(reason) - def __init__(self, conn, backend, key): vmmLibvirtObject.__init__(self, conn, backend, key, Guest) @@ -1776,17 +1696,19 @@ class vmmDomain(vmmLibvirtObject): libvirt.VIR_DOMAIN_PMSUSPENDED] def run_status(self): - return self.pretty_run_status(self.status(), self.has_managed_save()) + return LibvirtEnumMap.pretty_run_status( + self.status(), self.has_managed_save()) def run_status_reason(self): - return self.pretty_status_reason(self.status(), self.status_reason()) + return LibvirtEnumMap.pretty_status_reason( + self.status(), self.status_reason()) def run_status_icon_name(self): status = self.status() - if status not in vm_status_icons: + if status not in LibvirtEnumMap.VM_STATUS_ICONS: logging.debug("Unknown status %s, using NOSTATE", status) status = libvirt.VIR_DOMAIN_NOSTATE - return vm_status_icons[status] + return LibvirtEnumMap.VM_STATUS_ICONS[status] def inspection_data_updated(self): self.idle_emit("inspection-changed") diff --git a/virtManager/libvirtenummap.py b/virtManager/libvirtenummap.py index 2c58d54c4..3bc215777 100644 --- a/virtManager/libvirtenummap.py +++ b/virtManager/libvirtenummap.py @@ -22,6 +22,10 @@ import re import libvirt +if not hasattr(libvirt, "VIR_DOMAIN_PMSUSPENDED"): + setattr(libvirt, "VIR_DOMAIN_PMSUSPENDED", 7) + + class _LibvirtEnumMap(object): """ Helper for mapping libvirt event int values to their API names @@ -61,6 +65,84 @@ class _LibvirtEnumMap(object): "VIR_DOMAIN_EVENT_CRASHED": "VIR_DOMAIN_EVENT_CRASHED_", } + VM_STATUS_ICONS = { + libvirt.VIR_DOMAIN_BLOCKED: "state_running", + libvirt.VIR_DOMAIN_CRASHED: "state_shutoff", + libvirt.VIR_DOMAIN_PAUSED: "state_paused", + libvirt.VIR_DOMAIN_RUNNING: "state_running", + libvirt.VIR_DOMAIN_SHUTDOWN: "state_shutoff", + libvirt.VIR_DOMAIN_SHUTOFF: "state_shutoff", + libvirt.VIR_DOMAIN_NOSTATE: "state_running", + libvirt.VIR_DOMAIN_PMSUSPENDED: "state_paused", + } + + @staticmethod + def pretty_run_status(status, has_managed_save): + if status == libvirt.VIR_DOMAIN_RUNNING: + return _("Running") + elif status == libvirt.VIR_DOMAIN_PAUSED: + return _("Paused") + elif status == libvirt.VIR_DOMAIN_SHUTDOWN: + return _("Shutting Down") + elif status == libvirt.VIR_DOMAIN_SHUTOFF: + if has_managed_save: + return _("Saved") + else: + return _("Shutoff") + elif status == libvirt.VIR_DOMAIN_CRASHED: + return _("Crashed") + elif status == libvirt.VIR_DOMAIN_PMSUSPENDED: + return _("Suspended") + + logging.debug("Unknown status %s, returning 'Unknown'", status) + return _("Unknown") + + @staticmethod + def pretty_status_reason(status, reason): + def key(x, y): + return getattr(libvirt, "VIR_DOMAIN_" + x, y) + reasons = { + libvirt.VIR_DOMAIN_RUNNING: { + key("RUNNING_BOOTED", 1): _("Booted"), + key("RUNNING_MIGRATED", 2): _("Migrated"), + key("RUNNING_RESTORED", 3): _("Restored"), + key("RUNNING_FROM_SNAPSHOT", 4): _("From snapshot"), + key("RUNNING_UNPAUSED", 5): _("Unpaused"), + key("RUNNING_MIGRATION_CANCELED", 6): _("Migration canceled"), + key("RUNNING_SAVE_CANCELED", 7): _("Save canceled"), + key("RUNNING_WAKEUP", 8): _("Event wakeup"), + key("RUNNING_CRASHED", 9): _("Crashed"), + }, + libvirt.VIR_DOMAIN_PAUSED: { + key("PAUSED_USER", 1): _("User"), + key("PAUSED_MIGRATION", 2): _("Migrating"), + key("PAUSED_SAVE", 3): _("Saving"), + key("PAUSED_DUMP", 4): _("Dumping"), + key("PAUSED_IOERROR", 5): _("I/O error"), + key("PAUSED_WATCHDOG", 6): _("Watchdog"), + key("PAUSED_FROM_SNAPSHOT", 7): _("From snapshot"), + key("PAUSED_SHUTTING_DOWN", 8): _("Shutting down"), + key("PAUSED_SNAPSHOT", 9): _("Creating snapshot"), + key("PAUSED_CRASHED", 10): _("Crashed"), + }, + libvirt.VIR_DOMAIN_SHUTDOWN: { + key("SHUTDOWN_USER", 1): _("User"), + }, + libvirt.VIR_DOMAIN_SHUTOFF: { + key("SHUTOFF_SHUTDOWN", 1): _("Shut Down"), + key("SHUTOFF_DESTROYED", 2): _("Destroyed"), + key("SHUTOFF_CRASHED", 3): _("Crashed"), + key("SHUTOFF_MIGRATED", 4): _("Migrated"), + key("SHUTOFF_SAVED", 5): _("Saved"), + key("SHUTOFF_FAILED", 6): _("Failed"), + key("SHUTOFF_FROM_SNAPSHOT", 7): _("From snapshot"), + }, + libvirt.VIR_DOMAIN_CRASHED: { + key("CRASHED_PANICKED", 1): _("Panicked"), + } + } + return reasons.get(status) and reasons[status].get(reason) + def __init__(self): self._mapping = {}