* [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
` (2 more replies)
0 siblings, 3 replies; 4+ 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] 4+ 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 2026-07-15 12:24 ` applied: [PATCH manager v3 0/2] ui: fabrics: handle unsupported IP properties for BGP interfaces Dominik Csapak 2 siblings, 0 replies; 4+ 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] 4+ 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 2026-07-15 12:24 ` applied: [PATCH manager v3 0/2] ui: fabrics: handle unsupported IP properties for BGP interfaces Dominik Csapak 2 siblings, 0 replies; 4+ 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] 4+ messages in thread
* applied: [PATCH manager v3 0/2] ui: fabrics: handle unsupported IP properties for BGP interfaces 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 @ 2026-07-15 12:24 ` Dominik Csapak 2 siblings, 0 replies; 4+ messages in thread From: Dominik Csapak @ 2026-07-15 12:24 UTC (permalink / raw) To: pve-devel, Lukas Sichert On Wed, 15 Jul 2026 10:15:14 +0200, Lukas Sichert wrote: > 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. > > [...] Applied, thanks! [1/2] ui: fabrics: make IPv4 interface column optional commit: 79fc8f141661dc15f9352a0d00f53faae52eb404 [2/2] ui: fabrics: skip unsupported IP properties on submit commit: cd09954e2915d60f636dfa8fd3416ca425566bbb ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-07-15 12:24 UTC | newest] Thread overview: 4+ 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 2026-07-15 12:24 ` applied: [PATCH manager v3 0/2] ui: fabrics: handle unsupported IP properties for BGP interfaces Dominik Csapak
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox