From: Gabriel Goller <g.goller@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [PATCH pve-manager 14/15] ui: sdn: add VRF zone selection for fabrics
Date: Fri, 21 Aug 2026 16:03:58 +0200 [thread overview]
Message-ID: <20260821140404.322081-15-g.goller@proxmox.com> (raw)
In-Reply-To: <20260821140404.322081-1-g.goller@proxmox.com>
Allow BGP and OSPF fabrics to use the VRF created by a simple zone. The
selector ignores simple zones that use the default VRF, because they do
not create separate VRF and thus don't isolate the fabrics. Leaving the
field empty keeps the fabric in the default VRF.
Add the default VRF option to the simple zone editor so users can control
whether a zone creates its own VRF.
Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
---
www/manager6/form/SDNZoneSelector.js | 12 +++++++++++-
www/manager6/sdn/fabrics/FabricEdit.js | 18 ++++++++++++++++++
www/manager6/sdn/zones/SimpleEdit.js | 12 +++++++++++-
3 files changed, 40 insertions(+), 2 deletions(-)
diff --git a/www/manager6/form/SDNZoneSelector.js b/www/manager6/form/SDNZoneSelector.js
index d8a63baeb7bd..4813539cb62a 100644
--- a/www/manager6/form/SDNZoneSelector.js
+++ b/www/manager6/form/SDNZoneSelector.js
@@ -8,6 +8,9 @@ Ext.define(
valueField: 'zone',
displayField: 'zone',
+ // Only show simple zones which create a dedicated VRF.
+ vrfOnly: false,
+
initComponent: function () {
var me = this;
@@ -17,6 +20,13 @@ Ext.define(
property: 'zone',
direction: 'ASC',
},
+ filters: me.vrfOnly
+ ? [
+ function (record) {
+ return record.get('type') === 'simple' && !record.get('default-vrf');
+ },
+ ]
+ : [],
});
Ext.apply(me, {
@@ -42,7 +52,7 @@ Ext.define(
function () {
Ext.define('pve-sdn-zone', {
extend: 'Ext.data.Model',
- fields: ['zone', 'type'],
+ fields: ['zone', 'type', { name: 'default-vrf', type: 'boolean', defaultValue: true }],
proxy: {
type: 'proxmox',
url: '/api2/json/cluster/sdn/zones',
diff --git a/www/manager6/sdn/fabrics/FabricEdit.js b/www/manager6/sdn/fabrics/FabricEdit.js
index e9e0d1fa6286..b3992b294b93 100644
--- a/www/manager6/sdn/fabrics/FabricEdit.js
+++ b/www/manager6/sdn/fabrics/FabricEdit.js
@@ -37,6 +37,19 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
disabled: '{!isCreate}',
},
},
+ {
+ xtype: 'pveSDNZoneSelector',
+ fieldLabel: gettext('VRF Zone'),
+ labelWidth: 120,
+ name: 'zone',
+ vrfOnly: true,
+ allowBlank: true,
+ skipEmptyText: true,
+ emptyText: gettext('Default VRF'),
+ cbind: {
+ deleteEmpty: '{!isCreate}',
+ },
+ },
],
additionalItems: [],
@@ -50,6 +63,11 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
me.autoLoad = !me.isCreate;
me.method = me.isCreate ? 'POST' : 'PUT';
+ let supportsVrf = ['bgp', 'ospf'].includes(me.extraRequestParams.protocol);
+ let vrfZoneField = me.items.find((item) => item.name === 'zone');
+ vrfZoneField.hidden = !supportsVrf;
+ vrfZoneField.disabled = !supportsVrf;
+
if (!me.isCreate) {
me.url = `${me.baseUrl}/${me.fabricId}`;
} else {
diff --git a/www/manager6/sdn/zones/SimpleEdit.js b/www/manager6/sdn/zones/SimpleEdit.js
index ba10bb3616ea..4ec77057a6e5 100644
--- a/www/manager6/sdn/zones/SimpleEdit.js
+++ b/www/manager6/sdn/zones/SimpleEdit.js
@@ -18,7 +18,17 @@ Ext.define('PVE.sdn.zones.SimpleInputPanel', {
initComponent: function () {
var me = this;
- me.items = [];
+ me.items = [
+ {
+ xtype: 'proxmoxcheckbox',
+ name: 'default-vrf',
+ fieldLabel: gettext('Create zone in default VRF'),
+ checked: true,
+ uncheckedValue: 0,
+ defaultValue: 1,
+ deleteDefaultValue: !me.isCreate,
+ },
+ ];
me.advancedItems = [
{
xtype: 'proxmoxcheckbox',
--
2.47.3
next prev parent reply other threads:[~2026-08-21 14:05 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-21 14:03 [RFC manager/network/proxmox{-ve-rs,-perl-rs} 00/15] SDN VRF support Gabriel Goller
2026-08-21 14:03 ` [PATCH proxmox-ve-rs 01/15] frr: add VRF-aware OSPF rendering Gabriel Goller
2026-08-21 14:03 ` [PATCH proxmox-ve-rs 02/15] sdn: add zone references to OSPF and BGP fabrics Gabriel Goller
2026-08-21 14:03 ` [PATCH proxmox-ve-rs 03/15] sdn: generate fabric routing configuration in zone VRFs Gabriel Goller
2026-08-21 14:03 ` [PATCH proxmox-ve-rs 04/15] sdn: fix VRF route-map scoping and zone ID validation Gabriel Goller
2026-08-21 14:03 ` [PATCH proxmox-ve-rs 05/15] tests: fabrics: add test for fabrics in VRFs Gabriel Goller
2026-08-21 14:03 ` [PATCH proxmox-perl-rs 06/15] pve-rs: fabrics: assign network interfaces to configured VRFs Gabriel Goller
2026-08-21 14:03 ` [PATCH proxmox-perl-rs 07/15] pve-rs: fabrics: make per-fabric status queries VRF-aware Gabriel Goller
2026-08-21 14:03 ` [PATCH proxmox-perl-rs 08/15] pve-rs: fabrics: include VRF routes in aggregate status Gabriel Goller
2026-08-21 14:03 ` [PATCH pve-network 09/15] sdn: add optional VRFs for simple zones Gabriel Goller
2026-08-21 14:03 ` [PATCH pve-network 10/15] sdn: allow fabrics to use simple zone VRFs Gabriel Goller
2026-08-21 14:03 ` [PATCH pve-network 11/15] sdn: always generate EVPN " Gabriel Goller
2026-08-21 14:03 ` [PATCH pve-network 12/15] api: sdn: allow EVPN zones as fabric VRFs Gabriel Goller
2026-08-21 14:03 ` [PATCH pve-network 13/15] api: sdn: disallow BGP fabrics in EVPN zone VRFs Gabriel Goller
2026-08-21 14:03 ` Gabriel Goller [this message]
2026-08-21 14:03 ` [PATCH pve-manager 15/15] ui: sdn: expose EVPN zones as fabric VRFs Gabriel Goller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260821140404.322081-15-g.goller@proxmox.com \
--to=g.goller@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.