pub enum PolicyDeletePolicy {
Retain,
Delete,
}Expand description
What the deletion of a SnapshotPolicy does to the Snapshot CRs carrying
its config label (the recipe’s produced/adopted rows — NOT its kopia
snapshot history in the abstract, which is exactly what Retain preserves).
Default Retain: the CRs are removed but every kopia snapshot survives
(rediscoverable/adoptable by a future SnapshotPolicy, including this one
re-created). Delete opts into the cascade: each CR’s own deletionPolicy
applies, as EXTERNAL deletions subject to the per-repository mass-deletion
breaker (deletionProtection.threshold).
Deliberately 2-variant (not reusing DeletionPolicy), mirroring
ScheduleDeletePolicy: an Orphan in cascade position would differ from
Retain only in per-CR event/metric bookkeeping — an invalid state made
unrepresentable. The guard’s Retain is exactly DeletionPolicy::Retain’s
semantics (CR removed, kopia snapshot stays, catalog rediscovers it),
deliberately NOT the Orphan event storm (no per-CR “orphaned” event/metric
for every one of a deleted policy’s Snapshots). Not ScheduleDeletePolicy
itself: that type’s doc contract is schedule-specific (its Delete arm talks
about a schedule being gone/replaced), and a SnapshotPolicy deletion is a
distinct trigger with its own semantics worth documenting on its own type.
Variants§
Retain
Keep the kopia snapshots: a Snapshot whose effective deletionPolicy is
Delete is downgraded to retain when its owning SnapshotPolicy is gone
(the fail-safe default).
Delete
Cascade: each Snapshot’s own deletionPolicy applies even though the
owning SnapshotPolicy is gone (subject to the mass-deletion breaker).
Trait Implementations§
Source§impl Clone for PolicyDeletePolicy
impl Clone for PolicyDeletePolicy
Source§fn clone(&self) -> PolicyDeletePolicy
fn clone(&self) -> PolicyDeletePolicy
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PolicyDeletePolicy
impl Debug for PolicyDeletePolicy
Source§impl Default for PolicyDeletePolicy
impl Default for PolicyDeletePolicy
Source§fn default() -> PolicyDeletePolicy
fn default() -> PolicyDeletePolicy
Source§impl<'de> Deserialize<'de> for PolicyDeletePolicy
impl<'de> Deserialize<'de> for PolicyDeletePolicy
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for PolicyDeletePolicy
impl JsonSchema for PolicyDeletePolicy
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for PolicyDeletePolicy
impl PartialEq for PolicyDeletePolicy
Source§fn eq(&self, other: &PolicyDeletePolicy) -> bool
fn eq(&self, other: &PolicyDeletePolicy) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for PolicyDeletePolicy
impl Serialize for PolicyDeletePolicy
impl Copy for PolicyDeletePolicy
impl Eq for PolicyDeletePolicy
impl StructuralPartialEq for PolicyDeletePolicy
Auto Trait Implementations§
impl Freeze for PolicyDeletePolicy
impl RefUnwindSafe for PolicyDeletePolicy
impl Send for PolicyDeletePolicy
impl Sync for PolicyDeletePolicy
impl Unpin for PolicyDeletePolicy
impl UnsafeUnpin for PolicyDeletePolicy
impl UnwindSafe for PolicyDeletePolicy
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more