The Network Entity Title is currently only used in openfabric, but it's
a generic construct, which in the future, will also be used in IS-IS
(when it's ported in rust).
Also include helpers that convert from IPv4 and IPv6 to NET by using the
Binary Coded Decimals (BCD). The IPv4 conversion is quite
pve-network added new generalized frr generation and
etc/network/interfaces generations methods. Starting with this series,
not only the zones plugin edits the /etc/network/interfaces.d/sdn file, but
the fabrics as well. The new fabrics are also implemented in rust, so
they are not a normal Control
Note that the Makefile this commit adds currently isn't being called
by the top-level one in the repository root.
This is because I'm not 100% sure on how to structure this yet. Since
third-party developers will most likely package their plugin as well,
a separate debian/ directory seems sensible.
Add NodeEdit components for OpenFabric and OSPF. These allow creation
and editing of Nodes and their interfaces. Shows an interface-panel with
all the available and configured interfaces. If a node is not available
but it is configured, it can still be viewed (we also show a warning
hint).
Signed-
From: 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 plug
Add common frr types such as FrrWord, CommonInterfaceName, etc. These
are some commong 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't contain whitespaces.
Signed-off-b
CRUD methods for perlmod that call the helper functions defined earlier.
Also add a method that returns the FRR daemons to be enabled and a
method that generates FRR configuration after validating it.
Signed-off-by: Gabriel Goller
Co-authored-by: Stefan Hanreich
---
pve-rs/src/sdn/ospf.rs | 165
The Hostname type will be used as a type for a pve hostname. It it used
in the NodeId, which connects the pve-host with the fabric. The
openfabric options are HelloInterval, CsnpInterval and HelloMultiplier.
These are the options that are used in our `Ceph FullMesh Guide` and are
probably the most
Move the Ipv4Cidr and Ipv6Cidr types (and co.) from
proxmox-ve-config firewall module to the proxmox-network-types crate.
They are also used in the fabrics module, so to avoid importing from
the firewall module, move them here.
We also have to update the proxmox-firewall crate, which is done in a
The check for dkms kernel modules relies on the output of `dkms
status`. dkms command invocation will perform the following sanity
check:
```
if [ ! -e <(echo) ]; then
warn $"dkms will not function properly if /proc is not mounted."
fi
```
This check will however throw the following warning wh
From: Stefan Hanreich
Add CRUD endpoints for the ospf fabric and node section types.
Signed-off-by: Stefan Hanreich
Co-authored-by: Gabriel Goller
Signed-off-by: Gabriel Goller
---
src/PVE/API2/Network/SDN/Fabrics/Makefile | 2 +-
src/PVE/API2/Network/SDN/Fabrics/Ospf.pm | 345 +++
Add integration tests for the full cycle from section-config to FRR
config file for both openfabric and ospf.
Signed-off-by: Gabriel Goller
---
proxmox-ve-config/tests/fabric/helper.rs | 44 ++
proxmox-ve-config/tests/fabric/main.rs| 80 +++
.../resources/cfg
Add the sdn fabrics config files. These are split into two, as we
currently support two fabric types: ospf and openfabric. They hold the
whole configuration for the respective protocols. They are read and
written by pve-network.
Signed-off-by: Gabriel Goller
---
src/PVE/Cluster.pm | 2 ++
src/p
Add CRUD functions for managing OSPF fabrics.
Signed-off-by: Gabriel Goller
---
pve-rs/Makefile| 1 +
pve-rs/src/sdn/mod.rs | 1 +
pve-rs/src/sdn/ospf.rs | 208 +
3 files changed, 210 insertions(+)
create mode 100644 pve-rs/src/sdn/ospf.rs
d
From: Stefan Hanreich
With the changes to how we handle the frr config generation,
controllers are now no longer responsible for generating the FRR
configuration. Instead, we pass the existing frr_config perl hash to
every controller, where controllers append their respective
configuration.
This
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), CsnpInterval (database
synchroni
From: 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
Add FabricEdit components for openfabric and ospf. These are used to
create and edit fabrics. When editing, everything is disabled except the
hello_interval property, mostly because making the area/router_id and
the loopback_prefix editable would be kinda hard (i.e. we'd need to
force the user to d
From: 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 only enable daemons which are
required for the configured fabrics. If a daemon is enabled but a
fab
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.
It implements the following warning states:
- When an
From: Stefan Hanreich
Signed-off-by: Stefan Hanreich
Signed-off-by: Gabriel Goller
---
src/PVE/Network/SDN/Frr.pm | 2 +-
.../zones/evpn/advertise_subnets/expected_controller_config | 2 +-
.../evpn/disable_arp_nd_suppression/expected_controller_config
From: Stefan Hanreich
With how the config generation worked before, it was not possible to
create a standalone isis controller. Since each controller is now
responsible for creating its own configuration, it is possible to
create a standalone isis controller without having any evpn
controller. Ad
From: Stefan Hanreich
Reloading the FRR configuration failed, because outfunc was defined as
an empty hash, but Tools.pm requires it to be a CODE reference, so the
following error has been thrown on FRR reload:
Not a CODE reference at /usr/share/perl5/PVE/Tools.pm line 577.
Fix this by not pr
Add function to generate /etc/network/interfaces configuration for OSPF nodes
including:
- Create dummy interfaces for each area with /32 addresses
- Configure IP addresses on physical interfaces
- Enable IP forwarding on all relevant interfaces
- Support both numbered and unnumbered interface con
From: Stefan Hanreich
Add CRUD endpoints for the openfabric fabric and node section types.
Signed-off-by: Stefan Hanreich
Co-authored-by: Gabriel Goller
Signed-off-by: Gabriel Goller
---
src/PVE/API2/Network/SDN/Fabrics/Makefile | 2 +-
.../API2/Network/SDN/Fabrics/OpenFabric.pm| 3
From: Stefan Hanreich
Add two additional test cases for EVPN zones, which use fabrics as the
underlay network - one for OSPF, one for OpenFabric.
They cover a full-mesh fabric setup as well as a simple point-to-point
setup to a route reflector as the underlay fabric.
Signed-off-by: Stefan Hanre
TreeView that shows all the fabrics and nodes in a hierarchical
structure. It also shows all the pending changes from the
running-config.
We decided against including all the interfaces (as children of nodes)
because otherwise the indentation would be too much. So to keep it
simple, we removed the
From: Stefan Hanreich
Currently, the ifupdown 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
configu
Add functionality for managing OpenFabric fabrics:
- Implement Rust-backed Perl module PVE::RS::SDN::Fabrics::OpenFabric
- Add CRUD methods for fabric, node, and interface configuration
- Support fabric-specific parameters (hello-intervals, router-id, etc.)
Signed-off-by: Gabriel Goller
---
pve-
Add InterfacePanel components for openfabric and ospf. These hold the
additional options which are protocol specific and are not shared. For
example the Hello Interval is openfabric specific.
Most of these are also hidden as to not clutter the interface too much.
There are also rarely used – most
From: 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.
Signed-
From: Stefan Hanreich
Since the perlmod API for both the openfabric and ospf are the same,
add helpers for all CRUD operations that will be supported by the
openfabric and ospf endpoints, so they can share the same code.
Signed-off-by: Stefan Hanreich
Co-authored-by: Gabriel Goller
Signed-off-
We call perlmod rust functions directly from pve-network.
Signed-off-by: Gabriel Goller
---
debian/control | 2 ++
1 file changed, 2 insertions(+)
diff --git a/debian/control b/debian/control
index 34b736676766..604419d59e11 100644
--- a/debian/control
+++ b/debian/control
@@ -11,6 +11,7 @@ Bui
This is the main configuration for OSPF. It is used to parse the section
config file and is returned from the api.
Signed-off-by: Gabriel Goller
---
proxmox-ve-config/src/sdn/fabric/ospf/mod.rs | 245 +++
1 file changed, 245 insertions(+)
create mode 100644 proxmox-ve-config/src
Only a very limited featureset of the route-maps is implemented here,
only the stuff needed by the fabrics. Once standalone route-maps will
make it into pve, we will build these out and maybe rework them a
little.
We need the RouteMaps for the Fabrics, because otherwise, the routes
between to the
Add a FabricConfig builder which iterates through nodes and generates
the frr config for the specified current_node. This part also
distributes the fabric options on all the interfaces – e.g. the
hello-interval option on the fabric will be added to all interfaces
here.
We mainly need to add these
Add new module to proxmox-serde that parses boolean values from various
string formats. Provides parse_bool function supporting common
representations (0/1, true/false, on/off, yes/no) along with
serializer/deserializer for these formats.
Note: this was copied over from proxmox-ve-config/firewall.
Add initial documentation for the openfabric and ospf options.
Signed-off-by: Gabriel Goller
---
pvesdn.adoc | 155
1 file changed, 155 insertions(+)
diff --git a/pvesdn.adoc b/pvesdn.adoc
index 5d5d27bfbc1f..feb6898beaa5 100644
--- a/pvesdn.
From: 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 gen
This series allows the user to add fabrics such as OpenFabric and OSPF over
their clusters.
Overview
This series allows the user to create routed networks ('fabrics') across their
clusters, which can be used as the underlay network for a EVPN cluster, or for
creating Ceph full mesh clust
From: Stefan Hanreich
This module adds the basic functionality required for the sdn fabrics
feature. It includes helpers for reading and writing the configuration
files via perlmod.
Signed-off-by: Stefan Hanreich
Co-authored-by: Gabriel Goller
Signed-off-by: Gabriel Goller
---
src/PVE/Networ
This is the main openfabric configuration. It is used to parse from the
section-config file (`/etc/pve/sdn/fabrics/openfabric.cfg`) and is also
returned from the api.
Signed-off-by: Gabriel Goller
---
proxmox-ve-config/Cargo.toml | 9 +-
.../src/sdn/fabric/openfabric/mod.rs
Add perlmod methods that call the previously introduced CRUD helpers.
Also add a method that returns the FRR daemons to be enabled by
pve-network and a method to validate and generate the FRR config.
Signed-off-by: Gabriel Goller
Co-authored-by: Stefan Hanreich
---
pve-rs/src/sdn/openfabric.rs
Our section-config is nested 3 times (fabric -> node -> interfaces), but
as only one indentation level (two with propertyStrings) are possible in
section-config configuration files, we need to add some validation to
ensure that the config is valid. In the future, more stuff to be
validated can be a
Add conversion helpers for FRR interfaces. We can't put these in eg.
`TryInto` implementations, as we need a tupel and tupels are foreign
types. Create a simple conversion function that converts the OpenFabric
and OSPF interfaces to FRR interfaces.
Signed-off-by: Gabriel Goller
---
.../src/sdn/f
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. So the UI has a simple
"unnumbered" check and we set the NetworkType to "Point-to-Point". The
other op
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.
Signed-off-by: Gabriel Goller
---
proxmox-frr/src/lib.rs | 79 ++
1 file cha
This is a common crate that is gonna be reused between
proxmox-ve-config, proxmox-frr and proxmox-perl-rs. It holds different
networking primitives, such as Ipv4/Ipv6-Cidr, NET and e.g.
HelloInterval (openfabric attribute) types. The decision for creating
this crate is two-fold:
- we didn't want t
This commit adds a rudimentary implementation of a custom storage
plugin that uses sshfs [1] as the underlying filesystem.
The implementation is very similar to that of the NFS plugin; as a
prerequisite, it is currently necessary to use pubkey auth and have
the host's root user's public key deploy
Max Carrara writes:
> Add docstrings for the following methods:
> - on_add_hook
> - on_update_hook
> - on_delete_hook
>
> Signed-off-by: Max Carrara
> ---
> src/PVE/Storage/PluginBase.pm | 85 ++-
> 1 file changed, 74 insertions(+), 11 deletions(-)
>
> diff --g
On 2025-03-21 14:33, Alexander Zeidler wrote:
> Previously, notification templates could be modified by the user, but
> these were overwritten again with installing newer package versions of
> pve-manager and proxmox-backup.
>
> Now override templates can be created cluster-wide in the path
> “
Am 24.01.25 um 15:37 schrieb Maximiliano Sandoval:
> For concatenating .pot files. From [1]:
>
>> To concatenate POT files, better use xgettext, not msgcat, because
>> msgcat would choke on the undefined charsets in the specified POT
>> files.
>
> [1]
> https://www.gnu.org/software/gettext/manua
Max Carrara writes:
> Add docstrings for the following methods:
> - check_connection
> - activate_storage
> - deactivate_storage
> - status
> - cluster_lock_storage
> - parse_volname
> - get_subdir
> - filesystem_path
> - path
> - find_free_diskname
>
> Signed-off-by: Max Carrara
> ---
> src/
/etc/pve/priv/realm has been the default path since commit
782b702db ("auth ldap/ad: make password a parameter for the api")
That commit was part of pve-access-control 6.0-7.
Replace /etc/pve/priv/ldap with /etc/pve/priv/realm, to avoid pointing
users to the deprecated path.
It's not used any
On 3/25/25 19:27, Thomas Lamprecht wrote:
Am 25.03.25 um 16:01 schrieb Michael Köppl:
While the format_task_description function is used in other parts of the
UI, this still leaves these use cases intact. The guest name is an
optional addition in parantheses.
s/parantheses/parentheses/
This
v2 available!
Superseded-by:
https://lore.proxmox.com/pve-devel/20250328101915.73951-1-l.wag...@proxmox.com/T/#t
--
- Lukas
___
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
On 2025-01-20 15:35, Aaron Lauterer wrote:
VSS in windows guests with additional backup software in the guest can
cause problems. By now the guest agent does support to use a different
VSS option. This way, one can switch to one that does not interfere with
other backup solutions.
Mention it i
Clean up the notification templates to prepare for user-customizable
templates
- Change some of the template variable names to improve clarity
- Generate the table for available updates in the template itself,
not via the 'table' helper. This makes it possible for users
to change the style/
Instead of relying on the 'magic' table helper, we generate the guest
list in the vzdump HTML notification template using native Handlebars
syntax ({{#each}}). The template becomes a bit more ugly, mostly due to
HTML email's requirements to use inline CSS styling, but in the context
of providing us
- try to make template variable names more clear (in preparation
for #6143)
- add common tempate variables (fqdn, hostname, cluster-name)
- Instead of dumping the status-data variable as a JSON blob we
add template variables for the most useful information and
render it in a structured manner
Other commits introduced a consistent style for handlebars expressions,
this commit applies the same style to test notification templates.
Signed-off-by: Lukas Wagner
---
templates/default/test-body.html.hbs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/default/te
The new PVE::Notify::common_template_data helper gives us a hash of
properties which should be available in all notifications (hostname,
fqdn, cluster-name at this moment). This commit makes sure that
replication notifications have these available.
Signed-off-by: Lukas Wagner
---
PVE/API2/Replic
With [#6143] on the horizon, notification templates, template variables
and template helpers become part of our public API and as such
we should provide some stability guarantees for them.
As a result, we use this opportunity to do a 'final' cleanup.
This series:
- adds some common template vars
This commit add the `common_template_data` sub to PVE::Notify,
providing a convenient way to get a hash with properties that
should be accessible from all templates, namely hostname, fqdn
and cluster-name.
Signed-off-by: Lukas Wagner
---
Notes:
Changes since v1:
- use PVE::Tools::get_fq
Am 28.03.25 um 10:31 schrieb Prashant Patil:
> Made changes as mentioned in earlier email to use pvetest repo. With
> those changes, 'apt-get update' used to fail, had to disable enterprise
> repositories as per the screenshot below. Wit this, I was able to run
> 'apt-get update', but 'apt-get dist
On 2025-03-28 10:38, Thomas Lamprecht wrote:
> Am 28.03.25 um 09:28 schrieb Lukas Wagner:
>> We of course can cache the FQDN, but realistically speaking, this is only
>> called once per
>> notification being sent, thus any real-world performance impact is
>> absolutely tiny.
>
> Not so sure abo
Am 18.03.25 um 09:59 schrieb Prashant Patil:
> We have tried the steps mentioned here to create copy-before-write snapshot -
> https://www.mail-archive.com/qemu-devel@nongnu.org/msg876056.html
>
> However, one of the commands 'blockdev-replace' fails with below error:
> {"error": {"class": "Comma
Am 28.03.25 um 09:28 schrieb Lukas Wagner:
> We of course can cache the FQDN, but realistically speaking, this is only
> called once per
> notification being sent, thus any real-world performance impact is absolutely
> tiny.
Not so sure about that in general, e.g. sending out notifications could
Am 27.03.25 um 17:39 schrieb Thomas Lamprecht:
> Am 27.03.25 um 12:53 schrieb Fiona Ebner:
>> Because of a long-standing bug in shim [0], booting will fail for
>> distibutions that do not include the fix yet, like Rocky Linux 9.5
>> and other CentOS-based distibutions. This is cased by the addition
On 2025-03-27 16:31, Thomas Lamprecht wrote:
> Am 27.03.25 um 15:23 schrieb Lukas Wagner:
>> This commit add the `common_template_data` sub to PVE::Notify,
>> providing a convenient way to get a hash with properties that
>> should be accessible from all templates, namely hostname, fqdn
>> and c
70 matches
Mail list logo