* [PATCH network] ui: sdn: fabrics: drop dead disabled bindings
@ 2026-05-20 12:51 Gabriel Goller
2026-05-20 12:51 ` [PATCH manager] ui: sdn: fabrics: require IPv4 prefix on fabrics without IPv6 support Gabriel Goller
` (4 more replies)
0 siblings, 5 replies; 12+ messages in thread
From: Gabriel Goller @ 2026-05-20 12:51 UTC (permalink / raw)
To: pve-devel
The prefix fields used an invalid cbind setup for their disabled state,
so the bindings didn't work and editing the fabric prefix was possible.
Initially we didn't want the user to be able to update the prefix of a
fabric, because we would need to add a mechanism to update all the node
ips at the same time. This broke though and they became editable --
which is fine, since you still get an error "node has ip out of prefix".
Keep it this way, because editing a fabric without nodes is still
useful.
Remove the dead disabled bindings while keeping deleteEmpty handling.
Fixes: e5e3374273af ("ui: fabrics: edit: make ipv4/6 support generic over fabric panels")
Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
---
www/manager6/sdn/fabrics/FabricEdit.js | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/www/manager6/sdn/fabrics/FabricEdit.js b/www/manager6/sdn/fabrics/FabricEdit.js
index 46c8dd6b0c86..1f7bab362075 100644
--- a/www/manager6/sdn/fabrics/FabricEdit.js
+++ b/www/manager6/sdn/fabrics/FabricEdit.js
@@ -62,10 +62,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
name: 'ip_prefix',
allowBlank: true,
skipEmptyText: true,
- cbind: {
- disabled: '{!isCreate}',
- deleteEmpty: '{!isCreate}',
- },
+ deleteEmpty: '{!isCreate}',
});
}
@@ -86,10 +83,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
name: 'ip6_prefix',
allowBlank: true,
skipEmptyText: true,
- cbind: {
- disabled: '{!isCreate}',
- deleteEmpty: '{!isCreate}',
- },
+ deleteEmpty: '{!isCreate}',
listeners: {
change: function (textbox, value) {
let vm = textbox.up('window').getViewModel();
--
2.47.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH manager] ui: sdn: fabrics: require IPv4 prefix on fabrics without IPv6 support
2026-05-20 12:51 [PATCH network] ui: sdn: fabrics: drop dead disabled bindings Gabriel Goller
@ 2026-05-20 12:51 ` Gabriel Goller
2026-05-20 12:57 ` Dominik Csapak
2026-05-20 12:51 ` [PATCH manager] ui: sdn: fabrics: validate prefixes as CIDR addresses Gabriel Goller
` (3 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Gabriel Goller @ 2026-05-20 12:51 UTC (permalink / raw)
To: pve-devel
For fabricrs that only support IPv4, the IPv4 prefix is the only
available prefix field. Mark it as mandatory in that case while keeping
it optional for fabric types that also support IPv6.
Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
---
www/manager6/sdn/fabrics/FabricEdit.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/www/manager6/sdn/fabrics/FabricEdit.js b/www/manager6/sdn/fabrics/FabricEdit.js
index 1f7bab362075..760925c50b95 100644
--- a/www/manager6/sdn/fabrics/FabricEdit.js
+++ b/www/manager6/sdn/fabrics/FabricEdit.js
@@ -60,7 +60,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
fieldLabel: gettext('IPv4 Prefix'),
labelWidth: 120,
name: 'ip_prefix',
- allowBlank: true,
+ allowBlank: me.hasIpv6Support,
skipEmptyText: true,
deleteEmpty: '{!isCreate}',
});
--
2.47.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH manager] ui: sdn: fabrics: validate prefixes as CIDR addresses
2026-05-20 12:51 [PATCH network] ui: sdn: fabrics: drop dead disabled bindings Gabriel Goller
2026-05-20 12:51 ` [PATCH manager] ui: sdn: fabrics: require IPv4 prefix on fabrics without IPv6 support Gabriel Goller
@ 2026-05-20 12:51 ` Gabriel Goller
2026-05-20 13:35 ` [PATCH network] ui: sdn: fabrics: drop dead disabled bindings Thomas Lamprecht
` (2 subsequent siblings)
4 siblings, 0 replies; 12+ messages in thread
From: Gabriel Goller @ 2026-05-20 12:51 UTC (permalink / raw)
To: pve-devel
Set the IPv4 and IPv6 prefix fields to their respective CIDR vtypes so
the form rejects invalid prefix input before submission.
Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
---
www/manager6/sdn/fabrics/FabricEdit.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/www/manager6/sdn/fabrics/FabricEdit.js b/www/manager6/sdn/fabrics/FabricEdit.js
index 760925c50b95..29b72d550417 100644
--- a/www/manager6/sdn/fabrics/FabricEdit.js
+++ b/www/manager6/sdn/fabrics/FabricEdit.js
@@ -61,6 +61,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
labelWidth: 120,
name: 'ip_prefix',
allowBlank: me.hasIpv6Support,
+ vtype: 'IPCIDRAddress',
skipEmptyText: true,
deleteEmpty: '{!isCreate}',
});
@@ -82,6 +83,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
labelWidth: 120,
name: 'ip6_prefix',
allowBlank: true,
+ vtype: 'IP6CIDRAddress',
skipEmptyText: true,
deleteEmpty: '{!isCreate}',
listeners: {
--
2.47.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH manager] ui: sdn: fabrics: require IPv4 prefix on fabrics without IPv6 support
2026-05-20 12:51 ` [PATCH manager] ui: sdn: fabrics: require IPv4 prefix on fabrics without IPv6 support Gabriel Goller
@ 2026-05-20 12:57 ` Dominik Csapak
2026-05-20 13:02 ` Gabriel Goller
0 siblings, 1 reply; 12+ messages in thread
From: Dominik Csapak @ 2026-05-20 12:57 UTC (permalink / raw)
To: Gabriel Goller, pve-devel
because i just looked at this while trying to make a similar change:
is the reverse not also possible? so ipv6-only fabrics?
i noticed that when i add a fabric i have to enter *either* a
ipv4 or ipv6 address, but the subsequent node edit windows always
show both (even thouh i didn't configure an ipv4 address)
not sure if that makes sense?
On 5/20/26 2:51 PM, Gabriel Goller wrote:
> For fabricrs that only support IPv4, the IPv4 prefix is the only
> available prefix field. Mark it as mandatory in that case while keeping
> it optional for fabric types that also support IPv6.
>
> Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
> ---
> www/manager6/sdn/fabrics/FabricEdit.js | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/www/manager6/sdn/fabrics/FabricEdit.js b/www/manager6/sdn/fabrics/FabricEdit.js
> index 1f7bab362075..760925c50b95 100644
> --- a/www/manager6/sdn/fabrics/FabricEdit.js
> +++ b/www/manager6/sdn/fabrics/FabricEdit.js
> @@ -60,7 +60,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
> fieldLabel: gettext('IPv4 Prefix'),
> labelWidth: 120,
> name: 'ip_prefix',
> - allowBlank: true,
> + allowBlank: me.hasIpv6Support,
> skipEmptyText: true,
> deleteEmpty: '{!isCreate}',
> });
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH manager] ui: sdn: fabrics: require IPv4 prefix on fabrics without IPv6 support
2026-05-20 12:57 ` Dominik Csapak
@ 2026-05-20 13:02 ` Gabriel Goller
0 siblings, 0 replies; 12+ messages in thread
From: Gabriel Goller @ 2026-05-20 13:02 UTC (permalink / raw)
To: Dominik Csapak; +Cc: pve-devel
On 20.05.2026 14:57, Dominik Csapak wrote:
> because i just looked at this while trying to make a similar change:
>
> is the reverse not also possible? so ipv6-only fabrics?
not currently. We'll have to see how we implement ospfv3 (ospf with ipv6
support) in the future (if that is a separate ipv6-only fabric or integrate into
the existing ospf).
> i noticed that when i add a fabric i have to enter *either* a
> ipv4 or ipv6 address, but the subsequent node edit windows always
> show both (even thouh i didn't configure an ipv4 address)
>
> not sure if that makes sense?
Yeah, that's a bit weird. Don't know if we can easily fix this and hide the
other input if the fabrics prefix of that address family is empty?
> On 5/20/26 2:51 PM, Gabriel Goller wrote:
> > For fabricrs that only support IPv4, the IPv4 prefix is the only
> > available prefix field. Mark it as mandatory in that case while keeping
> > it optional for fabric types that also support IPv6.
> >
> > Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
> > ---
> > www/manager6/sdn/fabrics/FabricEdit.js | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/www/manager6/sdn/fabrics/FabricEdit.js b/www/manager6/sdn/fabrics/FabricEdit.js
> > index 1f7bab362075..760925c50b95 100644
> > --- a/www/manager6/sdn/fabrics/FabricEdit.js
> > +++ b/www/manager6/sdn/fabrics/FabricEdit.js
> > @@ -60,7 +60,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
> > fieldLabel: gettext('IPv4 Prefix'),
> > labelWidth: 120,
> > name: 'ip_prefix',
> > - allowBlank: true,
> > + allowBlank: me.hasIpv6Support,
> > skipEmptyText: true,
> > deleteEmpty: '{!isCreate}',
> > });
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH network] ui: sdn: fabrics: drop dead disabled bindings
2026-05-20 12:51 [PATCH network] ui: sdn: fabrics: drop dead disabled bindings Gabriel Goller
2026-05-20 12:51 ` [PATCH manager] ui: sdn: fabrics: require IPv4 prefix on fabrics without IPv6 support Gabriel Goller
2026-05-20 12:51 ` [PATCH manager] ui: sdn: fabrics: validate prefixes as CIDR addresses Gabriel Goller
@ 2026-05-20 13:35 ` Thomas Lamprecht
2026-05-20 13:43 ` Gabriel Goller
2026-05-20 14:00 ` Thomas Lamprecht
2026-05-20 14:14 ` applied: " Thomas Lamprecht
4 siblings, 1 reply; 12+ messages in thread
From: Thomas Lamprecht @ 2026-05-20 13:35 UTC (permalink / raw)
To: Gabriel Goller, pve-devel
FYI, as this happened yesterday on some series: this subject format prefix suggests
that this is a patch for (pve-)network, but its actually also for pve-manager, like
the rest of the series. This confuses b4 a bit ^^
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH network] ui: sdn: fabrics: drop dead disabled bindings
2026-05-20 13:35 ` [PATCH network] ui: sdn: fabrics: drop dead disabled bindings Thomas Lamprecht
@ 2026-05-20 13:43 ` Gabriel Goller
0 siblings, 0 replies; 12+ messages in thread
From: Gabriel Goller @ 2026-05-20 13:43 UTC (permalink / raw)
To: Thomas Lamprecht; +Cc: pve-devel
On 20.05.2026 15:35, Thomas Lamprecht wrote:
> FYI, as this happened yesterday on some series: this subject format prefix suggests
> that this is a patch for (pve-)network, but its actually also for pve-manager, like
> the rest of the series. This confuses b4 a bit ^^
Ah oops, I am juggling a few patches and got confused.
Sorry.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH network] ui: sdn: fabrics: drop dead disabled bindings
2026-05-20 12:51 [PATCH network] ui: sdn: fabrics: drop dead disabled bindings Gabriel Goller
` (2 preceding siblings ...)
2026-05-20 13:35 ` [PATCH network] ui: sdn: fabrics: drop dead disabled bindings Thomas Lamprecht
@ 2026-05-20 14:00 ` Thomas Lamprecht
2026-05-20 14:05 ` Thomas Lamprecht
2026-05-20 14:14 ` applied: " Thomas Lamprecht
4 siblings, 1 reply; 12+ messages in thread
From: Thomas Lamprecht @ 2026-05-20 14:00 UTC (permalink / raw)
To: Gabriel Goller, pve-devel
Am 20.05.26 um 14:51 schrieb Gabriel Goller:
> The prefix fields used an invalid cbind setup for their disabled state,
> so the bindings didn't work and editing the fabric prefix was possible.
>
> Initially we didn't want the user to be able to update the prefix of a
> fabric, because we would need to add a mechanism to update all the node
> ips at the same time. This broke though and they became editable --
> which is fine, since you still get an error "node has ip out of prefix".
> Keep it this way, because editing a fabric without nodes is still
> useful.
>
> Remove the dead disabled bindings while keeping deleteEmpty handling.
>
> Fixes: e5e3374273af ("ui: fabrics: edit: make ipv4/6 support generic over fabric panels")
> Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
> ---
> www/manager6/sdn/fabrics/FabricEdit.js | 10 ++--------
> 1 file changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/www/manager6/sdn/fabrics/FabricEdit.js b/www/manager6/sdn/fabrics/FabricEdit.js
> index 46c8dd6b0c86..1f7bab362075 100644
> --- a/www/manager6/sdn/fabrics/FabricEdit.js
> +++ b/www/manager6/sdn/fabrics/FabricEdit.js
> @@ -62,10 +62,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
> name: 'ip_prefix',
> allowBlank: true,
> skipEmptyText: true,
> - cbind: {
> - disabled: '{!isCreate}',
> - deleteEmpty: '{!isCreate}',
> - },
> + deleteEmpty: '{!isCreate}',
using that template syntax only makes sense inside a bind (viewModel) or
cbind (config bind), but you move them out of there, so this is not basically
a literal string. Should be rather changed to a literal true or false or
just dropped
> });
> }
>
> @@ -86,10 +83,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
> name: 'ip6_prefix',
> allowBlank: true,
> skipEmptyText: true,
> - cbind: {
> - disabled: '{!isCreate}',
> - deleteEmpty: '{!isCreate}',
> - },
> + deleteEmpty: '{!isCreate}',
same here
> listeners: {
> change: function (textbox, value) {
> let vm = textbox.up('window').getViewModel();
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH network] ui: sdn: fabrics: drop dead disabled bindings
2026-05-20 14:00 ` Thomas Lamprecht
@ 2026-05-20 14:05 ` Thomas Lamprecht
2026-05-20 14:20 ` Gabriel Goller
0 siblings, 1 reply; 12+ messages in thread
From: Thomas Lamprecht @ 2026-05-20 14:05 UTC (permalink / raw)
To: Gabriel Goller, pve-devel
Am 20.05.26 um 16:00 schrieb Thomas Lamprecht:
>> - cbind: {
>> - disabled: '{!isCreate}',
>> - deleteEmpty: '{!isCreate}',
>> - },
>> + deleteEmpty: '{!isCreate}',
> using that template syntax only makes sense inside a bind (viewModel) or
> cbind (config bind), but you move them out of there, so this is not basically
> a literal string. Should be rather changed to a literal true or false or
> just dropped
>
>> });
>> }
>>
>> @@ -86,10 +83,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
>> name: 'ip6_prefix',
>> allowBlank: true,
>> skipEmptyText: true,
>> - cbind: {
>> - disabled: '{!isCreate}',
>> - deleteEmpty: '{!isCreate}',
>> - },
>> + deleteEmpty: '{!isCreate}',
> same here
ah, I think you wanted to just drop the "disabled: '{!isCreate}'," line?
^ permalink raw reply [flat|nested] 12+ messages in thread
* applied: [PATCH network] ui: sdn: fabrics: drop dead disabled bindings
2026-05-20 12:51 [PATCH network] ui: sdn: fabrics: drop dead disabled bindings Gabriel Goller
` (3 preceding siblings ...)
2026-05-20 14:00 ` Thomas Lamprecht
@ 2026-05-20 14:14 ` Thomas Lamprecht
2026-05-20 14:23 ` Gabriel Goller
4 siblings, 1 reply; 12+ messages in thread
From: Thomas Lamprecht @ 2026-05-20 14:14 UTC (permalink / raw)
To: pve-devel, Gabriel Goller
On Wed, 20 May 2026 14:51:16 +0200, Gabriel Goller wrote:
> The prefix fields used an invalid cbind setup for their disabled state,
> so the bindings didn't work and editing the fabric prefix was possible.
>
> Initially we didn't want the user to be able to update the prefix of a
> fabric, because we would need to add a mechanism to update all the node
> ips at the same time. This broke though and they became editable --
> which is fine, since you still get an error "node has ip out of prefix".
> Keep it this way, because editing a fabric without nodes is still
> useful.
>
> [...]
Applied, with s/'{!isCreate}'/!me.isCreate/ fix-up, thanks!
[manager]
[1/1] ui: sdn: fabrics: drop dead disabled bindings
commit: 4c424bf4f5a6549ae50162242e96d1a148cacb57
[1/1] ui: sdn: fabrics: require IPv4 prefix on fabrics without IPv6 support
commit: 8bf5b298010a6cf65bcbe5430bc820be7e0f1ecd
[1/1] ui: sdn: fabrics: validate prefixes as CIDR addresses
commit: 5e2250fb98ba10a7d5b93db9b80fccbc69c492b2
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH network] ui: sdn: fabrics: drop dead disabled bindings
2026-05-20 14:05 ` Thomas Lamprecht
@ 2026-05-20 14:20 ` Gabriel Goller
0 siblings, 0 replies; 12+ messages in thread
From: Gabriel Goller @ 2026-05-20 14:20 UTC (permalink / raw)
To: Thomas Lamprecht; +Cc: pve-devel
On 20.05.2026 16:05, Thomas Lamprecht wrote:
> Am 20.05.26 um 16:00 schrieb Thomas Lamprecht:
> >> - cbind: {
> >> - disabled: '{!isCreate}',
> >> - deleteEmpty: '{!isCreate}',
> >> - },
> >> + deleteEmpty: '{!isCreate}',
> > using that template syntax only makes sense inside a bind (viewModel) or
> > cbind (config bind), but you move them out of there, so this is not basically
> > a literal string. Should be rather changed to a literal true or false or
> > just dropped
> >
> >> });
> >> }
> >>
> >> @@ -86,10 +83,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
> >> name: 'ip6_prefix',
> >> allowBlank: true,
> >> skipEmptyText: true,
> >> - cbind: {
> >> - disabled: '{!isCreate}',
> >> - deleteEmpty: '{!isCreate}',
> >> - },
> >> + deleteEmpty: '{!isCreate}',
> > same here
>
> ah, I think you wanted to just drop the "disabled: '{!isCreate}'," line?
Nah, I actually wanted
deleteEmtpy: !me.isCreate,
(without the cbind)
-_-
I'll send a new version
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: applied: [PATCH network] ui: sdn: fabrics: drop dead disabled bindings
2026-05-20 14:14 ` applied: " Thomas Lamprecht
@ 2026-05-20 14:23 ` Gabriel Goller
0 siblings, 0 replies; 12+ messages in thread
From: Gabriel Goller @ 2026-05-20 14:23 UTC (permalink / raw)
To: Thomas Lamprecht; +Cc: pve-devel
On 20.05.2026 16:14, Thomas Lamprecht wrote:
> On Wed, 20 May 2026 14:51:16 +0200, Gabriel Goller wrote:
> > The prefix fields used an invalid cbind setup for their disabled state,
> > so the bindings didn't work and editing the fabric prefix was possible.
> >
> > Initially we didn't want the user to be able to update the prefix of a
> > fabric, because we would need to add a mechanism to update all the node
> > ips at the same time. This broke though and they became editable --
> > which is fine, since you still get an error "node has ip out of prefix".
> > Keep it this way, because editing a fabric without nodes is still
> > useful.
> >
> > [...]
>
> Applied, with s/'{!isCreate}'/!me.isCreate/ fix-up, thanks!
Ahh, you were faster, thanks -- LGTM!
> [manager]
> [1/1] ui: sdn: fabrics: drop dead disabled bindings
> commit: 4c424bf4f5a6549ae50162242e96d1a148cacb57
> [1/1] ui: sdn: fabrics: require IPv4 prefix on fabrics without IPv6 support
> commit: 8bf5b298010a6cf65bcbe5430bc820be7e0f1ecd
> [1/1] ui: sdn: fabrics: validate prefixes as CIDR addresses
> commit: 5e2250fb98ba10a7d5b93db9b80fccbc69c492b2
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2026-05-20 14:23 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-20 12:51 [PATCH network] ui: sdn: fabrics: drop dead disabled bindings Gabriel Goller
2026-05-20 12:51 ` [PATCH manager] ui: sdn: fabrics: require IPv4 prefix on fabrics without IPv6 support Gabriel Goller
2026-05-20 12:57 ` Dominik Csapak
2026-05-20 13:02 ` Gabriel Goller
2026-05-20 12:51 ` [PATCH manager] ui: sdn: fabrics: validate prefixes as CIDR addresses Gabriel Goller
2026-05-20 13:35 ` [PATCH network] ui: sdn: fabrics: drop dead disabled bindings Thomas Lamprecht
2026-05-20 13:43 ` Gabriel Goller
2026-05-20 14:00 ` Thomas Lamprecht
2026-05-20 14:05 ` Thomas Lamprecht
2026-05-20 14:20 ` Gabriel Goller
2026-05-20 14:14 ` applied: " Thomas Lamprecht
2026-05-20 14:23 ` Gabriel Goller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox