[pbs-devel] [PATCH proxmox-backup 09/12] proxmox-backup-client: add 'protected update command'
Dominik Csapak
d.csapak at proxmox.com
Mon Sep 6 12:57:52 CEST 2021
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
proxmox-backup-client/src/snapshot.rs | 51 +++++++++++++++++++++++++++
1 file changed, 51 insertions(+)
diff --git a/proxmox-backup-client/src/snapshot.rs b/proxmox-backup-client/src/snapshot.rs
index b63e84a6..fbf91f1b 100644
--- a/proxmox-backup-client/src/snapshot.rs
+++ b/proxmox-backup-client/src/snapshot.rs
@@ -358,6 +358,56 @@ async fn update_notes(param: Value) -> Result<Value, Error> {
Ok(Value::Null)
}
+#[api(
+ input: {
+ properties: {
+ repository: {
+ schema: REPO_URL_SCHEMA,
+ optional: true,
+ },
+ snapshot: {
+ type: String,
+ description: "Snapshot path.",
+ },
+ protected: {
+ type: bool,
+ description: "The protection status.",
+ },
+ }
+ }
+)]
+/// Update Protection Status of a snapshot
+async fn update_protection(protected: bool, param: Value) -> Result<Value, Error> {
+ let repo = extract_repository_from_value(¶m)?;
+ let path = required_string_param(¶m, "snapshot")?;
+
+ let snapshot: BackupDir = path.parse()?;
+ let mut client = connect(&repo)?;
+
+ let path = format!("api2/json/admin/datastore/{}/protected", repo.store());
+
+ let args = json!({
+ "backup-type": snapshot.group().backup_type(),
+ "backup-id": snapshot.group().backup_id(),
+ "backup-time": snapshot.backup_time(),
+ "protected": protected,
+ });
+
+ client.put(&path, Some(args)).await?;
+
+ Ok(Value::Null)
+}
+
+fn protected_cli() -> CliCommandMap {
+ CliCommandMap::new()
+ .insert(
+ "update",
+ CliCommand::new(&API_METHOD_UPDATE_PROTECTION)
+ .arg_param(&["snapshot", "protected"])
+ .completion_cb("snapshot", complete_backup_snapshot),
+ )
+}
+
fn notes_cli() -> CliCommandMap {
CliCommandMap::new()
.insert(
@@ -377,6 +427,7 @@ fn notes_cli() -> CliCommandMap {
pub fn snapshot_mgtm_cli() -> CliCommandMap {
CliCommandMap::new()
.insert("notes", notes_cli())
+ .insert("protected", protected_cli())
.insert(
"list",
CliCommand::new(&API_METHOD_LIST_SNAPSHOTS)
--
2.30.2
More information about the pbs-devel
mailing list