]> git.proxmox.com Git - proxmox-backup.git/blobdiff - src/bin/proxmox-backup-client.rs
src/bin/proxmox-backup-client.rs - status: use format_and_print_result_full
[proxmox-backup.git] / src / bin / proxmox-backup-client.rs
index a4d2e760e2e004c8b62d10bfc946ac7e986b477c..5c5a91207aeda7da75e9aac6c701b4724aa121ba 100644 (file)
@@ -1470,24 +1470,28 @@ async fn status(param: Value) -> Result<Value, Error> {
     let path = format!("api2/json/admin/datastore/{}/status", repo.store());
 
     let mut result = client.get(&path, None).await?;
+    let mut data = result["data"].take();
 
     record_repository(&repo);
 
-    if output_format == "text" {
-        let result: StorageStatus = serde_json::from_value(result["data"].take())?;
+    let render_total_percentage = |v: &Value, record: &Value| -> Result<String, Error> {
+        let v = v.as_u64().unwrap();
+        let total = record["total"].as_u64().unwrap();
+        let roundup = total/200;
+        let per = ((v+roundup)*100)/total;
+        Ok(format!("{} ({} %)", v, per))
+    };
 
-        let roundup = result.total/200;
+    let options = TableFormatOptions::new()
+        .noborder(false)
+        .noheader(false)
+        .column(ColumnConfig::new("total"))
+        .column(ColumnConfig::new("used").renderer(render_total_percentage))
+        .column(ColumnConfig::new("avail").renderer(render_total_percentage));
 
-        println!(
-            "total: {} used: {} ({} %) available: {}",
-            result.total,
-            result.used,
-            ((result.used+roundup)*100)/result.total,
-            result.avail,
-        );
-    } else {
-        format_and_print_result(&result["data"], &output_format);
-    }
+    let schema = &proxmox_backup::api2::types::StorageStatus::API_SCHEMA;
+
+    format_and_print_result_full(&mut data, schema, &output_format, &options);
 
     Ok(Value::Null)
 }