# Log what we found.
        logging.debug("%s: detected operating system: %s %s %d.%d (%s)",
                      prettyvm, typ, distro, major_version, minor_version,
                      product_name)
        logging.debug("hostname: %s", hostname)
        if icon:
            logging.debug("icon: %d bytes", len(icon))
        if apps:
            logging.debug("# apps: %d", len(apps))

        data = vmmInspectionData()
        data.type = str(type)
        data.distro = str(distro)
        data.major_version = int(major_version)
        data.minor_version = int(minor_version)
        data.hostname = str(hostname)
        data.product_name = str(product_name)
        data.product_variant = str(product_variant)
        data.icon = str(icon)
        data.applications = list(apps)

        self._set_vm_inspection_data(vm, data)

    def _set_vm_inspection_data(self, vm, data):
        vm.inspection = data
        vm.inspection_data_updated()
        self._cached_data[vm.get_uuid()] = data


vmmGObject.type_register(vmmInspection)
        # Log what we found.
        logging.debug("%s: detected operating system: %s %s %d.%d (%s)",
                      prettyvm, typ, distro, major_version, minor_version,
                      product_name)
        logging.debug("hostname: %s", hostname)
        if icon:
            logging.debug("icon: %d bytes", len(icon))
        if apps:
            logging.debug("# apps: %d", len(apps))

        data = vmmInspectionData()
        data.type = str(type)
        data.distro = str(distro)
        data.major_version = int(major_version)
        data.minor_version = int(minor_version)
        data.hostname = str(hostname)
        data.product_name = str(product_name)
        data.product_variant = str(product_variant)
        data.icon = str(icon)
        data.applications = list(apps)

        self._set_vm_inspection_data(vm, data)

    def _set_vm_inspection_data(self, vm, data):
        vm.inspection = data
        vm.inspection_data_updated()
        self._cached_data[vm.get_uuid()] = data


vmmGObject.type_register(vmmInspection)
        actions["resume"].set_property("visible", is_paused)

    def run_vm_action(self, ignore, signal_name, uuid):
        uri = None
        for tmpuri, vm_mappings in self.conn_vm_menuitems.items():
            if vm_mappings.get(uuid):
                uri = tmpuri
                break

        if not uri:
            return

        self.emit(signal_name, uri, uuid)

    def exit_app(self, ignore):
        self.emit("action-exit-app")


vmmGObject.type_register(vmmSystray)
vmmSystray.signal_new(vmmSystray, "action-toggle-manager", [])
vmmSystray.signal_new(vmmSystray, "action-view-manager", [])
vmmSystray.signal_new(vmmSystray, "action-suspend-domain", [str, str])
vmmSystray.signal_new(vmmSystray, "action-resume-domain", [str, str])
vmmSystray.signal_new(vmmSystray, "action-run-domain", [str, str])
vmmSystray.signal_new(vmmSystray, "action-shutdown-domain", [str, str])
vmmSystray.signal_new(vmmSystray, "action-reboot-domain", [str, str])
vmmSystray.signal_new(vmmSystray, "action-destroy-domain", [str, str])
vmmSystray.signal_new(vmmSystray, "action-show-host", [str])
vmmSystray.signal_new(vmmSystray, "action-show-vm", [str, str])
vmmSystray.signal_new(vmmSystray, "action-exit-app", [])
        def reboot_cb():
            no_support = False
            reboot_err = None
            try:
                vm.reboot()
            except Exception, reboot_err:
                no_support = virtinst.support.is_error_nosupport(reboot_err)
                if not no_support:
                    raise RuntimeError(_("Error rebooting domain: %s" % str(reboot_err)))

            if not no_support:
                return

            # Reboot isn't supported. Let's try to emulate it
            logging.debug("Hypervisor doesn't support reboot, let's fake it")
            try:
                vm.manual_reboot()
            except:
                logging.exception("Could not fake a reboot")

                # Raise the original error message
                raise RuntimeError(_("Error rebooting domain: %s" % str(reboot_err)))

        vmmAsyncJob.simple_async_noshow(reboot_cb, [], src, "")


vmmGObject.type_register(vmmEngine)
vmmEngine.signal_new(vmmEngine, "conn-added", [object])
vmmEngine.signal_new(vmmEngine, "conn-removed", [str])
    def _xml_to_redefine(self):
        return _sanitize_xml(self.get_xml(inactive=True))

    def _redefine_helper(self, origxml, newxml):
        origxml = _sanitize_xml(origxml)
        newxml  = _sanitize_xml(newxml)
        if origxml != newxml:
            diff = "".join(difflib.unified_diff(origxml.splitlines(1),
                                                newxml.splitlines(1),
                                                fromfile="Original XML",
                                                tofile="New XML"))
            logging.debug("Redefining '%s' with XML diff:\n%s",
                          self.get_name(), diff)

            self._define(newxml)
        else:
            logging.debug("Redefine requested, but XML didn't change!")

        # Make sure we have latest XML
        self.refresh_xml(forcesignal=True)
        return

    def _redefine_xml(self, newxml):
        origxml = self._xml_to_redefine()
        return self._redefine_helper(origxml, newxml)


vmmGObject.signal_new(vmmLibvirtObject, "config-changed", [])

vmmGObject.type_register(vmmLibvirtObject)
Example #6
0
        vmmGObject.__init__(self)

        self.name = name
        self.mac = mac
        self.shared = is_shared
        self.bridge = bridge

        # Used for HAL backend population
        self.hal_path = hal_path

    def _cleanup(self):
        pass

    def get_name(self):
        return self.name

    def is_shared(self):
        return self.shared

    def get_bridge(self):
        return self.bridge

    def get_mac(self):
        return self.mac

    def get_hal_path(self):
        return self.hal_path


vmmGObject.type_register(vmmNetDevice)
Example #7
0
            return

        if (time.time() - self.last_tick) < MEDIA_TIMEOUT:
            return
        self.last_tick = time.time()

        try:
            self.nodedev_obj.refresh_xml()
            xml = self.nodedev_obj.get_xml()
        except:
            # Assume the device was removed
            return

        try:
            vobj = virtinst.NodeDeviceParser.parse(xml)
            has_media = vobj.media_available
        except:
            logging.exception("Node device CDROM polling failed")
            return

        if has_media == self.has_media():
            return

        self.set_media(has_media, None, None)
        self.idle_emit(has_media and "media-added" or "media-removed")


vmmGObject.type_register(vmmMediaDevice)
vmmMediaDevice.signal_new(vmmMediaDevice, "media-added", [])
vmmMediaDevice.signal_new(vmmMediaDevice, "media-removed", [])
Example #8
0
        chkbox = None
        res = None

        # Hide starting widgets
        self.hide()
        self.buf_expander.hide()
        for c in self.chk_vbox.get_children():
            self.chk_vbox.remove(c)

        if details:
            self.buffer.set_text(details)
            title = title or ""
            self.buf_expander.show()

        if chktext:
            chkbox = gtk.CheckButton(chktext)
            self.chk_vbox.add(chkbox)
            chkbox.show()

        res = _launch_dialog(self,
                             primary_text, secondary_text or "",
                             title,
                             sync=sync)

        if chktext:
            res = [res, chkbox.get_active()]

        return res

vmmGObject.type_register(vmmErrorDialog)
        actions["resume"].set_property("visible", is_paused)

    def run_vm_action(self, ignore, signal_name, uuid):
        uri = None
        for tmpuri, vm_mappings in self.conn_vm_menuitems.items():
            if vm_mappings.get(uuid):
                uri = tmpuri
                break

        if not uri:
            return

        self.emit(signal_name, uri, uuid)

    def exit_app(self, ignore):
        self.emit("action-exit-app")


vmmGObject.type_register(vmmSystray)
vmmSystray.signal_new(vmmSystray, "action-toggle-manager", [])
vmmSystray.signal_new(vmmSystray, "action-view-manager", [])
vmmSystray.signal_new(vmmSystray, "action-suspend-domain", [str, str])
vmmSystray.signal_new(vmmSystray, "action-resume-domain", [str, str])
vmmSystray.signal_new(vmmSystray, "action-run-domain", [str, str])
vmmSystray.signal_new(vmmSystray, "action-shutdown-domain", [str, str])
vmmSystray.signal_new(vmmSystray, "action-reboot-domain", [str, str])
vmmSystray.signal_new(vmmSystray, "action-destroy-domain", [str, str])
vmmSystray.signal_new(vmmSystray, "action-show-host", [str])
vmmSystray.signal_new(vmmSystray, "action-show-vm", [str, str])
vmmSystray.signal_new(vmmSystray, "action-exit-app", [])
    def __init__(self, name, mac, is_shared, bridge=None, hal_path=None):
        vmmGObject.__init__(self)

        self.name = name
        self.mac = mac
        self.shared = is_shared
        self.bridge = bridge

        # Used for HAL backend population
        self.hal_path = hal_path

    def _cleanup(self):
        pass

    def get_name(self):
        return self.name

    def is_shared(self):
        return self.shared

    def get_bridge(self):
        return self.bridge

    def get_mac(self):
        return self.mac

    def get_hal_path(self):
        return self.hal_path

vmmGObject.type_register(vmmNetDevice)
Example #11
0
        def reboot_cb():
            no_support = False
            reboot_err = None
            try:
                vm.reboot()
            except Exception, reboot_err:
                no_support = virtinst.support.is_error_nosupport(reboot_err)
                if not no_support:
                    raise RuntimeError(
                        _("Error rebooting domain: %s" % str(reboot_err)))

            if not no_support:
                return

            # Reboot isn't supported. Let's try to emulate it
            logging.debug("Hypervisor doesn't support reboot, let's fake it")
            try:
                vm.manual_reboot()
            except:
                logging.exception("Could not fake a reboot")

                # Raise the original error message
                raise RuntimeError(
                    _("Error rebooting domain: %s" % str(reboot_err)))

        vmmAsyncJob.simple_async_noshow(reboot_cb, [], src, "")

vmmGObject.type_register(vmmEngine)
vmmEngine.signal_new(vmmEngine, "conn-added", [object])
vmmEngine.signal_new(vmmEngine, "conn-removed", [str])
            return

        if (time.time() - self.last_tick) < MEDIA_TIMEOUT:
            return
        self.last_tick = time.time()

        try:
            self.nodedev_obj.refresh_xml()
            xml = self.nodedev_obj.get_xml()
        except:
            # Assume the device was removed
            return

        try:
            vobj = virtinst.NodeDeviceParser.parse(xml)
            has_media = vobj.media_available
        except:
            logging.exception("Node device CDROM polling failed")
            return

        if has_media == self.has_media():
            return

        self.set_media(has_media, None, None)
        self.idle_emit(has_media and "media-added" or "media-removed")


vmmGObject.type_register(vmmMediaDevice)
vmmMediaDevice.signal_new(vmmMediaDevice, "media-added", [])
vmmMediaDevice.signal_new(vmmMediaDevice, "media-removed", [])
Example #13
0
        return _sanitize_xml(self.get_xml(inactive=True))

    def _redefine_helper(self, origxml, newxml):
        origxml = _sanitize_xml(origxml)
        newxml  = _sanitize_xml(newxml)
        if origxml != newxml:
        	#unified_diff->For two lists of strings, return a delta in unified diff format.
            diff = "".join(difflib.unified_diff(origxml.splitlines(1),
                                                newxml.splitlines(1),
                                                fromfile="Original XML",
                                                tofile="New XML"))
            logging.debug("Redefining '%s' with XML diff:\n%s",
                          self.get_name(), diff)

            self._define(newxml)
        else:
            logging.debug("Redefine requested, but XML didn't change!")

        # Make sure we have latest XML
        self.refresh_xml(forcesignal=True)
        return

    def _redefine_xml(self, newxml):
        origxml = self._xml_to_redefine()
        return self._redefine_helper(origxml, newxml)


vmmGObject.signal_new(vmmLibvirtObject, "config-changed", [])

vmmGObject.type_register(vmmLibvirtObject)