[pbs-devel] [PATCH 1/2 proxmox-backup] add additional_info field to APTUpdateInfo

Mira Limbeck m.limbeck at proxmox.com
Tue Nov 10 13:33:53 CET 2020


Add an optional string field to APTUpdateInfo which can be used for
additional 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 <m.limbeck at proxmox.com>
---
 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..fcc29bc6 100644
--- a/src/api2/node/apt.rs
+++ b/src/api2/node/apt.rs
@@ -276,7 +276,7 @@ pub fn get_versions() -> Result<Value, Error> {
         "zfsutils-linux",
     ];
 
-    fn unknown_package(package: String) -> APTUpdateInfo {
+    fn unknown_package(package: String, additional_info: Option<String>) -> APTUpdateInfo {
         APTUpdateInfo {
             package,
             title: "unknown".into(),
@@ -288,6 +288,7 @@ pub fn get_versions() -> Result<Value, Error> {
             priority: "unknown".into(),
             section: "unknown".into(),
             change_log_url: "unknown".into(),
+            additional_info,
         }
     }
 
@@ -301,14 +302,34 @@ pub fn get_versions() -> Result<Value, Error> {
         },
         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.additional_info = Some(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!(
+            "{}.{}",
+            crate::api2::version::PROXMOX_PKG_VERSION,
+            crate::api2::version::PROXMOX_PKG_RELEASE
+        );
+        let mut pkg = pkg.clone();
+        pkg.additional_info = Some(running_version);
+        packages.push(pkg);
     }
 
     let mut kernel_pkgs: Vec<APTUpdateInfo> = pbs_packages
@@ -334,7 +355,7 @@ pub fn get_versions() -> Result<Value, Error> {
         }
         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..03e3ea91 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 additional_info: Option<String>,
 }
 
 #[api()]
diff --git a/src/tools/apt.rs b/src/tools/apt.rs
index 841b7447..30b9bcbe 100644
--- a/src/tools/apt.rs
+++ b/src/tools/apt.rs
@@ -361,6 +361,7 @@ where
                 },
                 priority: priority_res,
                 section: section_res,
+                additional_info: None,
             });
         }
     }
-- 
2.20.1






More information about the pbs-devel mailing list