From 2decf85d6ee054fe8584eb2445715eddf3992595 Mon Sep 17 00:00:00 2001 From: Mira Limbeck Date: Tue, 10 Nov 2020 14:22:17 +0100 Subject: [PATCH] add extra_info field to APTUpdateInfo Add an optional string field to APTUpdateInfo which can be used for extra information. This is used for passing running kernel and running version information in the versions API call together with proxmox-backup and proxmox-backup-server. Signed-off-by: Mira Limbeck --- src/api2/node/apt.rs | 35 ++++++++++++++++++++++++++++------- src/api2/types/mod.rs | 2 ++ src/tools/apt.rs | 1 + 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/api2/node/apt.rs b/src/api2/node/apt.rs index aa41d6a5..98d02318 100644 --- a/src/api2/node/apt.rs +++ b/src/api2/node/apt.rs @@ -276,7 +276,7 @@ pub fn get_versions() -> Result { "zfsutils-linux", ]; - fn unknown_package(package: String) -> APTUpdateInfo { + fn unknown_package(package: String, extra_info: Option) -> APTUpdateInfo { APTUpdateInfo { package, title: "unknown".into(), @@ -288,6 +288,7 @@ pub fn get_versions() -> Result { priority: "unknown".into(), section: "unknown".into(), change_log_url: "unknown".into(), + extra_info, } } @@ -301,14 +302,34 @@ pub fn get_versions() -> Result { }, None, ); - if let Some(proxmox_backup) = pbs_packages.iter().find(|pkg| pkg.package == "proxmox-backup") { - packages.push(proxmox_backup.to_owned()); + + let running_kernel = nix::sys::utsname::uname().release().to_owned(); + if let Some(proxmox_backup) = pbs_packages + .iter() + .find(|pkg| pkg.package == "proxmox-backup") + { + let mut proxmox_backup = proxmox_backup.clone(); + proxmox_backup.extra_info = Some(format!("running kernel: {}", running_kernel)); + packages.push(proxmox_backup); } else { - packages.push(unknown_package("proxmox-backup".into())); + packages.push(unknown_package( + "proxmox-backup".into(), + Some(running_kernel), + )); } - if let Some(pkg) = pbs_packages.iter().find(|pkg| pkg.package == "proxmox-backup-server") { - packages.push(pkg.to_owned()); + if let Some(pkg) = pbs_packages + .iter() + .find(|pkg| pkg.package == "proxmox-backup-server") + { + let running_version = format!( + "running version: {}.{}", + crate::api2::version::PROXMOX_PKG_VERSION, + crate::api2::version::PROXMOX_PKG_RELEASE + ); + let mut pkg = pkg.clone(); + pkg.extra_info = Some(running_version); + packages.push(pkg); } let mut kernel_pkgs: Vec = pbs_packages @@ -334,7 +355,7 @@ pub fn get_versions() -> Result { } match pbs_packages.iter().find(|item| &item.package == pkg) { Some(apt_pkg) => packages.push(apt_pkg.to_owned()), - None => packages.push(unknown_package(pkg.to_string())), + None => packages.push(unknown_package(pkg.to_string(), None)), } } diff --git a/src/api2/types/mod.rs b/src/api2/types/mod.rs index ba9d2da9..f240fb64 100644 --- a/src/api2/types/mod.rs +++ b/src/api2/types/mod.rs @@ -1177,6 +1177,8 @@ pub struct APTUpdateInfo { pub section: String, /// URL under which the package's changelog can be retrieved pub change_log_url: String, + /// Additional package information + pub extra_info: Option, } #[api()] diff --git a/src/tools/apt.rs b/src/tools/apt.rs index 841b7447..af8f51f1 100644 --- a/src/tools/apt.rs +++ b/src/tools/apt.rs @@ -361,6 +361,7 @@ where }, priority: priority_res, section: section_res, + extra_info: None, }); } }