all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Mira Limbeck <m.limbeck@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: Re: [pbs-devel] [PATCH 2/2 proxmox-backup] add versions command to proxmox-backup-manager
Date: Tue, 10 Nov 2020 13:37:36 +0100	[thread overview]
Message-ID: <70471474-d74d-2096-771f-3398c4cc3bb4@proxmox.com> (raw)
In-Reply-To: <20201110123354.32590-2-m.limbeck@proxmox.com>

This currently prints 'unknown' instead of 'not correctly installed'. 
Will send a v2 with this fixed.

On 11/10/20 1:33 PM, Mira Limbeck wrote:
> Add the versions command to proxmox-backup-manager with a similar output
> to pveversion [-v]. It prints the packages line by line with only the
> package name, followed by the version and, for proxmox-backup and
> proxmox-backup-server, some additional information (running kernel,
> running version).
>
> In addition it supports the optional output-format parameter which can
> be used to print the complete data in either json, json-pretty or text
> format. If output-format is specified, the --verbose parameter is
> ignored and the detailed list of packages is printed.
>
> With the addition of the versions command, the report is extended as
> well.
>
> Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
> ---
> When using --output-format text the table requires a wide terminal to
> look correct, otherwise the output is garbled and does not look like a
> table.
>
>   src/bin/proxmox-backup-manager.rs | 76 +++++++++++++++++++++++++++++++
>   src/server/report.rs              |  1 +
>   2 files changed, 77 insertions(+)
>
> diff --git a/src/bin/proxmox-backup-manager.rs b/src/bin/proxmox-backup-manager.rs
> index e52c2f76..7a165a38 100644
> --- a/src/bin/proxmox-backup-manager.rs
> +++ b/src/bin/proxmox-backup-manager.rs
> @@ -363,6 +363,79 @@ async fn report() -> Result<Value, Error> {
>       Ok(Value::Null)
>   }
>   
> +#[api(
> +    input: {
> +        properties: {
> +            verbose: {
> +                type: Boolean,
> +                optional: true,
> +                default: false,
> +                description: "Output verbose package information. It is ignored if output-format is specified.",
> +            },
> +            "output-format": {
> +                schema: OUTPUT_FORMAT,
> +                optional: true,
> +            }
> +        }
> +    }
> +)]
> +/// List package versions for important Proxmox Backup Server packages.
> +async fn get_versions(verbose: bool, param: Value) -> Result<Value, Error> {
> +    let output_format = param.get("output-format");
> +
> +    if !verbose && output_format.is_none() {
> +        let pkg_version = format!(
> +            "{}.{}",
> +            crate::api2::version::PROXMOX_PKG_VERSION,
> +            crate::api2::version::PROXMOX_PKG_RELEASE
> +        );
> +        let running_kernel = nix::sys::utsname::uname().release().to_owned();
> +
> +        println!(
> +            "proxmox-backup-server/{} (running kernel: {})",
> +            pkg_version, running_kernel
> +        );
> +        return Ok(Value::Null);
> +    }
> +
> +    let mut packages = crate::api2::node::apt::get_versions()?;
> +    if let Some(output_format) = output_format {
> +        if let Some(output_format) = output_format.as_str() {
> +            let options = TableFormatOptions::default();
> +            format_and_print_result_full(
> +                &mut packages,
> +                &crate::api2::node::apt::API_RETURN_SCHEMA_GET_VERSIONS,
> +                output_format,
> +                &options,
> +            );
> +        }
> +    } else {
> +        // pveversion style print
> +        let packages: Vec<APTUpdateInfo> = serde_json::from_value(packages)?;
> +        for pkg in packages {
> +            if &pkg.package == "proxmox-backup" {
> +                println!(
> +                    "{}: {} (running kernel: {})",
> +                    pkg.package,
> +                    pkg.old_version,
> +                    pkg.additional_info.unwrap() // always set in get_versions()
> +                );
> +            } else if &pkg.package == "proxmox-backup-server" {
> +                println!(
> +                    "{}: {} (running version: {})",
> +                    pkg.package,
> +                    pkg.old_version,
> +                    pkg.additional_info.unwrap() // always set in get_versions()
> +                );
> +            } else {
> +                println!("{}: {}", pkg.package, pkg.old_version);
> +            }
> +        }
> +    }
> +
> +    Ok(Value::Null)
> +}
> +
>   fn main() {
>   
>       proxmox_backup::tools::setup_safe_path_env();
> @@ -396,6 +469,9 @@ fn main() {
>           )
>           .insert("report",
>               CliCommand::new(&API_METHOD_REPORT)
> +        )
> +        .insert("versions",
> +            CliCommand::new(&API_METHOD_GET_VERSIONS)
>           );
>   
>   
> diff --git a/src/server/report.rs b/src/server/report.rs
> index 9c6e2406..22e16a14 100644
> --- a/src/server/report.rs
> +++ b/src/server/report.rs
> @@ -20,6 +20,7 @@ fn files() -> Vec<&'static str> {
>   fn commands() -> Vec<(&'static str, Vec<&'static str>)> {
>       vec![
>       //  ("<command>", vec![<arg [, arg]>])
> +        ("proxmox-backup-manager", vec!["versions", "--verbose"]),
>           ("df", vec!["-h"]),
>           ("lsblk", vec!["--ascii"]),
>           ("zpool", vec!["status"]),




      reply	other threads:[~2020-11-10 12:38 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-10 12:33 [pbs-devel] [PATCH 1/2 proxmox-backup] add additional_info field to APTUpdateInfo Mira Limbeck
2020-11-10 12:33 ` [pbs-devel] [PATCH 2/2 proxmox-backup] add versions command to proxmox-backup-manager Mira Limbeck
2020-11-10 12:37   ` Mira Limbeck [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=70471474-d74d-2096-771f-3398c4cc3bb4@proxmox.com \
    --to=m.limbeck@proxmox.com \
    --cc=pbs-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal