api2/admin/datastore: add get/set_protection
for gettin/setting the protected flag for snapshots (akin to notes) Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
committed by
Wolfgang Bumiller
parent
5cc7d89139
commit
8292d3d20e
@ -858,6 +858,30 @@ impl DataStore {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Updates the protection status of the specified snapshot.
|
||||
pub fn update_protection(
|
||||
&self,
|
||||
backup_dir: &BackupDir,
|
||||
protection: bool
|
||||
) -> Result<(), Error> {
|
||||
let full_path = self.snapshot_path(backup_dir);
|
||||
|
||||
let _guard = lock_dir_noblock(&full_path, "snapshot", "possibly running or in use")?;
|
||||
|
||||
let protected_path = backup_dir.protected_file(self.base_path());
|
||||
if protection {
|
||||
std::fs::File::create(protected_path)
|
||||
.map_err(|err| format_err!("could not create protection file: {}", err))?;
|
||||
} else if let Err(err) = std::fs::remove_file(protected_path) {
|
||||
// ignore error for non-existing file
|
||||
if err.kind() != std::io::ErrorKind::NotFound {
|
||||
bail!("could not remove protection file: {}", err);
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn verify_new(&self) -> bool {
|
||||
self.verify_new
|
||||
}
|
||||
|
Reference in New Issue
Block a user