From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 3AD9B6A40E for ; Thu, 16 Sep 2021 12:04:22 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 31F6723A5F for ; Thu, 16 Sep 2021 12:04:22 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 3089923A54 for ; Thu, 16 Sep 2021 12:04:21 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 0397A448D3 for ; Thu, 16 Sep 2021 12:04:15 +0200 (CEST) Date: Thu, 16 Sep 2021 12:04:04 +0200 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= To: Proxmox Backup Server development discussion References: <20210906105755.2651203-1-d.csapak@proxmox.com> <20210906105755.2651203-4-d.csapak@proxmox.com> In-Reply-To: <<20210906105755.2651203-4-d.csapak@proxmox.com> MIME-Version: 1.0 User-Agent: astroid/0.15.0 (https://github.com/astroidmail/astroid) Message-Id: <1631785217.mihgc241cw.astroid@nora.none> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-SPAM-LEVEL: Spam detection results: 0 AWL 0.370 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pbs-devel] [PATCH proxmox-backup 03/12] add protected info of snapshots to api and task logs X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Sep 2021 10:04:22 -0000 On September 6, 2021 12:57 pm, Dominik Csapak wrote: > adds the info that a snapshot is protected to: > * snapshot list > * manual pruning (also dry-run) > * prune jobs >=20 > Signed-off-by: Dominik Csapak > --- > pbs-api-types/src/lib.rs | 2 ++ > pbs-datastore/src/prune.rs | 11 +++++++---- > src/api2/admin/datastore.rs | 11 ++++++++--- > src/server/prune_job.rs | 4 ++-- > 4 files changed, 19 insertions(+), 9 deletions(-) >=20 > diff --git a/pbs-api-types/src/lib.rs b/pbs-api-types/src/lib.rs > index 427b2d9f..eba68ce5 100644 > --- a/pbs-api-types/src/lib.rs > +++ b/pbs-api-types/src/lib.rs > @@ -411,6 +411,8 @@ pub struct SnapshotListItem { > /// The owner of the snapshots group > #[serde(skip_serializing_if =3D "Option::is_none")] > pub owner: Option, > + /// Protection from prunes > + pub protected: bool, > } > =20 > #[api( > diff --git a/pbs-datastore/src/prune.rs b/pbs-datastore/src/prune.rs > index 6b76e9d7..6b9c2bbb 100644 > --- a/pbs-datastore/src/prune.rs > +++ b/pbs-datastore/src/prune.rs > @@ -225,7 +225,7 @@ impl PruneOptions { > pub fn compute_prune_info( > mut list: Vec, > options: &PruneOptions, > -) -> Result, Error> { > +) -> Result, Error> { starting to get into territory where a PruneInfo type might make=20 sense.. alternatively, maybe the PruneMark enum could be re-used instead of two=20 bools? with serializing as keep keep-partial protected remove it would also work as return type instead of the conversion into "keep=20 (protected)" below, IMHO that protected implies keep is a given as that is = the=20 only reason to set protected in the first place ^^ > =20 > let mut mark =3D HashMap::new(); > =20 > @@ -273,15 +273,18 @@ pub fn compute_prune_info( > })?; > } > =20 > - let prune_info: Vec<(BackupInfo, bool)> =3D list.into_iter() > + let prune_info: Vec<(BackupInfo, bool, bool)> =3D list.into_iter() > .map(|info| { > let backup_id =3D info.backup_dir.relative_path(); > + let protected =3D info.protected; > let keep =3D match mark.get(&backup_id) { > Some(PruneMark::Keep) =3D> true, > Some(PruneMark::KeepPartial) =3D> true, > - _ =3D> false, > + Some(PruneMark::Protected) =3D> true, > + _ =3D> if protected { true } else { false }, > }; > - (info, keep) > + > + (info, keep, protected) > }) > .collect(); > =20 > diff --git a/src/api2/admin/datastore.rs b/src/api2/admin/datastore.rs > index 5470de73..f49cdbee 100644 > --- a/src/api2/admin/datastore.rs > +++ b/src/api2/admin/datastore.rs > @@ -444,6 +444,7 @@ pub fn list_snapshots ( > let backup_type =3D group.backup_type().to_string(); > let backup_id =3D group.backup_id().to_string(); > let backup_time =3D info.backup_dir.backup_time(); > + let protected =3D info.backup_dir.is_protected(base_path.clone()= ); > =20 > match get_all_snapshot_files(&datastore, &info) { > Ok((manifest, files)) =3D> { > @@ -482,6 +483,7 @@ pub fn list_snapshots ( > files, > size, > owner, > + protected, > } > }, > Err(err) =3D> { > @@ -506,6 +508,7 @@ pub fn list_snapshots ( > files, > size: None, > owner, > + protected, > } > }, > } > @@ -849,7 +852,7 @@ pub fn prune( > let keep_all =3D !prune_options.keeps_something(); > =20 > if dry_run { > - for (info, mut keep) in prune_info { > + for (info, mut keep, protected) in prune_info { > if keep_all { keep =3D true; } > =20 > let backup_time =3D info.backup_dir.backup_time(); > @@ -860,6 +863,7 @@ pub fn prune( > "backup-id": group.backup_id(), > "backup-time": backup_time, > "keep": keep, > + "protected": protected, > })); > } > return Ok(json!(prune_result)); > @@ -877,7 +881,7 @@ pub fn prune( > store, backup_type, backup_id)); > } > =20 > - for (info, mut keep) in prune_info { > + for (info, mut keep, protected) in prune_info { > if keep_all { keep =3D true; } > =20 > let backup_time =3D info.backup_dir.backup_time(); > @@ -890,7 +894,7 @@ pub fn prune( > group.backup_type(), > group.backup_id(), > timestamp, > - if keep { "keep" } else { "remove" }, > + if keep { if protected { "keep (protected)" } else { "keep" = } } else { "remove" }, > ); > =20 > worker.log(msg); > @@ -900,6 +904,7 @@ pub fn prune( > "backup-id": group.backup_id(), > "backup-time": backup_time, > "keep": keep, > + "protected": protected, > })); > =20 > if !(dry_run || keep) { > diff --git a/src/server/prune_job.rs b/src/server/prune_job.rs > index 2ea8b713..bfe2bd9e 100644 > --- a/src/server/prune_job.rs > +++ b/src/server/prune_job.rs > @@ -66,12 +66,12 @@ pub fn prune_datastore( > group.backup_id() > ); > =20 > - for (info, mut keep) in prune_info { > + for (info, mut keep, protected) in prune_info { > if keep_all { keep =3D true; } > task_log!( > worker, > "{} {}/{}/{}", > - if keep { "keep" } else { "remove" }, > + if keep { if protected { "keep (protected)" } else { "ke= ep" } } else { "remove" }, > group.backup_type(), > group.backup_id(), > info.backup_dir.backup_time_string() > --=20 > 2.30.2 >=20 >=20 >=20 > _______________________________________________ > pbs-devel mailing list > pbs-devel@lists.proxmox.com > https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel >=20 >=20 >=20