From: Lukas Wagner <l.wagner@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox-backup v5 10/10] proxmox-backup-mgr: gc jobs: pretty-print bytes/duration/timestamps
Date: Thu, 18 Apr 2024 12:17:06 +0200 [thread overview]
Message-ID: <20240418101706.237597-11-l.wagner@proxmox.com> (raw)
In-Reply-To: <20240418101706.237597-1-l.wagner@proxmox.com>
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
---
pbs-tools/src/format.rs | 14 +++++++++++++-
src/bin/proxmox-backup-manager.rs | 31 ++++++++++++++++++++++++++++++-
2 files changed, 43 insertions(+), 2 deletions(-)
diff --git a/pbs-tools/src/format.rs b/pbs-tools/src/format.rs
index c208d8cb..bc9f20a8 100644
--- a/pbs-tools/src/format.rs
+++ b/pbs-tools/src/format.rs
@@ -1,9 +1,11 @@
use std::borrow::Borrow;
+use std::time::Duration;
-use anyhow::Error;
+use anyhow::{Context, Error};
use serde_json::Value;
use proxmox_human_byte::HumanByte;
+use proxmox_time::TimeSpan;
pub fn strip_server_file_extension(name: &str) -> &str {
if name.ends_with(".didx") || name.ends_with(".fidx") || name.ends_with(".blob") {
@@ -64,3 +66,13 @@ pub fn render_bytes_human_readable(value: &Value, _record: &Value) -> Result<Str
};
Ok(text)
}
+
+pub fn render_duration(val: &Value, _record: &Value) -> Result<String, Error> {
+ if val.is_null() {
+ return Ok(String::new());
+ }
+ let duration = val.as_u64().context("not a number")?;
+ let time_span = TimeSpan::from(Duration::from_secs(duration));
+
+ Ok(format!("{time_span}"))
+}
diff --git a/src/bin/proxmox-backup-manager.rs b/src/bin/proxmox-backup-manager.rs
index 94fc6b2f..28271cb4 100644
--- a/src/bin/proxmox-backup-manager.rs
+++ b/src/bin/proxmox-backup-manager.rs
@@ -115,7 +115,36 @@ async fn garbage_collection_list_jobs(param: Value) -> Result<Value, Error> {
let mut data = result["data"].take();
let return_type = &api2::admin::gc::API_METHOD_LIST_ALL_GC_JOBS.returns;
- let options = default_table_format_options();
+ use pbs_tools::format::{render_bytes_human_readable, render_duration, render_epoch};
+ let options = default_table_format_options()
+ .column(ColumnConfig::new("store"))
+ .column(
+ ColumnConfig::new("last-run-endtime")
+ .right_align(false)
+ .renderer(render_epoch),
+ )
+ .column(
+ ColumnConfig::new("duration")
+ .right_align(false)
+ .renderer(render_duration),
+ )
+ .column(
+ ColumnConfig::new("removed-bytes")
+ .right_align(false)
+ .renderer(render_bytes_human_readable),
+ )
+ .column(
+ ColumnConfig::new("pending-bytes")
+ .right_align(false)
+ .renderer(render_bytes_human_readable),
+ )
+ .column(ColumnConfig::new("last-run-state"))
+ .column(ColumnConfig::new("schedule"))
+ .column(
+ ColumnConfig::new("next-run")
+ .right_align(false)
+ .renderer(render_epoch),
+ );
format_and_print_result_full(&mut data, return_type, &output_format, &options);
--
2.39.2
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
next prev parent reply other threads:[~2024-04-18 10:17 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-18 10:16 [pbs-devel] [PATCH proxmox-backup v5 00/10] Add GC job status to datastore and global prune job view Lukas Wagner
2024-04-18 10:16 ` [pbs-devel] [PATCH proxmox-backup v5 01/10] api: garbage collect job status Lukas Wagner
2024-04-18 10:16 ` [pbs-devel] [PATCH proxmox-backup v5 02/10] fix #3217: ui: global prune and gc job view Lukas Wagner
2024-04-18 10:16 ` [pbs-devel] [PATCH proxmox-backup v5 03/10] ui: move prune and gc widget to config Lukas Wagner
2024-04-18 10:17 ` [pbs-devel] [PATCH proxmox-backup v5 04/10] ui: hide datastore column in local gc view Lukas Wagner
2024-04-18 10:17 ` [pbs-devel] [PATCH proxmox-backup v5 05/10] ui: order Prune & GC before Sync Jobs Lukas Wagner
2024-04-18 10:17 ` [pbs-devel] [PATCH proxmox-backup v5 06/10] fix #4723: cli: list gc jobs with proxmox-backup-manager Lukas Wagner
2024-04-18 10:17 ` [pbs-devel] [PATCH proxmox-backup v5 07/10] ui: show removed and pending data of last run in bytes Lukas Wagner
2024-04-18 10:17 ` [pbs-devel] [PATCH proxmox-backup v5 08/10] ui: configure width and flex on GC Jobs columns Lukas Wagner
2024-04-18 10:17 ` [pbs-devel] [PATCH proxmox-backup v5 09/10] ui: gcview: fix eslint warnings Lukas Wagner
2024-04-18 10:17 ` Lukas Wagner [this message]
2024-04-18 12:11 ` [pbs-devel] [PATCH proxmox-backup v5 00/10] Add GC job status to datastore and global prune job view Gabriel Goller
2024-04-23 12:37 ` [pbs-devel] applied-series: " Fabian Grünbichler
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=20240418101706.237597-11-l.wagner@proxmox.com \
--to=l.wagner@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.