Could this be done in patch 5/9 already, with changing the patches
afterwards accordingly?

On 2/3/26 5:02 PM, Gabriel Goller wrote:
> We need to retrieve the template content from pve-network (for the
> pvesdn cli), so we need to make these public. Use the `phf` crate to
> store them in a const map.
> 
> Signed-off-by: Gabriel Goller <[email protected]>
> ---
>  proxmox-frr/Cargo.toml            |  1 +
>  proxmox-frr/debian/control        |  4 +++
>  proxmox-frr/src/ser/serializer.rs | 56 +++++++++----------------------
>  3 files changed, 21 insertions(+), 40 deletions(-)
> 
> diff --git a/proxmox-frr/Cargo.toml b/proxmox-frr/Cargo.toml
> index 560a04b42980..173d8dfc8924 100644
> --- a/proxmox-frr/Cargo.toml
> +++ b/proxmox-frr/Cargo.toml
> @@ -17,6 +17,7 @@ serde = { workspace = true, features = [ "derive" ] }
>  serde_repr = "0.1"
>  minijinja = { version = "2.5", features = [ "multi_template", "loader" ] }
>  bon = "3.7"
> +phf = { version = "0.11.2", features = ["macros"] }
>  
>  proxmox-network-types = { workspace = true }
>  proxmox-sdn-types = { workspace = true }
> diff --git a/proxmox-frr/debian/control b/proxmox-frr/debian/control
> index 10651e640ba3..fb0960c4c75d 100644
> --- a/proxmox-frr/debian/control
> +++ b/proxmox-frr/debian/control
> @@ -11,6 +11,8 @@ Build-Depends-Arch: cargo:native <!nocheck>,
>   librust-minijinja-2+default-dev (>= 2.5-~~) <!nocheck>,
>   librust-minijinja-2+loader-dev (>= 2.5-~~) <!nocheck>,
>   librust-minijinja-2+multi-template-dev (>= 2.5-~~) <!nocheck>,
> + librust-phf-0.11+default-dev (>= 0.11.2-~~) <!nocheck>,
> + librust-phf-0.11+macros-dev (>= 0.11.2-~~) <!nocheck>,
>   librust-proxmox-network-types-0.1+default-dev (>= 0.1.1-~~) <!nocheck>,
>   librust-proxmox-sdn-types-0.1+default-dev <!nocheck>,
>   librust-proxmox-serde-1+default-dev <!nocheck>,
> @@ -36,6 +38,8 @@ Depends:
>   librust-minijinja-2+default-dev (>= 2.5-~~),
>   librust-minijinja-2+loader-dev (>= 2.5-~~),
>   librust-minijinja-2+multi-template-dev (>= 2.5-~~),
> + librust-phf-0.11+default-dev (>= 0.11.2-~~),
> + librust-phf-0.11+macros-dev (>= 0.11.2-~~),
>   librust-proxmox-network-types-0.1+default-dev (>= 0.1.1-~~),
>   librust-proxmox-sdn-types-0.1+default-dev,
>   librust-proxmox-serde-1+default-dev,
> diff --git a/proxmox-frr/src/ser/serializer.rs 
> b/proxmox-frr/src/ser/serializer.rs
> index 12e4190744eb..67cc36562e9b 100644
> --- a/proxmox-frr/src/ser/serializer.rs
> +++ b/proxmox-frr/src/ser/serializer.rs
> @@ -5,6 +5,21 @@ use minijinja::Environment;
>  
>  use crate::ser::FrrConfig;
>  
> +pub static TEMPLATES: phf::Map<&'static str, &'static str> = phf::phf_map! {
> +        "fabricd.jinja" => 
> include_str!("/usr/share/proxmox-frr/templates/fabricd.jinja"),
> +        "bgpd.jinja" => 
> include_str!("/usr/share/proxmox-frr/templates/bgpd.jinja"),
> +        "isisd.jinja" => 
> include_str!("/usr/share/proxmox-frr/templates/isisd.jinja"),
> +        "ospfd.jinja" => 
> include_str!("/usr/share/proxmox-frr/templates/ospfd.jinja"),
> +        "bgp_router.jinja" => 
> include_str!("/usr/share/proxmox-frr/templates/bgp_router.jinja"),
> +        "interface.jinja" => 
> include_str!("/usr/share/proxmox-frr/templates/interface.jinja"),
> +        "access_lists.jinja" => 
> include_str!("/usr/share/proxmox-frr/templates/access_lists.jinja"),
> +        "prefix_lists.jinja" => 
> include_str!("/usr/share/proxmox-frr/templates/prefix_lists.jinja"),
> +        "route_maps.jinja" => 
> include_str!("/usr/share/proxmox-frr/templates/route_maps.jinja"),
> +        "ip_routes.jinja" => 
> include_str!("/usr/share/proxmox-frr/templates/ip_routes.jinja"),
> +        "protocol_routemaps.jinja" => 
> include_str!("/usr/share/proxmox-frr/templates/protocol_routemaps.jinja"),
> +        "frr.conf.jinja" => 
> include_str!("/usr/share/proxmox-frr/templates/frr.conf.jinja"),
> +};
> +
>  fn create_env<'a>() -> Environment<'a> {
>      let mut env = Environment::new();
>  
> @@ -18,46 +33,7 @@ fn create_env<'a>() -> Environment<'a> {
>          match fs::read_to_string(override_path) {
>              Ok(template_content) => Ok(Some(template_content)),
>              // if that fails, read the vendored template:
> -            Err(_) => match name {
> -                "fabricd.jinja" => Ok(Some(
> -                    
> include_str!("/usr/share/proxmox-frr/templates/fabricd.jinja").to_owned(),
> -                )),
> -                "bgpd.jinja" => Ok(Some(
> -                    
> include_str!("/usr/share/proxmox-frr/templates/bgpd.jinja").to_owned(),
> -                )),
> -                "isisd.jinja" => Ok(Some(
> -                    
> include_str!("/usr/share/proxmox-frr/templates/isisd.jinja").to_owned(),
> -                )),
> -                "ospfd.jinja" => Ok(Some(
> -                    
> include_str!("/usr/share/proxmox-frr/templates/ospfd.jinja").to_owned(),
> -                )),
> -                "bgp_router.jinja" => Ok(Some(
> -                    
> include_str!("/usr/share/proxmox-frr/templates/bgp_router.jinja").to_owned(),
> -                )),
> -                "interface.jinja" => Ok(Some(
> -                    
> include_str!("/usr/share/proxmox-frr/templates/interface.jinja").to_owned(),
> -                )),
> -                "access_lists.jinja" => Ok(Some(
> -                    
> include_str!("/usr/share/proxmox-frr/templates/access_lists.jinja").to_owned(),
> -                )),
> -                "prefix_lists.jinja" => Ok(Some(
> -                    
> include_str!("/usr/share/proxmox-frr/templates/prefix_lists.jinja").to_owned(),
> -                )),
> -                "route_maps.jinja" => Ok(Some(
> -                    
> include_str!("/usr/share/proxmox-frr/templates/route_maps.jinja").to_owned(),
> -                )),
> -                "ip_routes.jinja" => Ok(Some(
> -                    
> include_str!("/usr/share/proxmox-frr/templates/ip_routes.jinja").to_owned(),
> -                )),
> -                "protocol_routemaps.jinja" => Ok(Some(
> -                    
> include_str!("/usr/share/proxmox-frr/templates/protocol_routemaps.jinja")
> -                        .to_owned(),
> -                )),
> -                "frr.conf.jinja" => Ok(Some(
> -                    
> include_str!("/usr/share/proxmox-frr/templates/frr.conf.jinja").to_owned(),
> -                )),
> -                _ => Ok(None),
> -            },
> +            Err(_) => Ok(TEMPLATES.get(name).map(|template| 
> (*template).to_owned())),
>          }
>      });
>  




Reply via email to