[pve-devel] [PATCH proxmox-perl-rs v4 2/5] pve-rs: sdn: fabrics: add api methods
Wolfgang Bumiller
w.bumiller at proxmox.com
Mon Jul 7 09:48:31 CEST 2025
On Fri, Jul 04, 2025 at 05:56:46PM +0200, Gabriel Goller wrote:
> On 04.07.2025 14:57, Wolfgang Bumiller wrote:
> > On Wed, Jul 02, 2025 at 04:50:15PM +0200, Gabriel Goller wrote:
> > > From: Stefan Hanreich <s.hanreich at proxmox.com>
> > >
> > > 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 implementation of FabricConfig,
> > > and convert from / to the API representations of the Fabrics / Nodes
> > > returned by FabricConfig.
> > >
> > > Co-authored-by: Gabriel Goller <g.goller at proxmox.com>
> > > Signed-off-by: Stefan Hanreich <s.hanreich at proxmox.com>
> > > ---
> > > pve-rs/src/bindings/sdn/fabrics.rs | 212 ++++++++++++++++++++++++++++-
> > > 1 file changed, 211 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/pve-rs/src/bindings/sdn/fabrics.rs b/pve-rs/src/bindings/sdn/fabrics.rs
> > > index fac5602c0241..2efa1c6306ae 100644
> > > --- a/pve-rs/src/bindings/sdn/fabrics.rs
> > > +++ b/pve-rs/src/bindings/sdn/fabrics.rs
> > > @@ -17,7 +17,20 @@ pub mod pve_rs_sdn_fabrics {
> > > use proxmox_section_config::typed::SectionConfigData;
> > > use proxmox_ve_config::common::valid::Validatable;
> > >
> > > - use proxmox_ve_config::sdn::fabric::{section_config::Section, FabricConfig};
> > > + use proxmox_ve_config::sdn::fabric::{
> > > + section_config::{
> > > + fabric::{
> > > + api::{Fabric, FabricUpdater},
> > > + FabricId,
> > > + },
> > > + node::{
> > > + api::{Node, NodeUpdater},
> > > + Node as ConfigNode, NodeId,
> > > + },
> > > + Section,
> > > + },
> > > + FabricConfig, FabricEntry,
> > > + };
> > >
> > > /// A SDN Fabric config instance.
> > > #[derive(Serialize, Deserialize)]
> > > @@ -57,6 +70,203 @@ pub mod pve_rs_sdn_fabrics {
> > > )
> > > }
> > >
> > > + /// Class method: Returns all fabrics and nodes from the configuration.
> >
> > ^ Regular `Method:` - all of them.
>
> Done.
>
> > > + /// Class method: Adds a new Fabric to the configuration.
> > > + #[export]
> > > + fn add_fabric(#[try_from_ref] this: &PerlFabricConfig, fabric: Fabric) -> Result<(), Error> {
> > > + this.fabric_config
> > > + .lock()
> > > + .unwrap()
> > > + .add_fabric(fabric)
> >
> > ^ If all we do is forward to an existing method, it would be nice to
> > include a `See [...]` link in the method docs.
> > (The `make doc/doc-open` make targets currently add
> > `--external-html-root-url` parameters to `cargo doc` to make these links
> > work (just updated to the new rustdoc layout).
>
> Added it, even though the function won't be visible in the docs because
> it isn't pub.
Ah yes, I forgot to check for that.
It *should* be pub ;-)
The function is exposed to perl, which means it *is* public (just not
within rust) - the perl API is *supposed* to be documented. That's kind
of the point of the `bindings` module, to have rustdoc generated an API
documentation for perl.
This is probably something perlmod should optionally check for: non-pub
exports should need some kind of extra annotation.
More information about the pve-devel
mailing list