[pdm-devel] [PATCH proxmox-api-types 12/12] sdn: add helpers for pending values

Stefan Hanreich s.hanreich at proxmox.com
Fri Feb 28 16:17:49 CET 2025


The SDN API returns pending values in the pending field of the entity.
Add helpers that return the pending value if it exists, or the actual
value if there is no pending value for that field.

Signed-off-by: Stefan Hanreich <s.hanreich at proxmox.com>
---
 pve-api-types/src/lib.rs |  1 +
 pve-api-types/src/sdn.rs | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 pve-api-types/src/sdn.rs

diff --git a/pve-api-types/src/lib.rs b/pve-api-types/src/lib.rs
index 709192d..b42a0c7 100644
--- a/pve-api-types/src/lib.rs
+++ b/pve-api-types/src/lib.rs
@@ -7,4 +7,5 @@ pub use types::*;
 #[cfg(feature = "client-util")]
 pub mod client;
 
+mod sdn;
 mod tags;
diff --git a/pve-api-types/src/sdn.rs b/pve-api-types/src/sdn.rs
new file mode 100644
index 0000000..000da6f
--- /dev/null
+++ b/pve-api-types/src/sdn.rs
@@ -0,0 +1,33 @@
+use crate::{SdnController, SdnVnet, SdnZone};
+
+impl SdnVnet {
+    /// returns the tag from the pending property if it has a value, otherwise it returns self.tag
+    pub fn tag_pending(&self) -> Option<u32> {
+        self.pending
+            .as_ref()
+            .and_then(|pending| pending.tag)
+            .or(self.tag)
+    }
+
+    /// returns the zone from the pending property if it has a value, otherwise it returns
+    /// self.zone
+    pub fn zone_pending(&self) -> String {
+        self.pending
+            .as_ref()
+            .and_then(|pending| pending.zone.clone())
+            .or_else(|| self.zone.clone())
+            .expect("zone must be set in either pending or root")
+    }
+}
+
+impl SdnZone {}
+
+impl SdnController {
+    /// returns the ASN from the pending property if it has a value, otherwise it returns self.asn
+    pub fn asn_pending(&self) -> Option<u32> {
+        self.pending
+            .as_ref()
+            .and_then(|pending| pending.asn)
+            .or(self.asn)
+    }
+}
-- 
2.39.5




More information about the pdm-devel mailing list