[pve-devel] [PATCH pve-network v3 03/21] fabrics: add fabrics module

2025-05-22 Thread Stefan Hanreich
Add a new basic Fabrics module that can be used for reading and writing the fabrics configuration file. Co-authored-by: Gabriel Goller Signed-off-by: Stefan Hanreich --- src/PVE/Network/SDN/Fabrics.pm | 49 ++ src/PVE/Network/SDN/Makefile | 2 +- 2 files chang

[pve-devel] [PATCH pve-manager v3 18/18] ui: sdn: vxlan: add fabric property

2025-05-22 Thread Stefan Hanreich
VXLAN zones can now use fabrics instead of having to specify peers manually. Since the network selector doesn't implement deleteEmpty, we have to manually handle deleted properties in the VXLAN input panel. Signed-off-by: Stefan Hanreich --- www/manager6/sdn/zones/VxlanEdit.js | 52 +

[pve-devel] superseded: [PATCH proxmox v4 1/2] network-types: initial commit

2025-05-22 Thread Stefan Hanreich
https://lore.proxmox.com/pve-devel/20250522161731.537011-1-s.hanre...@proxmox.com/T/#t On 4/4/25 15:55, Stefan Hanreich wrote: > This commit moves some IP address and MAC address types from > proxmox-ve-config to proxmox, so they can be used re-used across our > code base. > > The code in this co

[pve-devel] [PATCH pve-manager v3 05/18] fabric: add OSPF interface properties

2025-05-22 Thread Stefan Hanreich
Define an OSPF-specific InterfacePanel for future use (currently there are no protocol-specific properties for OSPF interfaces). Co-authored-by: Stefan Hanreich Signed-off-by: Gabriel Goller --- www/manager6/Makefile | 1 + www/manager6/sdn/fabrics/ospf/InterfacePanel.

[pve-devel] [PATCH pve-manager v3 03/18] fabric: add common interface panel

2025-05-22 Thread Stefan Hanreich
Implements a shared interface selector panel for openfabric and ospf fabrics. This GridPanel combines data from two sources: the node network interfaces (/nodes//network) and the fabrics section configuration, displaying a merged view of both sources. It implements the following warning states: -

[pve-devel] superseded: [PATCH access-control/cluster/docs/gui-tests/manager/network/proxmox{, -ve-rs, -perl-rs} v2 00/57] Add SDN Fabrics

2025-05-22 Thread Stefan Hanreich
https://lore.proxmox.com/pve-devel/20250522161731.537011-1-s.hanre...@proxmox.com/T/#t On 4/4/25 18:28, Gabriel Goller wrote: > This series allows the user to add fabrics such as OpenFabric and OSPF over > their clusters. > > This series relies on: > https://lore.proxmox.com/pve-devel/2025040413

[pve-devel] [PATCH pve-network v3 21/21] frr: bump frr config version to 10.2.2

2025-05-22 Thread Stefan Hanreich
With the package bumped to 10.2.2 we need to generate the configuration with the matching version, otherwise frr-reload.py fails to create a delta of the configuration because of the version mismatch. Reloading still works, but there is an ugly warning in the reload log, that might throw off users.

[pve-devel] [PATCH proxmox-ve-rs v3 17/21] config: sdn: fabrics: add fabric config

2025-05-22 Thread Stefan Hanreich
The FabricConfig transforms the flat section configuration into its hierarchical representation, which makes querying and validating the fabrics configuration more ergonomic. It provides the CRUD methods for safely manipulating the fabric configuration, while checking for possible errors. It is in

[pve-devel] [PATCH proxmox-perl-rs v3 5/5] pve-rs: sdn: fabrics: add helper for network API endpoint

2025-05-22 Thread Stefan Hanreich
In PVE we use the GET /nodes/{node}/network API endpoint to return all currently configured network interfaces on a specific node. In order to be able to use SDN fabrics in Ceph and the migration settings, we add a helper method that returns all fabrics formatted in the same format as the pre-exist

[pve-devel] [PATCH pve-manager v3 04/18] fabric: add OpenFabric interface properties

2025-05-22 Thread Stefan Hanreich
This component extends the InterfacePanel and adds Openfabric specific form fields. Hello Multiplier is hidden by default, but can be activated in the column settings of the DataGrid. Co-authored-by: Stefan Hanreich Signed-off-by: Gabriel Goller --- www/manager6/Makefile

[pve-devel] [PATCH pve-network v3 12/21] fabrics: generate ifupdown configuration

2025-05-22 Thread Stefan Hanreich
Currently, the ifupdown config generation is handled solely by the zones plugin. Since the fabrics need to generate ifupdown configuration as well, we create a new helper in the SDN module. It then in turn calls into the zone and fabrics plugin, and merges the generated raw configuration before wri

[pve-devel] [PATCH pve-manager v3 11/18] fabric: add OSPF fabric edit panel

2025-05-22 Thread Stefan Hanreich
Extends the common FabricEdit component and adds the OSPF-specific items to it. Co-authored-by: Stefan Hanreich Signed-off-by: Gabriel Goller --- www/manager6/Makefile | 1 + www/manager6/sdn/fabrics/ospf/FabricEdit.js | 20 2 files changed, 21 insert

[pve-devel] [PATCH pve-network v3 15/21] api: fabrics: add fabric submodule

2025-05-22 Thread Stefan Hanreich
This API module provides CRUD functionality for fabrics. The list endpoint works analogous to the existing SDN endpoints with their pending / running parameters. Co-authored-by: Gabriel Goller Signed-off-by: Stefan Hanreich --- src/PVE/API2/Network/SDN/Fabrics.pm| 8 + src/PVE/API2/Ne

[pve-devel] [PATCH pve-access-control v3 1/1] permissions: add ACL paths for SDN fabrics

2025-05-22 Thread Stefan Hanreich
Add permission path /sdn/fabrics/{fabric_id}. There are currently only SDN-specific permissions for the fabric itself, not the nodes. For displaying / editing the nodes, the existing permissions Sys.Audit or Sys.Modify on /nodes/{node} are required, because they are already used for viewing / editi

[pve-devel] [PATCH proxmox-ve-rs v3 14/21] config: sdn: fabrics: add ospf properties

2025-05-22 Thread Stefan Hanreich
Define the protocol-specific properties for OSPF and add the concrete section types to the Fabric and Node enum. Currently only area is included, which is also the only property that is required by FRR. We wanted to start with a minimal set of properties and add any options later on, depending on f

[pve-devel] [PATCH proxmox-perl-rs v3 1/5] pve-rs: Add PVE::RS::SDN::Fabrics module

2025-05-22 Thread Stefan Hanreich
This module exposes the functionality provided proxmox-ve-config for the SDN fabrics to perl. We add initial support for reading and writing the section config stored in /etc/pve/sdn/fabrics.cfg as well as the running configuration, stored in /etc/pve/sdn/.running-config. It also provides a helper

[pve-devel] [PATCH proxmox-perl-rs v3 4/5] pve-rs: sdn: fabrics: add helper to generate ifupdown2 configuration

2025-05-22 Thread Stefan Hanreich
SDN fabrics can be used to configure IP addresses on interfaces directly, so we need to generate the respective ifupdown2 configuration from the fabrics configuration. We also set some additional properties that are required for interfaces that are part of a fabric (IP forwarding). We use dummy int

[pve-devel] [PATCH pve-network v3 09/21] test: isis: add test for standalone configuration

2025-05-22 Thread Stefan Hanreich
With how the config generation worked before, it was not possible to create a standalone isis controller, since the FRR config was only generated with an existing EVPN controller. Since each controller is now responsible for creating its own configuration, it is possible to create a standalone isis

[pve-devel] [PATCH pve-network v3 18/21] controller: evpn: add fabrics integration

2025-05-22 Thread Stefan Hanreich
Provide a new option to the EVPN controller, fabric, that can be used to define a fabric as the underlay network for the EVPN controller. When applying the configuration, the EVPN controller then automatically generates the peer list and from the fabric configuration, rather than users having to sp

[pve-devel] [PATCH pve-manager v3 09/18] fabric: add generic fabric edit panel

2025-05-22 Thread Stefan Hanreich
Add generic base component to add and edit Fabrics, which contains the fields required for every protocol. The properties for every protocol are stored in different components and each extend this one. Co-authored-by: Stefan Hanreich Signed-off-by: Gabriel Goller --- www/manager6/Makefile

[pve-devel] [PATCH pve-manager v3 14/18] ui: permissions: add ACL path for fabrics

2025-05-22 Thread Stefan Hanreich
Expose the newly created ACL path for fabrics in the UI, so users can configure them. Signed-off-by: Stefan Hanreich --- www/manager6/data/PermPathStore.js | 1 + 1 file changed, 1 insertion(+) diff --git a/www/manager6/data/PermPathStore.js b/www/manager6/data/PermPathStore.js index 72da2e9da

[pve-devel] [PATCH pve-network v3 07/21] sdn: add frr config generation helpers

2025-05-22 Thread Stefan Hanreich
Adds a new method to the SDN module that is responsible for generating and writing the FRR configuration for all SDN plugins combined. It utilizes the newly introduced FRR helper as well as the newly introduced API for the controllers to generate an frr_config instead of generating the configuratio

[pve-devel] [PATCH proxmox-ve-rs v3 11/21] config: sdn: fabrics: add node section types

2025-05-22 Thread Stefan Hanreich
NodeSection functions identically to the FabricSection type. It contains all the common properties that nodes from all protocols have. Protocol-specific properties can be defined via the type parameter of NodeSection. It also provides generic implementations for ApiType, so if the type parameter im

[pve-devel] [PATCH proxmox-ve-rs v3 20/21] sdn: fabrics: implement FRR configuration generation

2025-05-22 Thread Stefan Hanreich
Add support to generate FRR configurations (using proxmox-frr types) from a valid FabricConfig. Introduce a feature flag for an optional dependency on proxmox-frr for the FRR types. Add the FrrConfigBuild struct, which currently holds a Valid but will eventually contain all configurations that outp

[pve-devel] [PATCH pve-docs v3 1/1] fabrics: add initial documentation for sdn fabrics

2025-05-22 Thread Stefan Hanreich
From: Gabriel Goller Add initial documentation for the SDN fabrics, as well as additional documentation for all available protocols, Openfabric and OSPF. The screenshots are generated using pve-gui-tests. Signed-off-by: Stefan Hanreich --- pvesdn.adoc | 227

[pve-devel] [PATCH pve-manager v3 16/18] ui: add sdn networks to ceph / migration

2025-05-22 Thread Stefan Hanreich
Pass the 'include_sdn' type to the network selectors used in the datacenter migration settings panel, as well as the ceph wizard, to enable users to select SDN Vnets, as well as fabrics in the UI. Signed-off-by: Stefan Hanreich --- www/manager6/ceph/CephInstallWizard.js | 2 ++ www/manager6/dc/O

[pve-devel] [PATCH pve-gui-tests v3 1/1] pve: add sdn/fabrics screenshots

2025-05-22 Thread Stefan Hanreich
From: Gabriel Goller Add a few screenshots for the sdn->fabrics panel: * fabric overview * openfabric fabric creation * ospf fabric creation * openfabric node creation * ospf node creation Signed-off-by: Gabriel Goller --- create_fabrics_screenshots | 198 +

[pve-devel] [PATCH pve-manager v3 15/18] api: network: add include_sdn / fabric type

2025-05-22 Thread Stefan Hanreich
In order to be able to show SDN networks in the network selector dropdowns, we introduce a new type ('include_sdn') to the API endpoint that lists network interfaces of a node. The return value for existing parameters stays unchanged to preserve backwards-compatibility. Callers have to explicitly p

[pve-devel] [PATCH pve-manager v3 06/18] fabric: add generic node edit panel

2025-05-22 Thread Stefan Hanreich
This component is the base EditWindow for Nodes of all protocols. It utilizes the existing network endpoint for getting information on the interfaces of the nodes, as well as the existing pveNodeSelector component for displaying a node dropdown. In the future we could provide a single endpoint that

[pve-devel] [PATCH pve-network v3 20/21] test: fabrics: add test cases for ospf and openfabric + evpn

2025-05-22 Thread Stefan Hanreich
Add two additional test cases for EVPN zones, which use fabrics as the underlay network - one for OSPF, one for OpenFabric. Those test cases utilize the newly introduced fabric option in the EVPN controller. Existing configurations, that use peers, are already covered by other test cases. The test

[pve-devel] [PATCH pve-manager v3 08/18] fabric: add OSPF node edit

2025-05-22 Thread Stefan Hanreich
Extend the generic NodeEdit panel for OSPF. Currently there are no node-specific properties for OSPF, so leave the additionalItems empty. Co-authored-by: Gabriel Goller Signed-off-by: Stefan Hanreich --- www/manager6/Makefile | 1 + www/manager6/sdn/fabrics/ospf/NodeEdit.js

[pve-devel] [PATCH pve-network v3 04/21] refactor: controller: move frr methods into helper

2025-05-22 Thread Stefan Hanreich
Up until now the EVPN controller contained all the helper methods as well as the configuration generation logic for FRR. Since we need to write FRR configuration with the fabrics as well, move the FRR helper files into its own FRR module, so they can be used by the EVPN plugin as well as the future

[pve-devel] [PATCH pve-manager v3 01/18] api: use new sdn config generation functions

2025-05-22 Thread Stefan Hanreich
From: Gabriel Goller With the introduction of fabrics, frr configuration generation and etc/network/interfaces generation has been reworked and renamed for better clarity, since now not only zones / controllers are responsible for generating the ifupdown / FRR configuration. Switch this endpoint

[pve-devel] [PATCH pve-manager v3 02/18] ui: fabrics: add model definitions for fabrics

2025-05-22 Thread Stefan Hanreich
Add the three model definitions for SDN fabrics in a shared Common module, so they can be accessed by all UI components for the SDN fabrics. Co-authored-by: Gabriel Goller Signed-off-by: Stefan Hanreich --- www/manager6/Makefile | 1 + www/manager6/sdn/fabrics/Common.js | 36 +

[pve-devel] [PATCH pve-network v3 14/21] api: fabrics: add root-level module

2025-05-22 Thread Stefan Hanreich
There is one endpoint (/all) at the top-level that fetches both types of fabric entities (fabrics & nodes) and lists them separately. This is used for the main view, in order to avoid having to do two API calls. It works analogous to the existing root-level SDN API calls with the running / pending

[pve-devel] [PATCH proxmox-widget-toolkit v3 1/1] network selector: add type parameter

2025-05-22 Thread Stefan Hanreich
The network endpoint of the PVE API allows selecting interfaces by type, but the network selector widget currently does not support passing the type to the API call. This is required for the SDN fabrics, which introduced a new special type to this endpoint that additionally selects all SDN interfa

[pve-devel] [PATCH pve-network v3 19/21] zone: vxlan: add fabrics integration

2025-05-22 Thread Stefan Hanreich
Add a new property to the VXLAN zone, that can contain the name of a fabric. This automatically generates the peer-list from the fabric, instead of having to manually write a comma-separated IP list. This changes the peer field to optional from required. Either the peers or the fabric field needs t

[pve-devel] [PATCH pve-network v3 16/21] api: fabrics: add node submodule

2025-05-22 Thread Stefan Hanreich
The GET endpoint lists all nodes from all fabrics - for listing the nodes of a specific fabric or editing nodes another submodule will be introduced below the node submodule in a future commit. Co-authored-by: Gabriel Goller Signed-off-by: Stefan Hanreich --- src/PVE/API2/Network/SDN/Fabrics.pm

[pve-devel] [PATCH pve-network v3 08/21] sdn: api: add check for rewriting frr configuration

2025-05-22 Thread Stefan Hanreich
With the old FRR config generation logic, we never wrote an empty FRR configuration if all controllers got deleted. This meant that deleting all controllers still left the previous FRR configuration on the nodes, never disabling BGP / IS-IS. The new logic now writes an empty configuration if there

[pve-devel] [PATCH pve-network v3 06/21] controllers: define new api for frr config generation

2025-05-22 Thread Stefan Hanreich
With the changes to how we handle the frr config generation, controllers are now no longer responsible for serializing and writing the FRR configuration. Instead, we pass the existing frr_config perl hash to every controller, where controllers append their respective configuration. This requires a

[pve-devel] [PATCH pve-network v3 02/21] debian: add dependency to proxmox-perl-rs

2025-05-22 Thread Stefan Hanreich
From: Gabriel Goller We call perlmod rust functions directly from pve-network. Signed-off-by: Gabriel Goller --- debian/control | 17 ++--- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/debian/control b/debian/control index 9ddbb13..41f8ca9 100644 --- a/debian/cont

[pve-devel] [PATCH proxmox-ve-rs v3 02/21] ve-config: move types to proxmox-network-types

2025-05-22 Thread Stefan Hanreich
Some of the types defined in this crate have been moved to proxmox-network-types so they can be re-used across crates. This is a preparation for the fabrics patch series, where those types will get used by addtional, new, crates. Remove the types that have been moved and adjust the imports for the

[pve-devel] [PATCH pve-network v3 11/21] sdn: commit fabrics config to running configuration

2025-05-22 Thread Stefan Hanreich
Save the fabrics configuration in the running configuration, when applying the SDN configuration. This causes the FRR configuration to be actually generated for the openfabric and ospf plugins, since the FRR configuration is generated from the running configuration. Co-authored-by: Gabriel Goller

[pve-devel] [PATCH proxmox-perl-rs v3 2/5] pve-rs: sdn: fabrics: add api methods

2025-05-22 Thread Stefan Hanreich
The FabricConfig from proxmox-ve-config implements CRUD functionality for Fabrics and Nodes stored in the section config. We expose them via perlmod, so they can be used in the API endpoints defined in perl. they map 1:1 to the respective API endpoints. They are simply calling the respective imple

[pve-devel] [PATCH pve-manager v3 12/18] fabrics: Add main FabricView

2025-05-22 Thread Stefan Hanreich
From: Gabriel Goller TreeView that shows all the fabrics and nodes in a hierarchical structure. It also shows all the pending changes from the running-config. From here all entities in the fabrics can be added / edited and deleted, utilizing the previously created EditWindow components for Fabric

[pve-devel] [PATCH pve-manager v3 17/18] ui: sdn: add evpn controller fabric integration

2025-05-22 Thread Stefan Hanreich
Expose the new fabric field added to the EVPN controller in the UI. Users can now select any fabric in the EVPN controller, instead of having to specify peers manually. This simplifies setting up an EVPN zone via SDN fabrics considerably. Since the peers field can now be empty, we have to adapt th

[pve-devel] [PATCH proxmox-ve-rs v3 13/21] config: sdn: fabrics: add openfabric properties

2025-05-22 Thread Stefan Hanreich
This commit adds the protocol-specific properties, that are required for an Openfabric fabric. They correspond to the respective properties in the FRR fabricd configuration. For more information, see the FRR documentation [1]. While the hello interval and csnp interval could be set on a per-interf

[pve-devel] [PATCH proxmox-ve-rs v3 19/21] sdn: fabrics: config: add conversion from / to section config

2025-05-22 Thread Stefan Hanreich
Add helper methods for populating a FabricConfig from the section config, as well as converting it back into the respective section config structs. By utilizing the Valid type, we can ensure that only valid configurations get written via the provided write_section_config method, since it is only i

[pve-devel] [PATCH proxmox-ve-rs v3 16/21] config: sdn: fabrics: add section config

2025-05-22 Thread Stefan Hanreich
The Section type represents the configuration as stored in '/etc/pve/sdn/fabrics.cfg'. It can contain a mix of fabric and node sections, which are in turn unique to each protocol. We utilize the generic FabricSection and NodeSection types to define every possible section type in the section config.

[pve-devel] [PATCH access-control/cluster/docs/gui-tests/manager/network/proxmox{, -firewall, -ve-rs, -perl-rs, -widget-toolkit} v3 00/75] Add SDN Fabrics

2025-05-22 Thread Stefan Hanreich
Overview This series allows the user to easily use dynamic routing protocols such as OpenFabric and OSPF in their clusters. It also integrates existing features, such as Ceph with the new SDN fabrics feature to enable users simple configuration of e.g. full-mesh Ceph clusters via the Web

[pve-devel] [PATCH pve-manager v3 13/18] utils: avoid line-break in pending changes message

2025-05-22 Thread Stefan Hanreich
From: Gabriel Goller Remove line-break when showing the current status of SDN configuration objects. Otherwise the column would contain an additional newline, making the row too large. Co-authored-by: Gabriel Goller Signed-off-by: Stefan Hanreich --- www/manager6/Utils.js | 2 +- 1 file chang

[pve-devel] [PATCH pve-manager v3 10/18] fabric: add OpenFabric fabric edit panel

2025-05-22 Thread Stefan Hanreich
Add a component that extends the common FabricEdit component and adds the OpenFabric-specific items to it. Those are currently the Hello Interval and CSNP interval, which can be configured globally for all members of the fabric. Since OSPF currently does not provide IPv6 support (yet), we also mov

[pve-devel] [PATCH proxmox-ve-rs v3 09/21] frr: add generic types over openfabric and ospf

2025-05-22 Thread Stefan Hanreich
From: Gabriel Goller Add generic FRR types that contain openfabric and ospf variants. Also add the FrrConfig, which holds the whole FRR configuration in a single struct, which will then be serialized to the FRR configuration file. Signed-off-by: Gabriel Goller --- proxmox-frr/src/lib.rs

[pve-devel] [PATCH proxmox-ve-rs v3 08/21] frr: add route-map types

2025-05-22 Thread Stefan Hanreich
From: Gabriel Goller Only a very limited subset of the FRR route-maps is implemented here intially, only what is currently needed for the fabrics feature. Once standalone route-maps will make it into PVE, we will build on the structs defined here and add possibly the full featureset. The main use

[pve-devel] [PATCH pve-manager v3 07/18] fabric: add OpenFabric node edit

2025-05-22 Thread Stefan Hanreich
Extend the common NodeEdit panel with the Openfabric specific properties. While IPv6 is a property that can be configured on all nodes in the config, it is currently not supported for OSPF so we only show it for Openfabric nodes. Co-authored-by: Gabriel Goller Signed-off-by: Stefan Hanreich ---

[pve-devel] [PATCH proxmox-ve-rs v3 04/21] frr: create proxmox-frr crate

2025-05-22 Thread Stefan Hanreich
From: Gabriel Goller This crate holds FRR-types, so rust-types that closely resemble FRR-configuration items. These types can then simply be converted to strings (and the final FRR config) by serializing. This has minimal dependencies and it's only internal dependency is proxmox-network-types, wh

[pve-devel] [PATCH pve-network v3 17/21] api: fabrics: add fabricnode submodule

2025-05-22 Thread Stefan Hanreich
Provides CRUD functionality for editing nodes inside a fabric, as well as an endpoint for listing all the nodes. The URL structure is modeled after the fact that a node can only be uniquely identified by its ID as well as the ID of the fabric that contains the node. Since fabrics can be used to ed

[pve-devel] [PATCH proxmox-firewall v3 1/1] firewall: nftables: migrate to proxmox-network-types

2025-05-22 Thread Stefan Hanreich
The fabrics patch series moved some generic network types into its own crate, so they can be reused across crates. Migrate proxmox-firewall to use the new proxmox-network-types crate instead of proxmox_ve_config. No functional changes intended. Signed-off-by: Stefan Hanreich --- Cargo.toml

[pve-devel] [PATCH proxmox-ve-rs v3 21/21] ve-config: add integrations tests

2025-05-22 Thread Stefan Hanreich
From: Gabriel Goller Add integration tests for the full cycle from section-config to FRR config file for both openfabric and ospf. It tests everything end-to-end, from reading the configuration file to converting it into a FabricConfig and then serializing an FRR configuration from it. Signed-of

[pve-devel] [PATCH proxmox v3 4/4] api-macro: add allof schema to enum

2025-05-22 Thread Stefan Hanreich
The API macro required the enum variants to either have a oneOf or ObjectSchema, but did not allow allOf schemas. There's not really a reason to not allow allOf as well, since they implement ObjectSchemaType as well and represent an ObjectSchema, just like oneOf and ObjectSchema do. This is in pre

[pve-devel] [PATCH pve-network v3 13/21] fabrics: add jsonschema for fabrics and nodes

2025-05-22 Thread Stefan Hanreich
Provide a JSONSchema for the new two entity types, fabric and node. While both are stored in the same configuration file, there are two separate API submodules for fabrics and nodes, so we need to separate the schema definitions as well. The schemas are equivalent to the API types defined in Rust.

[pve-devel] [PATCH pve-network v3 10/21] sdn: frr: add daemon status to frr helper

2025-05-22 Thread Stefan Hanreich
Add functions that allow reading and manipulating values in the /etc/frr/daemons file. We need this for en/disabling daemons depending on which fabric types are configured. We enable daemons dynamically, depending on the currently configured fabrics. If a daemon is enabled but all fabrics using it

[pve-devel] [PATCH proxmox-ve-rs v3 18/21] common: sdn: fabrics: implement validation

2025-05-22 Thread Stefan Hanreich
The SDN fabrics configuration needs to validate properties of structs that are dependent on their context. For instance the IP of a node needs to be contained in the referenced fabric. Simple schema validation is not sufficient for proper validation of the complete fabrics configuration. In order

[pve-devel] [PATCH pve-network v3 05/21] frr: add new helpers for reloading frr configuration

2025-05-22 Thread Stefan Hanreich
The reload and restart parts of the original reload_controller_config have been split into two functions, in order to make error handling in the new apply function easier. The new apply function tries to reload via frr-reload.py and if that fails, it falls back to restarting the frr service. Sinc

[pve-devel] [PATCH pve-network v3 01/21] sdn: fix value returned by pending_config

2025-05-22 Thread Stefan Hanreich
For special types that were encoded by the encode_value function in SDN, we returned the encoded value in the API, rather than the actual value. Since we use the encoded value only for comparison, we need to return the original value instead of the encoded value. Signed-off-by: Stefan Hanreich --

[pve-devel] [PATCH proxmox v3 1/4] network-types: initial commit

2025-05-22 Thread Stefan Hanreich
This commit moves some IP address and MAC address types from proxmox-ve-config to proxmox, so they can be used re-used across our code base. The code in this commit is mostly the same as in proxmox-ve-config ('bc9253d8'), but I have made a few changes: * Added additional documentation to some of

[pve-devel] [PATCH pve-cluster v3 1/1] cfs: add fabrics.cfg to observed files

2025-05-22 Thread Stefan Hanreich
In a previous commit we already added the openfabric / ospf configuration files, but the configuration format changed since then, so we replace them with the single configuration file used by the fabrics now. Also add a postinst script that removes the leftover folder from that change. Signed-off

[pve-devel] [PATCH proxmox-perl-rs v3 3/5] pve-rs: sdn: fabrics: add frr config generation

2025-05-22 Thread Stefan Hanreich
We use proxmox-ve-config to generate a FRR config and serialize it with the proxmox-frr crate in order to return it to perl in its internally used format (an array of strings). The Perl SDN module in turn merges it with the FRR configuration generated by Perl modules and persists it to the FRR conf

[pve-devel] [PATCH proxmox-ve-rs v3 15/21] config: sdn: fabrics: add api types

2025-05-22 Thread Stefan Hanreich
Add an api submodule to the section config module, that provides the types that are intended to be returned and accepted by the Perl API in Proxmox VE. This allows us to decouple the format returned in the API from the configuration format. This is particularly relevant in the case of the NodeSect

[pve-devel] [PATCH proxmox-ve-rs v3 03/21] sdn-types: initial commit

2025-05-22 Thread Stefan Hanreich
This crate contains SDN specific types, so they can be re-used across multiple crates (The initial use-case being shared types between proxmox-frr and proxmox-ve-config). This initial commit contains types for the following entities: * OpenFabric Hello Interval/Multiplier and CSNP Interval * Netwo

[pve-devel] [PATCH proxmox-ve-rs v3 10/21] config: sdn: fabrics: add section types

2025-05-22 Thread Stefan Hanreich
The fabrics configuration consists of two different entity types: fabrics and nodes. This commit adds support for the fabrics inside this section configuration. There are properties required for all fabrics, regardless of type, which are the ID of the fabric as well as the IP prefix of the fabric.

[pve-devel] [PATCH proxmox-ve-rs v3 07/21] frr: add ospf types

2025-05-22 Thread Stefan Hanreich
From: Gabriel Goller Add OSPF-specific FRR types. This also reuses the types from proxmox-network-types. The NetworkType FRR option is implemented here, but not exposed to the interface, as we want to keep it simple for the users. If they do not set an IP, then the interface is considered to be

[pve-devel] [PATCH proxmox-ve-rs v3 12/21] config: sdn: fabrics: add interface name struct

2025-05-22 Thread Stefan Hanreich
A simple String wrapper that represents the name of a network interface. We are restricting the interface name to ASCII-only characters via the regex, since otherwise the length check would fail, due to String being Unicode. While network interface names can be arbitrary bytes and don't correspond

[pve-devel] [PATCH proxmox-ve-rs v3 06/21] frr: add openfabric types

2025-05-22 Thread Stefan Hanreich
From: Gabriel Goller Implement OpenFabric-specific variants of common enums that encapsulate protocol properties defined in proxmox-network-types. The primary addition is OpenFabricInterface, which stores protocol-specific timing parameters: HelloInterval (neighbor discovery frequency), CsnpInter

[pve-devel] [PATCH proxmox-ve-rs v3 05/21] frr: add common frr types

2025-05-22 Thread Stefan Hanreich
From: Gabriel Goller Add common FRR configuration types such as FrrWord, CommonInterfaceName, etc. These are some common types that are used by both openfabric and ospf and the generic types that span the two protocols. The FrrWord is a simple primitive in FRR, which is a ascii-string that doesn'

[pve-devel] [PATCH proxmox-ve-rs v3 01/21] config: use proxmox_serde perl helpers

2025-05-22 Thread Stefan Hanreich
proxmox_serde provides helpers for parsing optional numbers / booleans coming from perl, so move to using them instead of implementing our own versions here. No functional changes intended. Signed-off-by: Stefan Hanreich --- proxmox-ve-config/Cargo.toml | 1 + proxmox-ve-config/deb

[pve-devel] [PATCH proxmox v3 2/4] network-types: make cidr and mac-address types usable by the api

2025-05-22 Thread Stefan Hanreich
Implement ApiType and UpdaterType in order to be able to directly use the CIDR and MacAddress types in the API. Their schema is a string and they get (de-)serialized by the respective FromStr / Display implementations. Signed-off-by: Stefan Hanreich --- proxmox-network-types/Cargo.toml |

[pve-devel] [PATCH proxmox v3 3/4] network-types: add api types for ipv4/6

2025-05-22 Thread Stefan Hanreich
Add two types that transparently wrap the std structs for IPv4 and IPv6 addresses as well as MacAddress, so they can be used directly in structs with the API macro. Similar to their CIDR counterparts, they have a StringSchema and are (de-)serialized via the respective FromStr and Display implementa

Re: [pve-devel] [PATCH v2 storage 2/2] rbd plugin: status: use actual storage usage as basis for calculation

2025-05-22 Thread Fiona Ebner
Am 14.05.25 um 11:36 schrieb Fiona Ebner: > As reported in the enterprise support, the usage percentage presented > by Proxmox VE can be quite different from what Ceph itself shows when > compression is used on the pool. The reason is that Proxmox VE used > the 'stored' value as a basis for the cal

[pve-devel] [PATCH pve_flutter_frontend] refactor: reformat code using `dart format` command

2025-05-22 Thread Shan Shaji
This commit formats the entire code using the `dart format .` command. Signed-off-by: Shan Shaji --- lib/widgets/pve_guest_migrate_widget.dart | 6 -- lib/widgets/pve_guest_overview_header.dart | 6 -- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/widgets/pve_guest_

[pve-devel] [PATCH pve-storage 0/2] move qemu_img_create to common helpers and enable preallocation on backed images

2025-05-22 Thread Alexandre Derumier via pve-devel
--- Begin Message --- This is part of my work on qcow2 external snapshot, but could improve current qcow2 linked clone This patch serie move qemu_img_create to common helpers, and enable preallocation on backed_image to increase performance This require l2_extended=on on the backed image I have

[pve-devel] [PATCH pve-storage 2/2] common: qemu_img_create: add backing_file support

2025-05-22 Thread Alexandre Derumier via pve-devel
--- Begin Message --- and use it for plugin linked clone This also enable extended_l2=on, as it's mandatory for backing file preallocation. Preallocation was missing previously, so it should increase performance for linked clone now (around x5 in randwrite 4k) cluster_size is set to 128k, as it

[pve-devel] [PATCH pve-storage 1/2] common: add qemu_img_create an preallocation_cmd_option

2025-05-22 Thread Alexandre Derumier via pve-devel
--- Begin Message --- Signed-off-by: Alexandre Derumier --- src/PVE/Storage/Common.pm | 53 ++ src/PVE/Storage/GlusterfsPlugin.pm | 2 +- src/PVE/Storage/Plugin.pm | 47 +- 3 files changed, 55 insertions(+), 47 deletions(-) d

[pve-devel] [PATCH pve_flutter_frontend v2] refactor: move and split the `_MobileResourceFilterSheet` widget

2025-05-22 Thread Shan Shaji
This patch splits the `_MobileResourceFilterSheet` into multiple widgets and since the `main_layout_slim.dart` file is large, the widget has been moved to it's own file under the widgets folder. Signed-off-by: Shan Shaji --- changes since v1: * Removed all formatting changes * Only includes

Re: [pve-devel] [PATCH pve-storage 0/2] move qemu_img_create to common helpers and enable preallocation on backed images

2025-05-22 Thread Fabian Grünbichler
> Alexandre Derumier via pve-devel hat am > 19.05.2025 12:23 CEST geschrieben: > This is part of my work on qcow2 external snapshot, but could improve current > qcow2 linked clone > > This patch serie move qemu_img_create to common helpers, > and enable preallocation on backed_image to increa

Re: [pve-devel] [PATCH pve-storage 0/2] move qemu_img_create to common helpers and enable preallocation on backed images

2025-05-22 Thread DERUMIER, Alexandre via pve-devel
--- Begin Message --- I have done some tests with suballocated cluster and base image without backing_file, indeed, I'm seeing a small performance degradation on big 1TB image. with a 30GB image, I'm around 22000 iops 4k randwrite/randread (with or without l2_extended=on) with a 1TB image, the

[pve-devel] [PATCH proxmox_login_manager v2] refactor: replace deprecated functions and properties

2025-05-22 Thread Shan Shaji
As of flutter v3.22 the `background` property is deprecated. Also the `withOpacity` function is also deprecated as of flutter v3.27. This commit replaces the use of `background` property with `surfaceContainer` to align with the changes made in the following change [0] in `pve_flutter_frontend`. A

Re: [pve-devel] PVE child process behavior question

2025-05-22 Thread Fabian Grünbichler
> Denis Kanchev hat am 22.05.2025 08:55 CEST > geschrieben: > > > The parent of the storage migration process gets killed. > > It seems that this is the desired behavior and as far i understand it > correctly - the child worker is detached from the parent and it has > nothing to do with it

[pve-devel] [PATCH proxmox_login_manager v2] refactor: rename `MaterialState` to `WidgetState`

2025-05-22 Thread Shan Shaji
This commit applys the `dart fix` command to fix all the dart analysis issues associated with renaming `MaterialState` to `WidgetState`. According to the flutter official docs [0] the `MaterialState` and it's related APIs have been moved out of the material library and renamed to `WidgetState`. Th

Re: [pve-devel] [PATCH proxmox_login_manager] refactor: rename `MaterialState` to `WidgetState`

2025-05-22 Thread Shan Shaji
Thank you so much for the review. I will seperate this into multiple patches. On Wed May 21, 2025 at 1:12 PM CEST, Dominik Csapak wrote: > not a super big issue, but 2 hunks seem to be unrelated to the commit message > (see inline) > > it would be much nicer to have the commits clean, so I'd a