pub enum GateScope {
SnapshotOrRestore,
Snapshot,
Repository,
SnapshotSchedule,
SnapshotPolicy,
}Expand description
Which CR kinds a structural gate’s condition is written on.
Deliberately coarse (kinds, not selectors): a gate row answers “when I look at an object of THIS kind, is this condition meaningful?”, which is all a diagnostic needs to avoid hunting for a condition that can never appear.
use kopiur_api::gates::GateScope;
// A privileged-mover refusal is written on both work kinds.
assert!(GateScope::SnapshotOrRestore.covers_snapshot());
assert!(GateScope::SnapshotOrRestore.covers_restore());
// The mass-deletion breaker's per-Snapshot hold is Snapshot-only.
assert!(GateScope::Snapshot.covers_snapshot());
assert!(!GateScope::Snapshot.covers_restore());
// Repository gates live on Repository/ClusterRepository.
assert!(GateScope::Repository.covers_repository());
assert!(!GateScope::Repository.covers_snapshot());
// A schedule-level block lives on the SnapshotSchedule itself.
assert!(GateScope::SnapshotSchedule.covers_snapshot_schedule());
assert!(!GateScope::Snapshot.covers_snapshot_schedule());
// A recipe-level block lives on the SnapshotPolicy itself.
assert!(GateScope::SnapshotPolicy.covers_snapshot_policy());
assert!(!GateScope::SnapshotPolicy.covers_snapshot());Variants§
SnapshotOrRestore
Written on both Snapshot and Restore CRs (the two “work” kinds that
launch mover Jobs, and whose reconcilers share the gate).
Snapshot
Written on Snapshot CRs only.
Repository
Written on Repository and ClusterRepository CRs.
SnapshotSchedule
Written on SnapshotSchedule CRs only — the schedule itself is blocked,
as opposed to any individual run being blocked.
SnapshotPolicy
Written on SnapshotPolicy CRs only — the recipe itself is (partially)
blocked, as opposed to any individual run being blocked.
Implementations§
Source§impl GateScope
impl GateScope
Sourcepub fn covers_snapshot(self) -> bool
pub fn covers_snapshot(self) -> bool
Whether a Snapshot can carry a gate of this scope. Exhaustive.
Sourcepub fn covers_restore(self) -> bool
pub fn covers_restore(self) -> bool
Whether a Restore can carry a gate of this scope. Exhaustive.
Sourcepub fn covers_repository(self) -> bool
pub fn covers_repository(self) -> bool
Whether a Repository/ClusterRepository can carry a gate of this
scope. Exhaustive.
Sourcepub fn covers_snapshot_schedule(self) -> bool
pub fn covers_snapshot_schedule(self) -> bool
Whether a SnapshotSchedule can carry a gate of this scope. Exhaustive.
Sourcepub fn covers_snapshot_policy(self) -> bool
pub fn covers_snapshot_policy(self) -> bool
Whether a SnapshotPolicy can carry a gate of this scope. Exhaustive.
Trait Implementations§
impl Copy for GateScope
impl Eq for GateScope
impl StructuralPartialEq for GateScope
Auto Trait Implementations§
impl Freeze for GateScope
impl RefUnwindSafe for GateScope
impl Send for GateScope
impl Sync for GateScope
impl Unpin for GateScope
impl UnsafeUnpin for GateScope
impl UnwindSafe for GateScope
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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