[pve-devel] [PATCH pve-manager v3 18/18] ui: sdn: vxlan: add fabric property

Stefan Hanreich s.hanreich at proxmox.com
Thu May 22 18:17:29 CEST 2025


VXLAN zones can now use fabrics instead of having to specify peers
manually. Since the network selector doesn't implement deleteEmpty,
we have to manually handle deleted properties in the VXLAN input
panel.

Signed-off-by: Stefan Hanreich <s.hanreich at proxmox.com>
---
 www/manager6/sdn/zones/VxlanEdit.js | 52 +++++++++++++++++++++++++++--
 1 file changed, 50 insertions(+), 2 deletions(-)

diff --git a/www/manager6/sdn/zones/VxlanEdit.js b/www/manager6/sdn/zones/VxlanEdit.js
index b556790df..575dd867f 100644
--- a/www/manager6/sdn/zones/VxlanEdit.js
+++ b/www/manager6/sdn/zones/VxlanEdit.js
@@ -8,8 +8,25 @@ Ext.define('PVE.sdn.zones.VxlanInputPanel', {
 
 	if (me.isCreate) {
 	    values.type = me.type;
+	    delete values.delete;
 	} else {
 	    delete values.zone;
+
+	    for (const [key, value] of Object.entries(values)) {
+		if (value === null || value === undefined || value === "") {
+		    delete values[key];
+
+		    if (values.delete) {
+			if (Array.isArray(values.delete)) {
+			    values.delete.push(key);
+			} else {
+			    values.delete = [values.delete, key];
+			}
+		    } else {
+			values.delete = [key];
+		    }
+		}
+	    }
 	}
 
 	delete values.mode;
@@ -22,10 +39,41 @@ Ext.define('PVE.sdn.zones.VxlanInputPanel', {
 
 	me.items = [
 	    {
-		xtype: 'textfield',
+		xtype: 'proxmoxtextfield',
 		name: 'peers',
 		fieldLabel: gettext('Peer Address List'),
-		allowBlank: false,
+		allowBlank: true,
+		deleteEmpty: true,
+	    },
+	    {
+		xtype: 'proxmoxNetworkSelector',
+		name: 'fabric',
+		type: 'fabric',
+		valueField: 'iface',
+		displayField: 'iface',
+		fieldLabel: 'SDN Fabric',
+		skipEmptyText: true,
+		allowBlank: true,
+		autoSelect: false,
+		emptyText: gettext('used as underlay network'),
+		nodename: 'localhost',
+		listConfig: {
+		    width: 600,
+		    columns: [
+			{
+			    header: gettext('Fabric'),
+			    width: 90,
+			    dataIndex: 'iface',
+			},
+			{
+
+			    header: gettext('CIDR'),
+			    dataIndex: 'cidr',
+			    hideable: false,
+			    flex: 1,
+			},
+		    ],
+		},
 	    },
 	];
 
-- 
2.39.5




More information about the pve-devel mailing list