From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pdm-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68])
	by lore.proxmox.com (Postfix) with ESMTPS id 862AB1FF164
	for <inbox@lore.proxmox.com>; Fri, 28 Feb 2025 16:18:42 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 0B8D311EDA;
	Fri, 28 Feb 2025 16:18:38 +0100 (CET)
From: Stefan Hanreich <s.hanreich@proxmox.com>
To: pdm-devel@lists.proxmox.com
Date: Fri, 28 Feb 2025 16:17:49 +0100
Message-Id: <20250228151803.158984-13-s.hanreich@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250228151803.158984-1-s.hanreich@proxmox.com>
References: <20250228151803.158984-1-s.hanreich@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.231 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DMARC_MISSING             0.1 Missing DMARC policy
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery
 methods
 RDNS_NONE 0.793 Delivered to internal network by a host with no rDNS
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_NONE                0.001 SPF: sender does not publish an SPF Record
Subject: [pdm-devel] [PATCH proxmox-api-types 12/12] sdn: add helpers for
 pending values
X-BeenThere: pdm-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Datacenter Manager development discussion
 <pdm-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pdm-devel>, 
 <mailto:pdm-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pdm-devel/>
List-Post: <mailto:pdm-devel@lists.proxmox.com>
List-Help: <mailto:pdm-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel>, 
 <mailto:pdm-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox Datacenter Manager development discussion
 <pdm-devel@lists.proxmox.com>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: pdm-devel-bounces@lists.proxmox.com
Sender: "pdm-devel" <pdm-devel-bounces@lists.proxmox.com>

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@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


_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel