|
| 1 | +From 098b204f7be3a29e00facdef0429a19660e21031 Mon Sep 17 00:00:00 2001 |
| 2 | +From: Stefanos Gerangelos <stefanos.gerangelos@vates.tech> |
| 3 | +Date: Wed, 14 Jan 2026 18:13:07 +0200 |
| 4 | +Subject: [PATCH] XSFeatureNetworkReset: allow the user to perform an emergency |
| 5 | + network reset without renaming the management interface |
| 6 | + |
| 7 | +There are some use cases according to which the user would like to perform an |
| 8 | +emergency network reset by keeping the management interface's name intact. This |
| 9 | +commit allows the user to proceed to an emergency network reset by requesting |
| 10 | +the aforementioned behavior. |
| 11 | + |
| 12 | +Signed-off-by: Stefanos Gerangelos <stefanos.gerangelos@vates.tech> |
| 13 | +--- |
| 14 | + plugins-base/XSFeatureNetworkReset.py | 37 ++++++++++++++++++++++++--- |
| 15 | + 1 file changed, 34 insertions(+), 3 deletions(-) |
| 16 | + |
| 17 | +diff --git a/plugins-base/XSFeatureNetworkReset.py b/plugins-base/XSFeatureNetworkReset.py |
| 18 | +index 62442d0..2d33657 100644 |
| 19 | +--- a/plugins-base/XSFeatureNetworkReset.py |
| 20 | ++++ b/plugins-base/XSFeatureNetworkReset.py |
| 21 | +@@ -82,6 +82,12 @@ class NetworkResetDialogue(Dialogue): |
| 22 | + except: |
| 23 | + self.vlan = '' |
| 24 | + |
| 25 | ++ self.renameMgmt = True |
| 26 | ++ self.renameMenu = Menu(self, None, Lang("Choose to rename/keep the Management Interface name"), [ |
| 27 | ++ ChoiceDef(Lang("Rename"), lambda: self.HandleRenameChoice('RENAME') ), |
| 28 | ++ ChoiceDef(Lang("Keep name"), lambda: self.HandleRenameChoice('KEEP') ) |
| 29 | ++ ]) |
| 30 | ++ |
| 31 | + self.modeMenu = Menu(self, None, Lang("Select IP Address Configuration Mode"), [ |
| 32 | + ChoiceDef(Lang("DHCP"), lambda: self.HandleModeChoice('DHCP') ), |
| 33 | + ChoiceDef(Lang("Static"), lambda: self.HandleModeChoice('STATIC') ) |
| 34 | +@@ -126,6 +132,14 @@ class NetworkResetDialogue(Dialogue): |
| 35 | + if pane.InputIndex() is None: |
| 36 | + pane.InputIndexSet(0) # Activate first field for input |
| 37 | + |
| 38 | ++ def UpdateFieldsRENAME(self): |
| 39 | ++ pane = self.Pane() |
| 40 | ++ pane.ResetFields() |
| 41 | ++ |
| 42 | ++ pane.AddTitleField(Lang("Choose to rename/keep the Management Interface name")) |
| 43 | ++ pane.AddMenuField(self.renameMenu) |
| 44 | ++ pane.AddKeyHelpField( { Lang("<Enter>") : Lang("OK"), Lang("<Esc>") : Lang("Cancel") } ) |
| 45 | ++ |
| 46 | + def UpdateFieldsMODE(self): |
| 47 | + pane = self.Pane() |
| 48 | + pane.ResetFields() |
| 49 | +@@ -168,6 +182,10 @@ class NetworkResetDialogue(Dialogue): |
| 50 | + |
| 51 | + pane.AddWrappedTextField(Lang("The Primary Management Interface will be reconfigured with the following settings:")) |
| 52 | + pane.AddStatusField(Lang("NIC", 16), self.device) |
| 53 | ++ if self.renameMgmt: |
| 54 | ++ pane.AddStatusField(Lang("Rename NIC:", 16), "Yes") |
| 55 | ++ else: |
| 56 | ++ pane.AddStatusField(Lang("Rename NIC:", 16), "No") |
| 57 | + if self.vlan != '': |
| 58 | + pane.AddStatusField(Lang("VLAN", 16), self.vlan) |
| 59 | + pane.AddStatusField(Lang("IP Mode", 16), self.mode) |
| 60 | +@@ -214,7 +232,7 @@ class NetworkResetDialogue(Dialogue): |
| 61 | + pane.InputIndexSet(None) |
| 62 | + Layout.Inst().PushDialogue(InfoDialogue(Lang('VLAN tag must be between 0 and 4094'))) |
| 63 | + else: |
| 64 | +- self.ChangeState('MODE') |
| 65 | ++ self.ChangeState('RENAME') |
| 66 | + else: |
| 67 | + pane.ActivateNextInput() |
| 68 | + elif inKey == 'KEY_TAB': |
| 69 | +@@ -227,6 +245,9 @@ class NetworkResetDialogue(Dialogue): |
| 70 | + handled = False |
| 71 | + return handled |
| 72 | + |
| 73 | ++ def HandleKeyRENAME(self, inKey): |
| 74 | ++ return self.renameMenu.HandleKey(inKey) |
| 75 | ++ |
| 76 | + def HandleKeyMODE(self, inKey): |
| 77 | + return self.modeMenu.HandleKey(inKey) |
| 78 | + |
| 79 | +@@ -315,6 +336,12 @@ class NetworkResetDialogue(Dialogue): |
| 80 | + |
| 81 | + return handled |
| 82 | + |
| 83 | ++ def HandleRenameChoice(self, inChoice): |
| 84 | ++ if inChoice == 'KEEP': |
| 85 | ++ self.renameMgmt = False |
| 86 | ++ |
| 87 | ++ self.ChangeState('MODE') |
| 88 | ++ |
| 89 | + def HandleModeChoice(self, inChoice): |
| 90 | + if inChoice == 'DHCP': |
| 91 | + self.mode = 'dhcp' |
| 92 | +@@ -410,8 +437,12 @@ class NetworkResetDialogue(Dialogue): |
| 93 | + |
| 94 | + # Reset the domain 0 network interface naming configuration |
| 95 | + # back to a fresh-install state for the currently-installed |
| 96 | +- # hardware. |
| 97 | +- os.system("/etc/sysconfig/network-scripts/interface-rename.py --reset-to-install") |
| 98 | ++ # hardware (unless prevented by the user). |
| 99 | ++ if self.renameMgmt: |
| 100 | ++ XSLog('Will rename the Management Interface') |
| 101 | ++ os.system("/etc/sysconfig/network-scripts/interface-rename.py --reset-to-install") |
| 102 | ++ else: |
| 103 | ++ XSLog('Will NOT rename the Management Interface') |
| 104 | + |
| 105 | + class XSFeatureNetworkReset: |
| 106 | + @classmethod |
0 commit comments