pub enum RepositoryReplicationPhase {
Pending,
Replicating,
Succeeded,
Failed,
Suspended,
Unknown(String),
}Expand description
Lifecycle phase of a replication.
use kopiur_api::repository_replication::RepositoryReplicationPhase as P;
assert_eq!(serde_json::to_value(P::Suspended).unwrap(), "Suspended");
// An unrecognized phase from a newer operator decodes instead of erroring.
let p: P = serde_json::from_value(serde_json::json!("Verifying")).unwrap();
assert_eq!(p, P::Unknown("Verifying".into()));
assert_eq!(serde_json::to_value(&p).unwrap(), "Verifying");Variants§
Pending
Admitted, not yet run (also the default).
Replicating
A replication mover Job is in flight.
Succeeded
The most recent replication completed successfully (idle until the next slot).
Failed
The most recent replication run failed; see conditions.
Suspended
Suspended via spec.suspend.
Unknown(String)
A phase string this build does not recognize (newer operator, or legacy stored data). Decode-compat only — hidden from the CRD schema, never produced by this build, never a success.
Implementations§
Source§impl RepositoryReplicationPhase
impl RepositoryReplicationPhase
Sourcepub fn is_unknown(&self) -> bool
pub fn is_unknown(&self) -> bool
Whether this phase is the decode sentinel — a value the running build
cannot interpret, kept verbatim by Unknown instead of
failing the whole typed list()/watch (#359, defect 3).
Same narrow contract as SnapshotPhase::is_unknown:
true means only “this string is not a phase this binary knows”, never
“unusual” or “not one I handle”. A canonical variant added to this enum
later is by definition not the sentinel, which is why the match is
written out exhaustively rather than left as a matches! — the compiler,
not a reviewer, is what forces the new variant to answer.
The reconciler uses it for its entry-time version-skew warning
(io::warn_unreadable_phase). Unlike the other drivers, it does not
promptly overwrite what it cannot read: no branch reads this phase, and
the terminal stamp comes from the mover at the end of a run, so an
unreadable value simply persists — up to a whole schedule interval. The
warning is therefore repeated every pass rather than emitted once: the
log is where the skew is visible.
use kopiur_api::RepositoryReplicationPhase;
assert!(RepositoryReplicationPhase::Unknown("Verifying".into()).is_unknown());
assert!(!RepositoryReplicationPhase::Pending.is_unknown());
assert!(!RepositoryReplicationPhase::Replicating.is_unknown());
assert!(!RepositoryReplicationPhase::Suspended.is_unknown());Trait Implementations§
Source§impl Clone for RepositoryReplicationPhase
impl Clone for RepositoryReplicationPhase
Source§fn clone(&self) -> RepositoryReplicationPhase
fn clone(&self) -> RepositoryReplicationPhase
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 RepositoryReplicationPhase
impl Debug for RepositoryReplicationPhase
Source§impl Default for RepositoryReplicationPhase
impl Default for RepositoryReplicationPhase
Source§fn default() -> RepositoryReplicationPhase
fn default() -> RepositoryReplicationPhase
Source§impl<'de> Deserialize<'de> for RepositoryReplicationPhase
impl<'de> Deserialize<'de> for RepositoryReplicationPhase
Source§fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
impl Eq for RepositoryReplicationPhase
Source§impl JsonSchema for RepositoryReplicationPhase
impl JsonSchema for RepositoryReplicationPhase
Source§fn json_schema(_: &mut SchemaGenerator) -> Schema
fn json_schema(_: &mut SchemaGenerator) -> Schema
§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for RepositoryReplicationPhase
impl PartialEq for RepositoryReplicationPhase
Source§fn eq(&self, other: &RepositoryReplicationPhase) -> bool
fn eq(&self, other: &RepositoryReplicationPhase) -> bool
self and other values to be equal, and is used by ==.Source§impl PhaseLabel for RepositoryReplicationPhase
impl PhaseLabel for RepositoryReplicationPhase
Source§const ALL: &'static [Self]
const ALL: &'static [Self]
Unknown.Source§fn label(&self) -> &str
fn label(&self) -> &str
match); the Unknown arm echoes the stored value verbatim so a
read-modify-write never mutates a phase this build does not understand.Source§fn unknown(raw: String) -> Self
fn unknown(raw: String) -> Self
phase_serde! macro’s host enum.impl StructuralPartialEq for RepositoryReplicationPhase
Auto Trait Implementations§
impl Freeze for RepositoryReplicationPhase
impl RefUnwindSafe for RepositoryReplicationPhase
impl Send for RepositoryReplicationPhase
impl Sync for RepositoryReplicationPhase
impl Unpin for RepositoryReplicationPhase
impl UnsafeUnpin for RepositoryReplicationPhase
impl UnwindSafe for RepositoryReplicationPhase
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<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§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