[pve-devel] [PATCH pve-manager v4 09/17] fabric: add generic fabric edit panel

Gabriel Goller g.goller at proxmox.com
Wed Jul 2 16:50:51 CEST 2025


From: Stefan Hanreich <s.hanreich at proxmox.com>

Add generic base component to add and edit Fabrics, which contains the
fields required for every protocol. The properties for every protocol
are stored in different components and each extend this one.

Co-authored-by: Stefan Hanreich <s.hanreich at proxmox.com>
Signed-off-by: Gabriel Goller <g.goller at proxmox.com>
---
 www/manager6/Makefile                  |  1 +
 www/manager6/sdn/fabrics/FabricEdit.js | 57 ++++++++++++++++++++++++++
 2 files changed, 58 insertions(+)
 create mode 100644 www/manager6/sdn/fabrics/FabricEdit.js

diff --git a/www/manager6/Makefile b/www/manager6/Makefile
index 69ec4c68c633..37d4bcc16d01 100644
--- a/www/manager6/Makefile
+++ b/www/manager6/Makefile
@@ -310,6 +310,7 @@ JSSRC= 							\
 	sdn/fabrics/Common.js				\
 	sdn/fabrics/InterfacePanel.js				\
 	sdn/fabrics/NodeEdit.js				\
+	sdn/fabrics/FabricEdit.js				\
 	sdn/fabrics/openfabric/InterfacePanel.js				\
 	sdn/fabrics/openfabric/NodeEdit.js				\
 	sdn/fabrics/ospf/InterfacePanel.js	\
diff --git a/www/manager6/sdn/fabrics/FabricEdit.js b/www/manager6/sdn/fabrics/FabricEdit.js
new file mode 100644
index 000000000000..10f7aa2b28be
--- /dev/null
+++ b/www/manager6/sdn/fabrics/FabricEdit.js
@@ -0,0 +1,57 @@
+Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
+    extend: 'Proxmox.window.Edit',
+    mixins: ['Proxmox.Mixin.CBind'],
+
+    fabricId: undefined,
+    baseUrl: "/cluster/sdn/fabrics/fabric",
+
+    items: [
+	{
+	    xtype: 'textfield',
+	    name: 'digest',
+	    hidden: true,
+	    allowBlank: true,
+	},
+	{
+	    xtype: 'proxmoxtextfield',
+	    fieldLabel: gettext('Name'),
+	    labelWidth: 120,
+	    name: 'id',
+	    cbind: {
+		disabled: '{!isCreate}',
+	    },
+	},
+	{
+	    xtype: 'proxmoxtextfield',
+	    fieldLabel: gettext('IPv4 Prefix'),
+	    labelWidth: 120,
+	    name: 'ip_prefix',
+	    allowBlank: true,
+	    skipEmptyText: true,
+	    cbind: {
+		disabled: '{!isCreate}',
+		deleteEmpty: '{!isCreate}',
+	    },
+	},
+    ],
+
+    additionalItems: [],
+
+    initComponent: function() {
+	let me = this;
+
+	me.isCreate = me.fabricId === undefined;
+	me.autoLoad = !me.isCreate;
+	me.method = me.isCreate ? 'POST' : 'PUT';
+
+	if (!me.isCreate) {
+	    me.url = `${me.baseUrl}/${me.fabricId}`;
+	} else {
+	    me.url = me.baseUrl;
+	}
+
+	me.items.push(...me.additionalItems);
+
+	me.callParent();
+    },
+});
-- 
2.39.5





More information about the pve-devel mailing list