From: Stefan Hanreich <s.hanre...@proxmox.com>

Expose the new fabric field added to the EVPN controller in the UI.
Users can now select any fabric in the EVPN controller, instead of
having to specify peers manually. This simplifies setting up an EVPN
zone via SDN fabrics considerably.

Since the peers field can now be empty, we have to adapt the existing
field to allow empty values and properly send the delete property when
updating a controller.

Signed-off-by: Stefan Hanreich <s.hanre...@proxmox.com>
---
 www/manager6/sdn/controllers/Base.js     | 17 ++++++++++++
 www/manager6/sdn/controllers/EvpnEdit.js | 34 ++++++++++++++++++++++--
 2 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/www/manager6/sdn/controllers/Base.js 
b/www/manager6/sdn/controllers/Base.js
index b73af80dfe06..071345400ce5 100644
--- a/www/manager6/sdn/controllers/Base.js
+++ b/www/manager6/sdn/controllers/Base.js
@@ -8,8 +8,25 @@ Ext.define('PVE.panel.SDNControllerBase', {
 
         if (me.isCreate) {
             values.type = me.type;
+            delete values.delete;
         } else {
             delete values.controller;
+
+            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];
+                    }
+                }
+            }
         }
 
         return values;
diff --git a/www/manager6/sdn/controllers/EvpnEdit.js 
b/www/manager6/sdn/controllers/EvpnEdit.js
index 9f5910327c52..cf879cda23ac 100644
--- a/www/manager6/sdn/controllers/EvpnEdit.js
+++ b/www/manager6/sdn/controllers/EvpnEdit.js
@@ -25,10 +25,40 @@ Ext.define('PVE.sdn.controllers.EvpnInputPanel', {
                 allowBlank: false,
             },
             {
-                xtype: 'textfield',
+                xtype: 'proxmoxNetworkSelector',
+                name: 'fabric',
+                type: 'fabric',
+                valueField: 'iface',
+                displayField: 'iface',
+                fieldLabel: 'SDN Fabric',
+                allowBlank: true,
+                skipEmptyText: 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,
+                        },
+                    ],
+                },
+            },
+            {
+                xtype: 'proxmoxtextfield',
                 name: 'peers',
                 fieldLabel: gettext('Peers'),
-                allowBlank: false,
+                allowBlank: true,
+                deleteEmpty: true,
             },
         ];
 
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to