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 [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 0B0BE1FF164 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 BE15711EB7; Fri, 28 Feb 2025 16:18:37 +0100 (CET) From: Stefan Hanreich <s.hanreich@proxmox.com> To: pdm-devel@lists.proxmox.com Date: Fri, 28 Feb 2025 16:17:45 +0100 Message-Id: <20250228151803.158984-9-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.383 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 POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes 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 08/12] sdn: generate lock endpoints 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> Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com> --- pve-api-types/src/generated/code.rs | 30 ++++++++++++++++++- pve-api-types/src/generated/types.rs | 44 ++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) diff --git a/pve-api-types/src/generated/code.rs b/pve-api-types/src/generated/code.rs index 5283df4..7927ccb 100644 --- a/pve-api-types/src/generated/code.rs +++ b/pve-api-types/src/generated/code.rs @@ -115,7 +115,6 @@ /// - /cluster/sdn/ipams /// - /cluster/sdn/ipams/{ipam} /// - /cluster/sdn/ipams/{ipam}/status -/// - /cluster/sdn/lock /// - /cluster/sdn/rollback /// - /cluster/sdn/vnets/{vnet} /// - /cluster/sdn/vnets/{vnet}/firewall @@ -370,6 +369,11 @@ /// ``` #[async_trait::async_trait] pub trait PveClient { + /// Acquire global lock for SDN configuration + async fn acquire_sdn_lock(&self, params: CreateSdnLock) -> Result<String, Error> { + Err(Error::Other("acquire_sdn_lock not implemented")) + } + /// Get information needed to join this cluster over the connected node. async fn cluster_config_join(&self, node: Option<String>) -> Result<ClusterJoinInfo, Error> { Err(Error::Other("cluster_config_join not implemented")) @@ -595,6 +599,11 @@ pub trait PveClient { Err(Error::Other("qemu_migrate_preconditions not implemented")) } + /// Release global lock for SDN configuration + async fn release_sdn_lock(&self, params: ReleaseSdnLock) -> Result<(), Error> { + Err(Error::Other("release_sdn_lock not implemented")) + } + /// Migrate the container to another cluster. Creates a new migration task. /// EXPERIMENTAL feature! async fn remote_migrate_lxc( @@ -701,6 +710,12 @@ where T: HttpApiClient + Send + Sync, for<'a> <T as HttpApiClient>::ResponseFuture<'a>: Send, { + /// Acquire global lock for SDN configuration + async fn acquire_sdn_lock(&self, params: CreateSdnLock) -> Result<String, Error> { + let url = "/api2/extjs/cluster/sdn/lock"; + Ok(self.0.post(url, ¶ms).await?.expect_json()?.data) + } + /// Get information needed to join this cluster over the connected node. async fn cluster_config_join(&self, node: Option<String>) -> Result<ClusterJoinInfo, Error> { let (mut query, mut sep) = (String::new(), '?'); @@ -1019,6 +1034,19 @@ where Ok(self.0.get(url).await?.expect_json()?.data) } + /// Release global lock for SDN configuration + async fn release_sdn_lock(&self, params: ReleaseSdnLock) -> Result<(), Error> { + let (mut query, mut sep) = (String::new(), '?'); + let ReleaseSdnLock { + force: p_force, + lock_secret: p_lock_secret, + } = params; + add_query_bool(&mut query, &mut sep, "force", p_force); + add_query_arg(&mut query, &mut sep, "lock-secret", &p_lock_secret); + let url = &format!("/api2/extjs/cluster/sdn/lock{query}"); + self.0.delete(url).await?.nodata() + } + /// Migrate the container to another cluster. Creates a new migration task. /// EXPERIMENTAL feature! async fn remote_migrate_lxc( diff --git a/pve-api-types/src/generated/types.rs b/pve-api-types/src/generated/types.rs index 92dc968..78fdbd1 100644 --- a/pve-api-types/src/generated/types.rs +++ b/pve-api-types/src/generated/types.rs @@ -964,6 +964,24 @@ pub struct CreateController { pub ty: ListControllersType, } +#[api( + properties: { + "allow-pending": { + default: false, + optional: true, + }, + }, +)] +/// Object. +#[derive(Debug, serde::Deserialize, serde::Serialize)] +pub struct CreateSdnLock { + /// if true, allow acquiring lock even though there are pending changes + #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")] + #[serde(default, skip_serializing_if = "Option::is_none")] + #[serde(rename = "allow-pending")] + pub allow_pending: Option<bool>, +} + #[api( properties: { comment: { @@ -9080,6 +9098,32 @@ pub struct QemuStatus { pub vmid: u32, } +#[api( + properties: { + force: { + default: false, + optional: true, + }, + "lock-secret": { + optional: true, + type: String, + }, + }, +)] +/// Object. +#[derive(Debug, serde::Deserialize, serde::Serialize)] +pub struct ReleaseSdnLock { + /// if true, allow releasing lock without providing the secret + #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")] + #[serde(default, skip_serializing_if = "Option::is_none")] + pub force: Option<bool>, + + /// the secret for unlocking the global SDN configuration + #[serde(default, skip_serializing_if = "Option::is_none")] + #[serde(rename = "lock-secret")] + pub lock_secret: Option<String>, +} + #[api( properties: { bwlimit: { -- 2.39.5 _______________________________________________ pdm-devel mailing list pdm-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel