From dc241ec8d5bbc88d1a4290d832b98b3a3969e3cc Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 16 Jan 2021 17:43:35 +0200 Subject: feat: backup run now ends with a summary "obnam backup" now writes a summary like the following at the end: status: OK duration: 24 file-count: 119245 generation-id: ef353c79-a94f-4903-bd80-e741ea454c84 We can add more fields to that later, as needed and requested. This was the data that's easily at hand. --- src/backup_progress.rs | 1 + src/cmd/backup.rs | 13 ++++++++++--- subplot/client.py | 3 ++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/backup_progress.rs b/src/backup_progress.rs index d65f104..6c1d3e6 100644 --- a/src/backup_progress.rs +++ b/src/backup_progress.rs @@ -41,5 +41,6 @@ impl BackupProgress { pub fn finish(&self) { self.progress.set_length(self.progress.position()); + self.progress.finish_and_clear(); } } diff --git a/src/cmd/backup.rs b/src/cmd/backup.rs index 398a8aa..da7298f 100644 --- a/src/cmd/backup.rs +++ b/src/cmd/backup.rs @@ -3,9 +3,12 @@ use crate::client::ClientConfig; use crate::fsiter::FsIterator; use crate::generation::NascentGeneration; use log::info; +use std::time::SystemTime; use tempfile::NamedTempFile; pub fn backup(config: &ClientConfig, buffer_size: usize) -> anyhow::Result<()> { + let runtime = SystemTime::now(); + let run = BackupRun::new(config, buffer_size)?; // Create a named temporary file. We don't meed the open file @@ -25,7 +28,7 @@ pub fn backup(config: &ClientConfig, buffer_size: usize) -> anyhow::Result<()> { }; let genlist = run.client().list_generations()?; - { + let file_count = { let iter = FsIterator::new(&config.root); let mut new = NascentGeneration::create(&newname)?; @@ -43,12 +46,16 @@ pub fn backup(config: &ClientConfig, buffer_size: usize) -> anyhow::Result<()> { } } run.progress().finish(); - } + new.file_count() + }; // Upload the SQLite file, i.e., the named temporary file, which // still exists, since we persisted it above. let gen_id = run.client().upload_generation(&newname, buffer_size)?; - println!("gen id: {}", gen_id); + println!("status: OK"); + println!("duration: {}", runtime.elapsed()?.as_secs()); + println!("file-count: {}", file_count); + println!("generation-id: {}", gen_id); // Delete the temporary file.q std::fs::remove_file(&newname)?; diff --git a/subplot/client.py b/subplot/client.py index 53c7f6e..d450b4c 100644 --- a/subplot/client.py +++ b/subplot/client.py @@ -1,3 +1,4 @@ +import logging import os import yaml @@ -63,7 +64,7 @@ def capture_generation_id(ctx, varname=None): stdout = runcmd_get_stdout(ctx) gen_id = "unknown" for line in stdout.splitlines(): - if line.startswith("gen id:"): + if line.startswith("generation-id:"): gen_id = line.split()[-1] v = ctx.get("vars", {}) -- cgit v1.2.1