kube_core::params

Struct WatchParams

source
pub struct WatchParams {
    pub label_selector: Option<String>,
    pub field_selector: Option<String>,
    pub timeout: Option<u32>,
    pub bookmarks: bool,
    pub send_initial_events: bool,
}
Expand description

Common query parameters used in watch calls on collections

Fields§

§label_selector: Option<String>

A selector to restrict returned objects by their labels.

Defaults to everything if None.

§field_selector: Option<String>

A selector to restrict returned objects by their fields.

Defaults to everything if None.

§timeout: Option<u32>

Timeout for the watch call.

This limits the duration of the call, regardless of any activity or inactivity. If unset for a watch call, we will use 290s. We limit this to 295s due to inherent watch limitations.

§bookmarks: bool

Enables watch events with type “BOOKMARK”.

Servers that do not implement bookmarks ignore this flag and bookmarks are sent at the server’s discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.

§send_initial_events: bool

Kubernetes 1.27 Streaming Lists sendInitialEvents=true may be set together with watch=true. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic “Bookmark” event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with "k8s.io/initial-events-end": "true" annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched.

When sendInitialEvents option is set, we require resourceVersionMatch option to also be set. The semantic of the watch request is as following:

  • resourceVersionMatch = NotOlderThan is interpreted as “data at least as new as the provided resourceVersion” and the bookmark event is send when the state is synced to a resourceVersion at least as fresh as the one provided by the ListOptions. If resourceVersion is unset, this is interpreted as “consistent read” and the bookmark event is send when the state is synced at least to the moment when request started being processed.
  • resourceVersionMatch set to any other value or unset Invalid error is returned.

Implementations§

source§

impl WatchParams

Builder interface to WatchParams

Usage:

use kube::api::WatchParams;
let lp = WatchParams::default()
    .timeout(60)
    .labels("kubernetes.io/lifecycle=spot");
source

pub fn timeout(self, timeout_secs: u32) -> Self

Configure the timeout for watch calls

This limits the duration of the call, regardless of any activity or inactivity. Defaults to 290s

source

pub fn fields(self, field_selector: &str) -> Self

Configure the selector to restrict the list of returned objects by their fields.

Defaults to everything. Supports =, ==, !=, and can be comma separated: key1=value1,key2=value2. The server only supports a limited number of field queries per type.

source

pub fn labels(self, label_selector: &str) -> Self

Configure the selector to restrict the list of returned objects by their labels.

Defaults to everything. Supports =, ==, !=, and can be comma separated: key1=value1,key2=value2.

source

pub fn labels_from(self, selector: &Selector) -> Self

Configure typed label selectors

Configure typed selectors from Selector and Expression lists.

use kube::core::{Expression, Selector, ParseExpressionError};
use k8s_openapi::apimachinery::pkg::apis::meta::v1::LabelSelector;

// From expressions
let selector: Selector = Expression::In("env".into(), ["development".into(), "sandbox".into()].into()).into();
let wp = WatchParams::default().labels_from(&selector);
let wp = WatchParams::default().labels_from(&Expression::Exists("foo".into()).into());

// Native LabelSelector
let selector: Selector = LabelSelector::default().try_into()?;
let wp = WatchParams::default().labels_from(&selector);
source

pub fn disable_bookmarks(self) -> Self

Disables watch bookmarks to simplify watch handling

This is not recommended to use with production watchers as it can cause desyncs. See #219 for details.

source

pub fn initial_events(self) -> Self

Kubernetes 1.27 Streaming Lists sendInitialEvents=true may be set together with watch=true. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic “Bookmark” event will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with "k8s.io/initial-events-end": "true" annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched.

When sendInitialEvents option is set, we require resourceVersionMatch option to also be set. The semantic of the watch request is as following:

  • resourceVersionMatch = NotOlderThan is interpreted as “data at least as new as the provided resourceVersion” and the bookmark event is send when the state is synced to a resourceVersion at least as fresh as the one provided by the ListOptions. If resourceVersion is unset, this is interpreted as “consistent read” and the bookmark event is send when the state is synced at least to the moment when request started being processed.
  • resourceVersionMatch set to any other value or unset Invalid error is returned.

Defaults to true if resourceVersion="" or resourceVersion="0" (for backward compatibility reasons) and to false otherwise.

source

pub fn streaming_lists() -> Self

Constructor for doing Kubernetes 1.27 Streaming List watches

Enables VersionMatch::NotOlderThan semantics and WatchParams::send_initial_events.

Trait Implementations§

source§

impl Clone for WatchParams

source§

fn clone(&self) -> WatchParams

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for WatchParams

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for WatchParams

source§

fn default() -> Self

Default WatchParams without any constricting selectors

source§

impl PartialEq for WatchParams

source§

fn eq(&self, other: &WatchParams) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for WatchParams

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.