From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 251331FF17E for ; Thu, 27 Nov 2025 11:45:14 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id B19C1A5; Thu, 27 Nov 2025 11:45:34 +0100 (CET) From: Lukas Wagner To: pdm-devel@lists.proxmox.com Date: Thu, 27 Nov 2025 11:44:32 +0100 Message-ID: <20251127104447.162951-4-l.wagner@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251127104447.162951-1-l.wagner@proxmox.com> References: <20251127104447.162951-1-l.wagner@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1764240256481 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.118 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 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 SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pdm-devel] [PATCH proxmox 3/4] make refresh X-BeenThere: pdm-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Datacenter Manager development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pdm-devel-bounces@lists.proxmox.com Sender: "pdm-devel" Signed-off-by: Lukas Wagner --- pve-api-types/src/generated/code.rs | 24 ++++- pve-api-types/src/generated/types.rs | 128 +++++++++++++++++++++++++++ 2 files changed, 150 insertions(+), 2 deletions(-) diff --git a/pve-api-types/src/generated/code.rs b/pve-api-types/src/generated/code.rs index d2b53f29..b0fb03a1 100644 --- a/pve-api-types/src/generated/code.rs +++ b/pve-api-types/src/generated/code.rs @@ -145,8 +145,6 @@ /// - /nodes/{node} /// - /nodes/{node}/aplinfo /// - /nodes/{node}/apt -/// - /nodes/{node}/apt/repositories -/// - /nodes/{node}/apt/versions /// - /nodes/{node}/capabilities /// - /nodes/{node}/capabilities/qemu /// - /nodes/{node}/capabilities/qemu/cpu-flags @@ -448,6 +446,11 @@ pub trait PveClient { Err(Error::Other("create_zone not implemented")) } + /// Get APT repository information. + async fn get_apt_repositories(&self, node: &str) -> Result { + Err(Error::Other("get_apt_repositories not implemented")) + } + /// Get package changelogs. async fn get_package_changelog( &self, @@ -458,6 +461,11 @@ pub trait PveClient { Err(Error::Other("get_package_changelog not implemented")) } + /// Get package information for important Proxmox packages. + async fn get_package_versions(&self, node: &str) -> Result, Error> { + Err(Error::Other("get_package_versions not implemented")) + } + /// Read subscription info. async fn get_subscription(&self, node: &str) -> Result { Err(Error::Other("get_subscription not implemented")) @@ -949,6 +957,12 @@ where self.0.post(url, ¶ms).await?.nodata() } + /// Get APT repository information. + async fn get_apt_repositories(&self, node: &str) -> Result { + let url = &format!("/api2/extjs/nodes/{node}/apt/repositories"); + Ok(self.0.get(url).await?.expect_json()?.data) + } + /// Get package changelogs. async fn get_package_changelog( &self, @@ -963,6 +977,12 @@ where Ok(self.0.get(url).await?.expect_json()?.data) } + /// Get package information for important Proxmox packages. + async fn get_package_versions(&self, node: &str) -> Result, Error> { + let url = &format!("/api2/extjs/nodes/{node}/apt/versions"); + Ok(self.0.get(url).await?.expect_json()?.data) + } + /// Read subscription info. async fn get_subscription(&self, node: &str) -> Result { let url = &format!("/api2/extjs/nodes/{node}/subscription"); diff --git a/pve-api-types/src/generated/types.rs b/pve-api-types/src/generated/types.rs index 740b3ca5..bde1e464 100644 --- a/pve-api-types/src/generated/types.rs +++ b/pve-api-types/src/generated/types.rs @@ -1719,6 +1719,134 @@ pub struct CreateZone { pub zone: String, } +#[api( + properties: { + Arch: { + type: AptUpdateInfoArch, + }, + CurrentState: { + type: InstalledPackageCurrentState, + }, + Description: { + type: String, + }, + ManagerVersion: { + optional: true, + type: String, + }, + NotifyStatus: { + optional: true, + type: String, + }, + OldVersion: { + optional: true, + type: String, + }, + Origin: { + type: String, + }, + Package: { + type: String, + }, + Priority: { + type: String, + }, + RunningKernel: { + optional: true, + type: String, + }, + Section: { + type: String, + }, + Title: { + type: String, + }, + Version: { + type: String, + }, + }, +)] +/// Object. +#[derive(Debug, serde::Deserialize, serde::Serialize)] +pub struct InstalledPackage { + #[serde(rename = "Arch")] + pub arch: AptUpdateInfoArch, + + #[serde(rename = "CurrentState")] + pub current_state: InstalledPackageCurrentState, + + /// Package description. + #[serde(rename = "Description")] + pub description: String, + + /// Version of the currently running pve-manager API server. + #[serde(default, skip_serializing_if = "Option::is_none")] + #[serde(rename = "ManagerVersion")] + pub manager_version: Option, + + /// Version for which PVE has already sent an update notification for. + #[serde(default, skip_serializing_if = "Option::is_none")] + #[serde(rename = "NotifyStatus")] + pub notify_status: Option, + + /// Old version currently installed. + #[serde(default, skip_serializing_if = "Option::is_none")] + #[serde(rename = "OldVersion")] + pub old_version: Option, + + /// Package origin, e.g., 'Proxmox' or 'Debian'. + #[serde(rename = "Origin")] + pub origin: String, + + /// Package name. + #[serde(rename = "Package")] + pub package: String, + + /// Package priority. + #[serde(rename = "Priority")] + pub priority: String, + + /// Kernel release, only for package 'proxmox-ve'. + #[serde(default, skip_serializing_if = "Option::is_none")] + #[serde(rename = "RunningKernel")] + pub running_kernel: Option, + + /// Package section. + #[serde(rename = "Section")] + pub section: String, + + /// Package title. + #[serde(rename = "Title")] + pub title: String, + + /// New version to be updated to. + #[serde(rename = "Version")] + pub version: String, +} + +#[api] +/// Current state of the package installed on the system. +#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)] +pub enum InstalledPackageCurrentState { + /// Installed. + Installed, + /// NotInstalled. + NotInstalled, + /// UnPacked. + UnPacked, + /// HalfConfigured. + HalfConfigured, + /// HalfInstalled. + HalfInstalled, + /// ConfigFiles. + ConfigFiles, + /// Unknown variants for forward compatibility. + #[serde(untagged)] + UnknownEnumValue(FixedString), +} +serde_plain::derive_display_from_serialize!(InstalledPackageCurrentState); +serde_plain::derive_fromstr_from_deserialize!(InstalledPackageCurrentState); + #[api] /// A guest's run state. #[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)] -- 2.47.3 _______________________________________________ pdm-devel mailing list pdm-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel