From 8cc0d6aff3b84ba7f173abadb17f222a6539ed7d Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Wed, 20 Feb 2019 14:10:45 +0100 Subject: [PATCH 1/1] src/bin/proxmox-backup-client.rs: implement garbage-collection sub-command --- src/bin/proxmox-backup-client.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/bin/proxmox-backup-client.rs b/src/bin/proxmox-backup-client.rs index 4eccbc63..131dab97 100644 --- a/src/bin/proxmox-backup-client.rs +++ b/src/bin/proxmox-backup-client.rs @@ -116,6 +116,23 @@ fn list_backups( Ok(Value::Null) } +fn start_garbage_collection( + param: Value, + _info: &ApiMethod, + _rpcenv: &mut RpcEnvironment, +) -> Result { + + let repo_url = tools::required_string_param(¶m, "repository")?; + let repo = BackupRepository::parse(repo_url)?; + + let client = HttpClient::new(&repo.host, &repo.user); + + let path = format!("api2/json/admin/datastore/{}/gc", repo.store); + + let result = client.post(&path)?; + + Ok(result) +} fn create_backup( param: Value, @@ -206,8 +223,17 @@ fn main() { )) .arg_param(vec!["repository"]); + let garbage_collect_cmd_def = CliCommand::new( + ApiMethod::new( + start_garbage_collection, + ObjectSchema::new("Start garbage collection for a specific repository.") + .required("repository", repo_url_schema.clone()) + )) + .arg_param(vec!["repository"]); + let cmd_def = CliCommandMap::new() .insert("create".to_owned(), create_cmd_def.into()) + .insert("garbage-collect".to_owned(), garbage_collect_cmd_def.into()) .insert("list".to_owned(), list_cmd_def.into()); if let Err(err) = run_cli_command(&cmd_def.into()) { -- 2.39.2