pub struct EffectiveSource {
pub index: usize,
pub pvc: Option<PvcTargetRef>,
pub nfs_path: Option<String>,
pub stream: Option<StreamSource>,
pub source_path_override: Option<String>,
pub read_only: bool,
}Expand description
The single source one Snapshot actually backs up, after resolving
spec.source (a fanned-out child) against the policy’s sources[].
Fields§
§index: usizeIndex into policy.spec.sources these knobs came from.
pvc: Option<PvcTargetRef>The concrete PVC, when this is a PVC-shaped source.
nfs_path: Option<String>The NFS export path, when this is an NFS source.
stream: Option<StreamSource>The stream producer, when this is a stream source. Mounts nothing: the mover
execs a command and pipes its stdout into kopia, so no pvc/nfs_path is set
and read_only is meaningless (see EffectiveSource::read_only).
source_path_override: Option<String>sourcePathOverride from the governing source.
read_only: boolWhether the mount is read-only.
Implementations§
Source§impl EffectiveSource
impl EffectiveSource
Sourcepub fn kopia_source_path(&self, strategy: SourcePathStrategy) -> Option<String>
pub fn kopia_source_path(&self, strategy: SourcePathStrategy) -> Option<String>
The kopia source path (and mount path) for this run.
sourcePathOverride wins. Otherwise a PVC yields /pvc/<name> or
/pvc/<namespace>/<name> depending on the governing source’s
SourcePathStrategy, and an NFS source yields its export path.
The pvc-before-stream order is safe because the combination is
UNREPRESENTABLE, not because PVC is the better guess: a Source is
exactly-one-of, and effective_source_in refuses a PVC pin against a
source that is not PVC-shaped (see the comment there for what the divergence
used to cost). Every other constructor sets stream: None wherever it sets
pvc. Anything that starts building an EffectiveSource with both must
decide which path is authoritative FIRST — the two consumers
(identity_source_path, which records the manifest, and
snapshot::build, which fills the work spec) do not read this function the
same way.
Trait Implementations§
Source§impl Clone for EffectiveSource
impl Clone for EffectiveSource
Source§fn clone(&self) -> EffectiveSource
fn clone(&self) -> EffectiveSource
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 EffectiveSource
impl Debug for EffectiveSource
Source§impl PartialEq for EffectiveSource
impl PartialEq for EffectiveSource
Source§fn eq(&self, other: &EffectiveSource) -> bool
fn eq(&self, other: &EffectiveSource) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for EffectiveSource
Auto Trait Implementations§
impl Freeze for EffectiveSource
impl RefUnwindSafe for EffectiveSource
impl Send for EffectiveSource
impl Sync for EffectiveSource
impl Unpin for EffectiveSource
impl UnsafeUnpin for EffectiveSource
impl UnwindSafe for EffectiveSource
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> 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