Exemplo n.º 1
0
class KdumpSpoke(EditTUISpoke):
    title = N_("Kdump")
    category = "system"

    edit_fields = [
        Entry("Enable kdump", "enabled", EditTUISpoke.CHECK, True),
        Entry("Reserve amount", "reserveMB", RESERVE_VALID,
              lambda self, args: args.enabled)
    ]

    def __init__(self, app, data, storage, payload, instclass):
        if getOS() == "fedora":
            KdumpSpoke.edit_fields = [
                Entry("Enable kdump", "enabled", EditTUISpoke.CHECK, True),
                Entry("Reserve amount", "reserveMB", FEDORA_RESERVE_VALID,
                      lambda self, args: args.enabled)
            ]

        EditTUISpoke.__init__(self, app, data, storage, payload, instclass)
        self.args = self.data.addons.com_redhat_kdump

    def apply(self):
        pass

    @property
    def completed(self):
        return True

    @property
    def status(self):
        if self.args.enabled:
            state = _("Kdump is enabled")
        else:
            state = _("Kdump is disabled")
        return state
Exemplo n.º 2
0
class KdumpSpoke(EditTUISpoke):
    title = N_("Kdump")
    category = SystemCategory
    lower, upper ,_step = getMemoryBounds()
    edit_fields = [
        Entry("Enable kdump", "enabled", EditTUISpoke.CHECK, True),
        Entry("Enable dump mode fadump", "enablefadump", EditTUISpoke.CHECK, os.path.exists(FADUMP_CAPABLE_FILE) and (lambda self,args: args.enabled)),
        Entry("Reserve amount (%d - %d MB)" % (lower, upper), "reserveMB", RESERVE_VALID, lambda self,args: args.enabled)
        ]

    @classmethod
    def should_run(cls, environment, data):
        # the KdumpSpoke should run only if requested
        return flags.cmdline.getbool("kdump_addon", default=False)

    def __init__(self, app, data, storage, payload, instclass):
        EditTUISpoke.__init__(self, app, data, storage, payload, instclass)
        self.args = self.data.addons.com_redhat_kdump

    def apply(self):
        pass

    @property
    def completed(self):
        return True

    @property
    def status(self):
        if self.args.enabled:
            state = _("Kdump is enabled")
        else:
            state = _("Kdump is disabled")
        return state
Exemplo n.º 3
0
    def __init__(self, data, storage, payload, instclass):
        super().__init__(data, storage, payload, instclass)
        self.title = N_("Kdump")
        self._addon_data = self.data.addons.com_redhat_kdump

        self._lower, self._upper, self._step = getMemoryBounds()
        # Allow a string of digits optionally followed by 'M'
        self._reserve_check_re = re.compile(r'^(\d+M?)$')

        self._container = None
Exemplo n.º 4
0
    def __init__(self, *args):
        super().__init__(*args)
        self.title = N_("Kdump")
        self._addon_data = self.data.addons.com_redhat_kdump

        self._lower, self._upper, self._step = getMemoryBounds()
        # Allow either "auto" or a string of digits optionally followed by 'M'
        self._reserve_check_re = re.compile(r'^((auto)|(\d+M?))$')

        self._container = None
Exemplo n.º 5
0
    def __init__(self, *args):
        super().__init__(*args)
        self.title = N_("Kdump")
        self._container = None

        self._lower, self._upper, self._step = getMemoryBounds()
        # Allow a string of digits optionally followed by 'M'
        self._reserve_check_re = re.compile(r'^(\d+M?)$')

        self._proxy = KDUMP.get_proxy()
Exemplo n.º 6
0
class KdumpSpoke(NormalSpoke):
    """Kdump configuration spoke"""

    builderObjects = ["KdumpWindow", "advancedConfigBuffer"]
    mainWidgetName = "KdumpWindow"
    uiFile = "kdump.glade"
    helpFile = "KdumpSpoke.xml"
    translationDomain = "kdump-anaconda-addon"

    icon = "kdump"
    title = N_("_KDUMP")
    category = SystemCategory

    @classmethod
    def should_run(cls, environment, data):
        return is_module_available(KDUMP)

    def __init__(self, *args):
        NormalSpoke.__init__(self, *args)
        self._reserveMem = 0
        self._proxy = KDUMP.get_proxy()

    def initialize(self):
        NormalSpoke.initialize(self)
        self._enableButton = self.builder.get_object("enableKdumpCheck")
        self._fadumpButton = self.builder.get_object("fadumpCheck")
        if os.path.exists(FADUMP_CAPABLE_FILE):
            self._fadumpButton.show()
        else:
            self._fadumpButton.hide()
        self._toBeReservedLabel = self.builder.get_object("toBeReservedLabel")
        self._toBeReservedSpin = self.builder.get_object("toBeReservedSpin")
        self._totalMemLabel = self.builder.get_object("totalMemLabel")
        self._totalMemMB = self.builder.get_object("totalMemMB")
        self._usableMemLabel = self.builder.get_object("usableMemLabel")
        self._usableMemMB = self.builder.get_object("usableMemMB")

        # Set an initial value and adjustment on the spin button
        lower, upper, step = getMemoryBounds()
        adjustment = Gtk.Adjustment(lower, lower, upper, step, step, 0)
        self._toBeReservedSpin.set_adjustment(adjustment)
        self._toBeReservedSpin.set_value(lower)

    def refresh(self):
        # If a reserve amount is requested, set it in the spin button
        # Strip the trailing 'M'
        reserveMB = self._proxy.ReservedMemory
        if reserveMB and reserveMB[-1] == 'M':
            reserveMB = reserveMB[:-1]
        if reserveMB:
            self._toBeReservedSpin.set_value(int(reserveMB))

        # Set the various labels. Use the spin button signal handler to set the
        # usable memory label once the other two have been set.
        self._totalMemMB.set_text("%d" % getTotalMemory())
        self._toBeReservedSpin.emit("value-changed")

        # Set the states on the toggle buttons and let the signal handlers set
        # the sensitivities on the related widgets. Set the radio button first,
        # since the radio buttons' bailiwick is a subset of that of the
        # enable/disable checkbox.
        if self._proxy.KdumpEnabled:
            self._enableButton.set_active(True)
        else:
            self._enableButton.set_active(False)

        _fadump = self._proxy.FadumpEnabled
        self._fadumpButton.set_active(_fadump)
        # Force a toggled signal on the button in case it's state has not changed
        self._enableButton.emit("toggled")

    def apply(self):
        # Copy the GUI state into the AddonData object
        self._proxy.KdumpEnabled = self._enableButton.get_active()
        self._proxy.ReservedMemory = "%dM" % self._toBeReservedSpin.get_value_as_int(
        )
        self._proxy.FadumpEnabled = self._fadumpButton.get_active()

    @property
    def ready(self):
        return True

    @property
    def completed(self):
        # Always treat as completed
        return True

    @property
    def mandatory(self):
        return False

    @property
    def status(self):
        if self._proxy.KdumpEnabled:
            state = _("Kdump is enabled")
        else:
            state = _("Kdump is disabled")

        return state

    # SIGNAL HANDLERS
    def on_enable_kdump_toggled(self, checkbutton, user_data=None):
        status = checkbutton.get_active()
        # If disabling, set everything to insensitve. Otherwise, only set the radio
        # button and currently reserved widgets to sensitive and then fake a
        # toggle event on the radio button to set the state on the reserve
        # amount spin button and total/usable mem display.
        fancy_set_sensitive(self._toBeReservedSpin, status)
        self._totalMemLabel.set_sensitive(status)
        self._totalMemMB.set_sensitive(status)
        self._usableMemLabel.set_sensitive(status)
        self._usableMemMB.set_sensitive(status)
        self._fadumpButton.set_sensitive(status)
        if not status:
            self._fadumpButton.set_active(False)

    def on_enable_fadump_toggled(self, checkbutton, user_data=None):
        if self._enableButton.get_active():
            self.enablefadump = self._fadumpButton.get_active()
        else:
            self._fadumpButton.set_active(False)

    def on_reserved_value_changed(self, spinbutton, user_data=None):
        reserveMem = spinbutton.get_value_as_int()
        totalMemText = self._totalMemMB.get_text()

        # If no total memory is available yet, do nothing
        if totalMemText:
            totalMem = int(self._totalMemMB.get_text())
            self._usableMemMB.set_text("%d" % (totalMem - reserveMem))
Exemplo n.º 7
0
class KdumpSpoke(NormalSpoke):
    """Kdump configuration spoke"""

    builderObjects = ["KdumpWindow", "advancedConfigBuffer"]
    mainWidgetName = "KdumpWindow"
    uiFile = "RHEL.glade"
    translationDomain = "kdump-anaconda-addon"

    icon = "computer-fail-symbolic"
    title = N_("KDUMP")
    category = SystemCategory
    OS = "redhat"

    def __init__(self, data, storage, payload, instclass):
        KdumpSpoke.OS = getOS()
        if KdumpSpoke.OS == "fedora":
            KdumpSpoke.uiFile = "fedora.glade"
        NormalSpoke.__init__(self, data, storage, payload, instclass)
        self._reserveMem = 0

    def initialize(self):
        NormalSpoke.initialize(self)
        self._enableButton = self.builder.get_object("enableKdumpCheck")
        KdumpSpoke.OS = getOS()
        if KdumpSpoke.OS == "redhat":
            self._reservationTypeLabel = self.builder.get_object(
                "reservationTypeLabel")
            self._autoButton = self.builder.get_object("autoButton")
            self._manualButton = self.builder.get_object("manualButton")

        self._toBeReservedLabel = self.builder.get_object("toBeReservedLabel")
        self._toBeReservedSpin = self.builder.get_object("toBeReservedSpin")
        self._totalMemLabel = self.builder.get_object("totalMemLabel")
        self._totalMemMB = self.builder.get_object("totalMemMB")
        self._usableMemLabel = self.builder.get_object("usableMemLabel")
        self._usableMemMB = self.builder.get_object("usableMemMB")

        # Set an initial value and adjustment on the spin button
        lower, upper, step = getMemoryBounds()
        adjustment = Gtk.Adjustment(lower, lower, upper, step, step, 0)
        self._toBeReservedSpin.set_adjustment(adjustment)
        self._toBeReservedSpin.set_value(lower)

    def refresh(self):
        # If a reserve amount is requested, set it in the spin button
        if self.data.addons.com_redhat_kdump.reserveMB != "auto":
            # Strip the trailing 'M'
            reserveMB = self.data.addons.com_redhat_kdump.reserveMB
            if reserveMB and reserveMB[-1] == 'M':
                reserveMB = reserveMB[:-1]
            if reserveMB:
                self._toBeReservedSpin.set_value(int(reserveMB))

        # Set the various labels. Use the spin button signal handler to set the
        # usable memory label once the other two have been set.
        self._totalMemMB.set_text("%d" % getTotalMemory())
        self._toBeReservedSpin.emit("value-changed")

        # Set the states on the toggle buttons and let the signal handlers set
        # the sensitivities on the related widgets. Set the radio button first,
        # since the radio buttons' bailiwick is a subset of that of the
        # enable/disable checkbox.
        if KdumpSpoke.OS == "redhat":
            if self.data.addons.com_redhat_kdump.reserveMB == "auto":
                self._autoButton.set_active(True)
                self._manualButton.set_active(False)
            else:
                self._autoButton.set_active(False)
                self._manualButton.set_active(True)

        if self.data.addons.com_redhat_kdump.enabled:
            self._enableButton.set_active(True)
        else:
            self._enableButton.set_active(False)

        # Force a toggled signal on the button in case it's state has not changed
        self._enableButton.emit("toggled")

    def apply(self):
        # Copy the GUI state into the AddonData object
        self.data.addons.com_redhat_kdump.enabled = self._enableButton.get_active(
        )

        if KdumpSpoke.OS == "redhat" and self._autoButton.get_active():
            reserveMem = "auto"
        else:
            reserveMem = "%dM" % self._toBeReservedSpin.get_value_as_int()

        self.data.addons.com_redhat_kdump.reserveMB = reserveMem

    @property
    def ready(self):
        return True

    @property
    def completed(self):
        # Always treat as completed
        return True

    @property
    def mandatory(self):
        return False

    @property
    def status(self):
        if self.data.addons.com_redhat_kdump.enabled:
            state = _("Kdump is enabled")
        else:
            state = _("Kdump is disabled")

        return state

    # SIGNAL HANDLERS

    def on_enable_kdump_toggled(self, checkbutton, user_data=None):
        status = checkbutton.get_active()

        # If disabling, set everything to insensitve. Otherwise, only set the radio
        # button and currently reserved widgets to sensitive and then fake a
        # toggle event on the radio button to set the state on the reserve
        # amount spin button and total/usable mem display.
        if KdumpSpoke.OS == "redhat":
            self._autoButton.set_sensitive(status)
            self._manualButton.set_sensitive(status)
            self._reservationTypeLabel.set_sensitive(status)

        if not status:
            fancy_set_sensitive(self._toBeReservedSpin, status)
            self._totalMemLabel.set_sensitive(status)
            self._totalMemMB.set_sensitive(status)
            self._usableMemLabel.set_sensitive(status)
            self._usableMemMB.set_sensitive(status)
        elif KdumpSpoke.OS == "redhat":
            self._autoButton.emit("toggled")
        else:
            fancy_set_sensitive(self._toBeReservedSpin, True)
            self._totalMemLabel.set_sensitive(True)
            self._totalMemMB.set_sensitive(True)
            self._usableMemLabel.set_sensitive(True)
            self._usableMemMB.set_sensitive(True)

    def on_reservation_toggled(self, radiobutton, user_data=None):
        status = self._manualButton.get_active()

        # If setting to auto, disable the manual config spinner and
        # the total/usable memory labels
        fancy_set_sensitive(self._toBeReservedSpin, status)
        self._totalMemLabel.set_sensitive(status)
        self._totalMemMB.set_sensitive(status)
        self._usableMemLabel.set_sensitive(status)
        self._usableMemMB.set_sensitive(status)

    def on_reserved_value_changed(self, spinbutton, user_data=None):
        reserveMem = spinbutton.get_value_as_int()
        totalMemText = self._totalMemMB.get_text()

        # If no total memory is available yet, do nothing
        if totalMemText:
            totalMem = int(self._totalMemMB.get_text())
            self._usableMemMB.set_text("%d" % (totalMem - reserveMem))