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 | 35 ++++++++++++++++++++++--
 2 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/www/manager6/sdn/controllers/Base.js 
b/www/manager6/sdn/controllers/Base.js
index fd8bd9a05..f75080e4e 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 d04b3e544..f9fa0215c 100644
--- a/www/manager6/sdn/controllers/EvpnEdit.js
+++ b/www/manager6/sdn/controllers/EvpnEdit.js
@@ -25,10 +25,41 @@ 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