src/api2/admin/datastore.rs: extract backup size from index.json

This commit is contained in:
Dietmar Maurer 2019-08-06 10:56:21 +02:00
parent eecb182845
commit a17a0e7a9f
2 changed files with 28 additions and 6 deletions

View File

@ -175,12 +175,25 @@ fn list_snapshots (
if let Some(backup_id) = backup_id { if let Some(backup_id) = backup_id {
if backup_id != group.backup_id() { continue; } if backup_id != group.backup_id() { continue; }
} }
snapshots.push(json!({
let mut result_item = json!({
"backup-type": group.backup_type(), "backup-type": group.backup_type(),
"backup-id": group.backup_id(), "backup-id": group.backup_id(),
"backup-time": info.backup_dir.backup_time().timestamp(), "backup-time": info.backup_dir.backup_time().timestamp(),
"files": info.files, "files": info.files,
})); });
if let Ok(index) = read_backup_index(&datastore, &info.backup_dir) {
let mut backup_size = 0;
for item in index.as_array().unwrap().iter() {
if let Some(item_size) = item["size"].as_u64() {
backup_size += item_size;
}
}
result_item["size"] = backup_size.into();
}
snapshots.push(result_item);
} }
Ok(json!(snapshots)) Ok(json!(snapshots))

View File

@ -335,14 +335,23 @@ fn list_snapshots(
.map(|v| strip_server_file_expenstion(v.as_str().unwrap())).collect(); .map(|v| strip_server_file_expenstion(v.as_str().unwrap())).collect();
if output_format == "text" { if output_format == "text" {
println!("{} | {}", path, tools::join(&files, ' ')); let size_str = if let Some(size) = item["size"].as_u64() {
size.to_string()
} else { } else {
result.push(json!({ String::from("-")
};
println!("{} | {} | {}", path, size_str, tools::join(&files, ' '));
} else {
let mut data = json!({
"backup-type": btype, "backup-type": btype,
"backup-id": id, "backup-id": id,
"backup-time": epoch, "backup-time": epoch,
"files": files, "files": files,
})); });
if let Some(size) = item["size"].as_u64() {
data["size"] = size.into();
}
result.push(data);
} }
} }