* [PATCH manager v3 0/2] ui: fabrics: handle unsupported IP properties for BGP interfaces @ 2026-07-15 8:15 Lukas Sichert 2026-07-15 8:15 ` [PATCH manager v3 1/2] ui: fabrics: make IPv4 interface column optional Lukas Sichert 2026-07-15 8:15 ` [PATCH manager v3 2/2] ui: fabrics: skip unsupported IP properties on submit Lukas Sichert 0 siblings, 2 replies; 3+ messages in thread From: Lukas Sichert @ 2026-07-15 8:15 UTC (permalink / raw) To: pve-devel; +Cc: Lukas Sichert BGP unnumbered interfaces do not support per-interface IPv4 or IPv6 addresses. The UI already hid the IPv6 column through a declarative support flag, but IPv4 needed a protocol-specific initComponent() override that manually filtered the base column list. This series first adjusts the IPv4 column handling to make it optional via a declarative support flag. It then uses the IPv4/IPv6 support flags to avoid sending unsupported ip/ip6 interface data to the backend. Note: The Reviewed-by and Tested-by trailers from Hannes were originally sent for the v2 [1], but I kept them for this series as well, as the code did not change. [1]: https://lore.proxmox.com/all/20260603155521.125175-1-l.sichert@proxmox.com/ Changes from v2 to v3(thanks @Dominik): - split up the code into two commits Changes from v1 to v2(thanks @Hannes): - make ipv4 column optional via support flag manager: Lukas Sichert (2): ui: fabrics: make IPv4 interface column optional ui: fabrics: skip unsupported IP properties on submit www/manager6/sdn/fabrics/InterfacePanel.js | 36 +++++++++++-------- .../sdn/fabrics/bgp/InterfacePanel.js | 11 +----- 2 files changed, 23 insertions(+), 24 deletions(-) Summary over all repositories: 2 files changed, 23 insertions(+), 24 deletions(-) -- Generated by murpp 0.12.0 ^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH manager v3 1/2] ui: fabrics: make IPv4 interface column optional 2026-07-15 8:15 [PATCH manager v3 0/2] ui: fabrics: handle unsupported IP properties for BGP interfaces Lukas Sichert @ 2026-07-15 8:15 ` Lukas Sichert 2026-07-15 8:15 ` [PATCH manager v3 2/2] ui: fabrics: skip unsupported IP properties on submit Lukas Sichert 1 sibling, 0 replies; 3+ messages in thread From: Lukas Sichert @ 2026-07-15 8:15 UTC (permalink / raw) To: pve-devel; +Cc: Lukas Sichert The base interface panel keeps the IPv4 column in commonColumns, while IPv6 is added conditionally through hasIpv6Support. BGP unnumbered interfaces therefore have to override initComponent() and filter that base column out manually. Move the IPv4 column into the same conditional column-building path as IPv6 and add a matching hasIpv4Support flag. Keep IPv4 support enabled by default so existing panels inherit the previous behavior unless they explicitly opt out. Then disable BGP IPv4 support declaratively by setting that flag to false. Signed-off-by: Lukas Sichert <l.sichert@proxmox.com> Tested-by: Hannes Laimer <h.laimer@proxmox.com> Reviewed-by: Hannes Laimer <h.laimer@proxmox.com> --- www/manager6/sdn/fabrics/InterfacePanel.js | 30 +++++++++++-------- .../sdn/fabrics/bgp/InterfacePanel.js | 11 +------ 2 files changed, 18 insertions(+), 23 deletions(-) diff --git a/www/manager6/sdn/fabrics/InterfacePanel.js b/www/manager6/sdn/fabrics/InterfacePanel.js index f07e7859..95424bc0 100644 --- a/www/manager6/sdn/fabrics/InterfacePanel.js +++ b/www/manager6/sdn/fabrics/InterfacePanel.js @@ -6,6 +6,7 @@ Ext.define('PVE.sdn.Fabric.InterfacePanel', { nodeInterfaces: {}, + hasIpv4Support: true, hasIpv6Support: true, selModel: { @@ -59,19 +60,6 @@ Ext.define('PVE.sdn.Fabric.InterfacePanel', { dataIndex: 'type', flex: 1, }, - { - text: gettext('IPv4'), - xtype: 'widgetcolumn', - dataIndex: 'ip', - flex: 1, - widget: { - xtype: 'proxmoxtextfield', - isFormField: false, - bind: { - disabled: '{record.isDisabled}', - }, - }, - }, ], additionalColumns: [], @@ -112,6 +100,22 @@ Ext.define('PVE.sdn.Fabric.InterfacePanel', { let columns = [...me.commonColumns]; + if (me.hasIpv4Support) { + columns.push({ + text: gettext('IPv4'), + xtype: 'widgetcolumn', + dataIndex: 'ip', + flex: 1, + widget: { + xtype: 'proxmoxtextfield', + isFormField: false, + bind: { + disabled: '{record.isDisabled}', + }, + }, + }); + } + if (me.hasIpv6Support) { columns.push({ text: gettext('IPv6'), diff --git a/www/manager6/sdn/fabrics/bgp/InterfacePanel.js b/www/manager6/sdn/fabrics/bgp/InterfacePanel.js index c7ac7627..fd5e6f4b 100644 --- a/www/manager6/sdn/fabrics/bgp/InterfacePanel.js +++ b/www/manager6/sdn/fabrics/bgp/InterfacePanel.js @@ -1,15 +1,6 @@ Ext.define('PVE.sdn.Fabric.Bgp.InterfacePanel', { extend: 'PVE.sdn.Fabric.InterfacePanel', + hasIpv4Support: false, hasIpv6Support: false, - - // BGP unnumbered interfaces have no IP - override commonColumns to - // exclude the IP column that the base class defines. - initComponent: function () { - let me = this; - - me.commonColumns = me.commonColumns.filter((col) => col.dataIndex !== 'ip'); - - me.callParent(); - }, }); -- 2.47.3 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH manager v3 2/2] ui: fabrics: skip unsupported IP properties on submit 2026-07-15 8:15 [PATCH manager v3 0/2] ui: fabrics: handle unsupported IP properties for BGP interfaces Lukas Sichert 2026-07-15 8:15 ` [PATCH manager v3 1/2] ui: fabrics: make IPv4 interface column optional Lukas Sichert @ 2026-07-15 8:15 ` Lukas Sichert 1 sibling, 0 replies; 3+ messages in thread From: Lukas Sichert @ 2026-07-15 8:15 UTC (permalink / raw) To: pve-devel; +Cc: Lukas Sichert The interface selector store is initialized from the node network API, which includes existing IPv4 and IPv6 addresses as ip and ip6. Hiding an IP column does not remove those fields from the selected record. getValue() serializes the selected record data, so BGP unnumbered interfaces could still submit stale ip and ip6 properties even though BGP supports neither per-interface address. The backend then rejects the property string with errors such as 'interfaces[0].ip: property is not defined in schema'. Skip ip and ip6 during serialization when the corresponding support flag is disabled. Signed-off-by: Lukas Sichert <l.sichert@proxmox.com> Tested-by: Hannes Laimer <h.laimer@proxmox.com> Reviewed-by: Hannes Laimer <h.laimer@proxmox.com> --- www/manager6/sdn/fabrics/InterfacePanel.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/www/manager6/sdn/fabrics/InterfacePanel.js b/www/manager6/sdn/fabrics/InterfacePanel.js index 95424bc0..08a53a34 100644 --- a/www/manager6/sdn/fabrics/InterfacePanel.js +++ b/www/manager6/sdn/fabrics/InterfacePanel.js @@ -178,7 +178,11 @@ Ext.define('PVE.sdn.Fabric.InterfacePanel', { continue; } - if (['type', 'isDisabled'].includes(key)) { + if ( + ['type', 'isDisabled'].includes(key) || + (key === 'ip' && !me.hasIpv4Support) || + (key === 'ip6' && !me.hasIpv6Support) + ) { continue; } -- 2.47.3 ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-15 8:16 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-07-15 8:15 [PATCH manager v3 0/2] ui: fabrics: handle unsupported IP properties for BGP interfaces Lukas Sichert 2026-07-15 8:15 ` [PATCH manager v3 1/2] ui: fabrics: make IPv4 interface column optional Lukas Sichert 2026-07-15 8:15 ` [PATCH manager v3 2/2] ui: fabrics: skip unsupported IP properties on submit Lukas Sichert
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.