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
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
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
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
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()
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))
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))