[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