From: Gabriel Goller <g.goller@proxmox.com>
To: Hannes Laimer <h.laimer@proxmox.com>
Cc: pve-devel@lists.proxmox.com
Subject: Re: [PATCH proxmox-ve-rs v5 5/8] frr: add template serializer and serialize fabrics using templates
Date: Thu, 12 Mar 2026 11:11:54 +0100 [thread overview]
Message-ID: <5qqkxgzaawlydn6f6xanwlttyqepwtq3y24o2gloqbwwvnv4db@jzl33jegdllc> (raw)
In-Reply-To: <2df3d021-8f8d-47de-889a-57c91142a63f@proxmox.com>
On 12.03.2026 10:12, Hannes Laimer wrote:
> On 2026-03-10 13:08, Gabriel Goller wrote:
> > Add a new serializer which uses only the builtin (include_str!) templates from
> > the `proxmox-frr-templates` package in `/usr/share/proxmox-frr/templates` to
> > generate the frr config file. Also update the `build_fabric` function and the
> > tests accordingly.
> >
> > Use the `phf` crate to store them in a const map.
> >
> > Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
> > ---
>
> [..]
>
> > #[derive(Error, Debug)]
> > pub enum FrrWordError {
> > #[error("word is empty")]
> > @@ -113,7 +25,7 @@ pub enum FrrWordError {
> > ///
> > /// Every string argument or value in FRR is an FrrWord. FrrWords must only contain ascii
> > /// characters and must not have a whitespace.
> > -#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
> > +#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
>
> this would skip validation, we probably want something like
> ```
> #[serde(try_from = "String")]
> ```
> instead of the `Deserialize`
The deserialize only happens when moving the rust config to perl and back, so we
don't really need to validate here, but nevertheless added it.
I used
forward_deserialize_to_from_str!(FrrWord);
from proxmox-serde.
Thanks for the review!
> > pub struct FrrWord(String);
> >
> > impl FrrWord {
> > @@ -144,12 +56,6 @@ impl FromStr for FrrWord {
> > }
> > }
> >
> > -impl Display for FrrWord {
> > - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
> > - self.0.fmt(f)
> > - }
> > -}
> > -
> > impl AsRef<str> for FrrWord {
> > fn as_ref(&self) -> &str {
> > &self.0
> > @@ -157,7 +63,7 @@ impl AsRef<str> for FrrWord {
> > }
> >
>
> [..]
next prev parent reply other threads:[~2026-03-12 10:13 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-10 12:06 [PATCH manager/network/proxmox{-ve-rs,-perl-rs} v5 00/19] Generate frr config using jinja templates and rust types Gabriel Goller
2026-03-10 12:06 ` [PATCH proxmox-ve-rs v5 1/8] ve-config: firewall: cargo fmt Gabriel Goller
2026-03-10 12:06 ` [PATCH proxmox-ve-rs v5 2/8] frr: add proxmox-frr-templates package that contains templates Gabriel Goller
2026-03-12 8:01 ` Hannes Laimer
2026-03-12 10:03 ` Gabriel Goller
2026-03-12 8:19 ` Hannes Laimer
2026-03-12 9:30 ` Gabriel Goller
2026-03-12 8:33 ` Hannes Laimer
2026-03-12 9:31 ` Gabriel Goller
2026-03-10 12:06 ` [PATCH proxmox-ve-rs v5 3/8] ve-config: remove FrrConfigBuilder struct Gabriel Goller
2026-03-10 12:06 ` [PATCH proxmox-ve-rs v5 4/8] sdn-types: support variable-length NET identifier Gabriel Goller
2026-03-10 12:06 ` [PATCH proxmox-ve-rs v5 5/8] frr: add template serializer and serialize fabrics using templates Gabriel Goller
2026-03-12 8:44 ` Hannes Laimer
2026-03-12 10:07 ` Gabriel Goller
2026-03-12 9:12 ` Hannes Laimer
2026-03-12 10:11 ` Gabriel Goller [this message]
2026-03-10 12:06 ` [PATCH proxmox-ve-rs v5 6/8] frr: add isis configuration and templates Gabriel Goller
2026-03-10 12:06 ` [PATCH proxmox-ve-rs v5 7/8] frr: support custom frr configuration lines Gabriel Goller
2026-03-10 12:06 ` [PATCH proxmox-ve-rs v5 8/8] frr: add bgp support with templates and serialization Gabriel Goller
2026-03-12 8:30 ` Hannes Laimer
2026-03-12 9:35 ` Gabriel Goller
2026-03-10 12:06 ` [PATCH proxmox-perl-rs v5 1/1] sdn: add function to generate the frr config for all daemons Gabriel Goller
2026-03-10 12:06 ` [PATCH pve-network v5 1/9] tests: use Test::Differences to make test assertions Gabriel Goller
2026-03-10 12:06 ` [PATCH pve-network v5 2/9] test: add tests for frr.conf.local merging Gabriel Goller
2026-03-10 12:06 ` [PATCH pve-network v5 3/9] test: bgp: add some various integration tests Gabriel Goller
2026-03-10 12:06 ` [PATCH pve-network v5 4/9] sdn: write structured frr config that can be rendered using templates Gabriel Goller
2026-03-12 9:20 ` Hannes Laimer
2026-03-12 10:20 ` Gabriel Goller
2026-03-10 12:06 ` [PATCH pve-network v5 5/9] sdn: remove duplicate comment line '!' in frr config Gabriel Goller
2026-03-10 12:06 ` [PATCH pve-network v5 6/9] tests: rearrange some statements in the " Gabriel Goller
2026-03-10 12:06 ` [PATCH pve-network v5 7/9] sdn: adjust frr.conf.local merging to rust template types Gabriel Goller
2026-03-10 12:06 ` [PATCH pve-network v5 8/9] test: adjust frr_local_merge test for new template generation Gabriel Goller
2026-03-10 12:06 ` [PATCH pve-network v5 9/9] api: add dry-run endpoint for sdn apply to preview changes Gabriel Goller
2026-03-10 12:06 ` [PATCH pve-manager v5 1/1] sdn: add dry-run diff view for sdn apply Gabriel Goller
2026-03-12 7:58 ` Hannes Laimer
2026-03-12 10:22 ` Gabriel Goller
2026-03-11 17:22 ` [PATCH manager/network/proxmox{-ve-rs,-perl-rs} v5 00/19] Generate frr config using jinja templates and rust types Stefan Hanreich
2026-03-12 13:35 ` Hannes Laimer
2026-03-12 14:28 ` Gabriel Goller
2026-03-12 14:31 ` 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=5qqkxgzaawlydn6f6xanwlttyqepwtq3y24o2gloqbwwvnv4db@jzl33jegdllc \
--to=g.goller@proxmox.com \
--cc=h.laimer@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.