* [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