pub enum Event<K> {
Apply(K),
Delete(K),
Init,
InitApply(K),
InitDone,
}
Expand description
Watch events returned from the watcher
Variants§
Apply(K)
An object was added or modified
Delete(K)
An object was deleted
NOTE: This should not be used for managing persistent state elsewhere, since events may be lost if the watcher is unavailable. Use Finalizers instead.
Init
The watch stream was restarted.
A series of InitApply
events are expected to follow until all matching objects
have been listed. This event can be used to prepare a buffer for InitApply
events.
InitApply(K)
Received an object during Init
.
Objects returned here are either from the initial stream using the StreamingList
strategy,
or from pages using the ListWatch
strategy.
These events can be passed up if having a complete set of objects is not a concern.
If you need to wait for a complete set, please buffer these events until an InitDone
.
InitDone
The initialisation is complete.
This can be used as a signal to replace buffered store contents atomically.
No more InitApply
events will happen until the next Init
event.
Any objects that were previously Applied
but are not listed in any of
the InitApply
events should be assumed to have been Deleted
.
Implementations§
source§impl<K> Event<K>
impl<K> Event<K>
sourcepub fn into_iter_applied(self) -> impl Iterator<Item = K>
👎Deprecated since 0.92.0: unnecessary to flatten a single object. This fn will be removed in 0.96.0.
pub fn into_iter_applied(self) -> impl Iterator<Item = K>
Flattens out all objects that were added or modified in the event.
Deleted
objects are ignored, all objects mentioned by Restarted
events are
emitted individually.
sourcepub fn into_iter_touched(self) -> impl Iterator<Item = K>
👎Deprecated since 0.92.0: unnecessary to flatten a single object. This fn will be removed in 0.96.0.
pub fn into_iter_touched(self) -> impl Iterator<Item = K>
Flattens out all objects that were added, modified, or deleted in the event.
Note that Deleted
events may be missed when restarting the stream. Use finalizers
or owner references instead if you care about cleaning up external resources after
deleted objects.
sourcepub fn modify(self, f: impl FnMut(&mut K)) -> Self
pub fn modify(self, f: impl FnMut(&mut K)) -> Self
Map each object in an event through a mutator fn
This allows for memory optimizations in watch streams. If you are chaining a watch stream into a reflector as an in memory state store, you can control the space used by each object by dropping fields.
use k8s_openapi::api::core::v1::Pod;
use kube::ResourceExt;
event.modify(|pod| {
pod.managed_fields_mut().clear();
pod.annotations_mut().clear();
pod.status = None;
});
Trait Implementations§
Auto Trait Implementations§
impl<K> Freeze for Event<K>where
K: Freeze,
impl<K> RefUnwindSafe for Event<K>where
K: RefUnwindSafe,
impl<K> Send for Event<K>where
K: Send,
impl<K> Sync for Event<K>where
K: Sync,
impl<K> Unpin for Event<K>where
K: Unpin,
impl<K> UnwindSafe for Event<K>where
K: UnwindSafe,
Blanket Implementations§
source§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,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§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