From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id EC5F11FF0DF for ; Fri, 28 Aug 2026 13:34:21 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 5477A21589; Fri, 28 Aug 2026 13:33:31 +0200 (CEST) From: Gabriel Goller To: pve-devel@lists.proxmox.com Subject: [PATCH pve-manager v3 10/13] fabrics: add IS-IS panels Date: Fri, 28 Aug 2026 13:32:49 +0200 Message-ID: <20260828113255.176546-11-g.goller@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260828113255.176546-1-g.goller@proxmox.com> References: <20260828113255.176546-1-g.goller@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1787916771098 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.382 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) PROLO_LEO1 0.1 Meta Catches all Leo drug variations so far RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: IL3JPSD5T4MG4EE3VPJB2Z5RMDKORQ44 X-Message-ID-Hash: IL3JPSD5T4MG4EE3VPJB2Z5RMDKORQ44 X-MailFrom: g.goller@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: The IS-IS panels have the same properties as OpenFabric both on the FabricEdit and the NodeEdit. Signed-off-by: Gabriel Goller --- www/manager6/Makefile | 3 ++ www/manager6/sdn/FabricsView.js | 12 +++++ www/manager6/sdn/fabrics/NodeEdit.js | 1 + www/manager6/sdn/fabrics/isis/FabricEdit.js | 48 +++++++++++++++++++ .../sdn/fabrics/isis/InterfacePanel.js | 21 ++++++++ www/manager6/sdn/fabrics/isis/NodeEdit.js | 9 ++++ 6 files changed, 94 insertions(+) create mode 100644 www/manager6/sdn/fabrics/isis/FabricEdit.js create mode 100644 www/manager6/sdn/fabrics/isis/InterfacePanel.js create mode 100644 www/manager6/sdn/fabrics/isis/NodeEdit.js diff --git a/www/manager6/Makefile b/www/manager6/Makefile index eb0e9d9cece0..cecc2f2027f3 100644 --- a/www/manager6/Makefile +++ b/www/manager6/Makefile @@ -347,6 +347,9 @@ JSSRC= \ sdn/fabrics/openfabric/InterfacePanel.js \ sdn/fabrics/openfabric/NodeEdit.js \ sdn/fabrics/openfabric/FabricEdit.js \ + sdn/fabrics/isis/InterfacePanel.js \ + sdn/fabrics/isis/NodeEdit.js \ + sdn/fabrics/isis/FabricEdit.js \ sdn/fabrics/ospf/InterfacePanel.js \ sdn/fabrics/ospf/NodeEdit.js \ sdn/fabrics/ospf/FabricEdit.js \ diff --git a/www/manager6/sdn/FabricsView.js b/www/manager6/sdn/FabricsView.js index 88926462df11..b8374f8a155d 100644 --- a/www/manager6/sdn/FabricsView.js +++ b/www/manager6/sdn/FabricsView.js @@ -32,6 +32,7 @@ Ext.define('PVE.sdn.Fabric.View', { if (rec.data.type === 'fabric') { const PROTOCOL_DISPLAY_NAMES = { openfabric: 'OpenFabric', + isis: 'IS-IS', ospf: 'OSPF', wireguard: 'WireGuard', bgp: 'BGP', @@ -197,6 +198,10 @@ Ext.define('PVE.sdn.Fabric.View', { text: 'OpenFabric', handler: 'addOpenfabric', }, + { + text: 'IS-IS', + handler: 'addIsis', + }, { text: 'OSPF', handler: 'addOspf', @@ -286,6 +291,7 @@ Ext.define('PVE.sdn.Fabric.View', { getFabricEditPanel: function (protocol) { const FABRIC_PANELS = { openfabric: 'PVE.sdn.Fabric.OpenFabric.Fabric.Edit', + isis: 'PVE.sdn.Fabric.Isis.Fabric.Edit', ospf: 'PVE.sdn.Fabric.Ospf.Fabric.Edit', wireguard: 'PVE.sdn.Fabric.WireGuard.Fabric.Edit', bgp: 'PVE.sdn.Fabric.Bgp.Fabric.Edit', @@ -297,6 +303,7 @@ Ext.define('PVE.sdn.Fabric.View', { getNodeEditPanel: function (protocol) { const NODE_PANELS = { openfabric: 'PVE.sdn.Fabric.OpenFabric.Node.Edit', + isis: 'PVE.sdn.Fabric.Isis.Node.Edit', ospf: 'PVE.sdn.Fabric.Ospf.Node.Edit', wireguard: 'PVE.sdn.Fabric.WireGuard.Node.Edit', bgp: 'PVE.sdn.Fabric.Bgp.Node.Edit', @@ -324,6 +331,11 @@ Ext.define('PVE.sdn.Fabric.View', { me.openFabricAddWindow('openfabric'); }, + addIsis: function () { + let me = this; + me.openFabricAddWindow('isis'); + }, + addOspf: function () { let me = this; me.openFabricAddWindow('ospf'); diff --git a/www/manager6/sdn/fabrics/NodeEdit.js b/www/manager6/sdn/fabrics/NodeEdit.js index 0ace12cdc34b..6f19f5baff7d 100644 --- a/www/manager6/sdn/fabrics/NodeEdit.js +++ b/www/manager6/sdn/fabrics/NodeEdit.js @@ -264,6 +264,7 @@ Ext.define('PVE.sdn.Fabric.Node.Edit', { getInterfacePanel: function (protocol) { const INTERFACE_PANELS = { openfabric: 'PVE.sdn.Fabric.OpenFabric.InterfacePanel', + isis: 'PVE.sdn.Fabric.Isis.InterfacePanel', ospf: 'PVE.sdn.Fabric.Ospf.InterfacePanel', wireguard: 'PVE.sdn.Fabric.WireGuard.InterfacePanel', bgp: 'PVE.sdn.Fabric.Bgp.InterfacePanel', diff --git a/www/manager6/sdn/fabrics/isis/FabricEdit.js b/www/manager6/sdn/fabrics/isis/FabricEdit.js new file mode 100644 index 000000000000..c9d8557dd561 --- /dev/null +++ b/www/manager6/sdn/fabrics/isis/FabricEdit.js @@ -0,0 +1,48 @@ +Ext.define('PVE.sdn.Fabric.Isis.Fabric.Edit', { + extend: 'PVE.sdn.Fabric.Fabric.Edit', + + subject: 'IS-IS', + onlineHelp: 'pvesdn_isis_fabric', + + hasIpv6Support: true, + + extraRequestParams: { + protocol: 'isis', + }, + + additionalItems: [ + { + xtype: 'proxmoxintegerfield', + fieldLabel: gettext('Hello Interval'), + labelWidth: 120, + name: 'hello_interval', + allowBlank: true, + emptyText: '3', + skipEmptyText: true, + cbind: { + deleteEmpty: '{!isCreate}', + }, + }, + { + xtype: 'proxmoxintegerfield', + fieldLabel: gettext('CSNP Interval'), + labelWidth: 120, + name: 'csnp_interval', + allowBlank: true, + emptyText: '10', + skipEmptyText: true, + cbind: { + deleteEmpty: '{!isCreate}', + }, + }, + { + xtype: 'pveSDNPrefixListSelector', + name: 'route_filter', + fieldLabel: gettext('Route Filter'), + labelWidth: 120, + emptyText: gettext('IP Prefixes'), + deleteEmpty: true, + skipEmptyText: true, + }, + ], +}); diff --git a/www/manager6/sdn/fabrics/isis/InterfacePanel.js b/www/manager6/sdn/fabrics/isis/InterfacePanel.js new file mode 100644 index 000000000000..af49fbcb0664 --- /dev/null +++ b/www/manager6/sdn/fabrics/isis/InterfacePanel.js @@ -0,0 +1,21 @@ +Ext.define('PVE.sdn.Fabric.Isis.InterfacePanel', { + extend: 'PVE.sdn.Fabric.InterfacePanel', + + additionalColumns: [ + { + text: gettext('Hello Multiplier'), + xtype: 'widgetcolumn', + dataIndex: 'hello_multiplier', + flex: 1, + hidden: true, + widget: { + xtype: 'proxmoxintegerfield', + isFormField: false, + emptyText: '10', + bind: { + disabled: '{record.isDisabled}', + }, + }, + }, + ], +}); diff --git a/www/manager6/sdn/fabrics/isis/NodeEdit.js b/www/manager6/sdn/fabrics/isis/NodeEdit.js new file mode 100644 index 000000000000..b86097414265 --- /dev/null +++ b/www/manager6/sdn/fabrics/isis/NodeEdit.js @@ -0,0 +1,9 @@ +Ext.define('PVE.sdn.Fabric.Isis.Node.Edit', { + extend: 'PVE.sdn.Fabric.Node.Edit', + protocol: 'isis', + onlineHelp: 'pvesdn_isis_node', + + extraRequestParams: { + protocol: 'isis', + }, +}); -- 2.47.3