Skip to main content

Controller

Struct Controller 

Source
pub struct Controller<Ctx>
where Ctx: Send + Sync + 'static + Context, Ctx::Error: Send + Sync + 'static, for<'de> Ctx::Resource: Send + Sync + 'static + Clone + Debug + Serialize + Deserialize<'de>, <Ctx::Resource as Resource>::DynamicType: Eq + Clone + Hash + Default + Debug + Unpin,
{ /* private fields */ }
Expand description

The Controller watches a set of resources, calling methods on the provided Context when events occur.

Implementations§

Source§

impl<Ctx> Controller<Ctx>
where Ctx: Send + Sync + 'static + Context, Ctx::Error: Send + Sync + 'static, for<'de> Ctx::Resource: Clone + Debug + Serialize + Deserialize<'de>, <Ctx::Resource as Resource>::DynamicType: Eq + Clone + Hash + Default + Debug + Unpin,

Source

pub fn namespaced( client: Client, context: Ctx, namespace: &str, wc: Config, ) -> Self

Creates a new controller for a namespaced resource using the given client. The context given determines the type of resource to watch (via the Context::Resource type provided as part of the trait implementation). The resources to be watched will be limited to resources in the given namespace. A watcher::Config can be given to limit the resources watched (for instance, watcher::Config::default().labels("app=myapp")).

Source

pub fn namespaced_all(client: Client, context: Ctx, wc: Config) -> Self

Creates a new controller for a namespaced resource using the given client. The context given determines the type of resource to watch (via the Context::Resource type provided as part of the trait implementation). The resources to be watched will not be limited by namespace. A watcher::Config can be given to limit the resources watched (for instance, watcher::Config::default().labels("app=myapp")).

Source

pub fn cluster(client: Client, context: Ctx, wc: Config) -> Self
where Ctx::Resource: Resource<Scope = ClusterResourceScope>,

Creates a new controller for a cluster-scoped resource using the given client. The context given determines the type of resource to watch (via the Context::Resource type provided as part of the trait implementation). A watcher::Config can be given to limit the resources watched (for instance, watcher::Config::default().labels("app=myapp")).

Source

pub fn with_name(self, name: impl Into<String>) -> Self

Sets the name identifying this controller in its metrics (the controller field of ReconcileRecord and StepRecord), and in the controller field of its reconcile tracing span. Defaults to Context::FINALIZER_NAME if set, and otherwise to the kind of the resource being watched.

Controllers sharing an observer must have distinct names, or their metrics will be merged.

Source

pub fn with_observer(self, observer: Arc<dyn ReconcileObserver>) -> Self

Reports every reconciliation pass, and every step within one, to observer. See the observe module.

Source

pub fn with_event_recorder(self, events: Arc<EventRecorder>) -> Self

Publishes a Kubernetes event on the resource whenever reconciling it fails, as determined by Context::failure_event, and enables TraceMetadata::publish_event for the context’s own events. See the events module, including for the RBAC permissions this requires.

events must not be given to any other controller. Besides every event appearing to come from the same controller, a successful pass of one controller would reset the aggregation of another’s failure events for the same resource.

Source

pub async fn run(self)

Run the controller. This method will not return. The Context given to the constructor will have its apply method called when a resource is created or updated, and its cleanup method called when a resource is about to be deleted.

To run multiple replicas of a controller with only one reconciling at a time, pass this method’s future to LeaderElection::with_lease.

Source

pub fn with_controller<F>(self, f: F) -> Self
where F: FnOnce(Controller<Ctx::Resource>) -> Controller<Ctx::Resource>,

Allow configuring the underlying kube_runtime::Controller. For example, you can use controller.with_controller(|controller| controller.with_config(Config::default().concurrency(10))) to limit the created controller to reconciling 10 resources at once.

Auto Trait Implementations§

§

impl<Ctx> !Freeze for Controller<Ctx>

§

impl<Ctx> !RefUnwindSafe for Controller<Ctx>

§

impl<Ctx> !Sync for Controller<Ctx>

§

impl<Ctx> !UnwindSafe for Controller<Ctx>

§

impl<Ctx> Send for Controller<Ctx>
where <<Ctx as Context>::Resource as Resource>::DynamicType: Sized, <Ctx as Context>::Resource: for<'de> Sized, Box<dyn Fn(&<Ctx as Context>::Resource) -> Api<<Ctx as Context>::Resource> + Sync + Send>: Send, Controller<<Ctx as Context>::Resource>: Send,

§

impl<Ctx> Unpin for Controller<Ctx>
where <<Ctx as Context>::Resource as Resource>::DynamicType: Sized, <Ctx as Context>::Resource: for<'de> Sized, Box<dyn Fn(&<Ctx as Context>::Resource) -> Api<<Ctx as Context>::Resource> + Sync + Send>: Unpin, Controller<<Ctx as Context>::Resource>: Unpin, Ctx: Unpin,

§

impl<Ctx> UnsafeUnpin for Controller<Ctx>
where <<Ctx as Context>::Resource as Resource>::DynamicType: Sized, <Ctx as Context>::Resource: for<'de> Sized, Box<dyn Fn(&<Ctx as Context>::Resource) -> Api<<Ctx as Context>::Resource> + Sync + Send>: UnsafeUnpin, Controller<<Ctx as Context>::Resource>: UnsafeUnpin, Ctx: UnsafeUnpin,

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ServiceExt for T

Source§

fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>
where Self: Sized,

Apply a transformation to the response body. Read more
Source§

fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>
where Self: Sized,

High level tracing that classifies responses using HTTP status codes. Read more
Source§

fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>
where Self: Sized,

High level tracing that classifies responses using gRPC headers. Read more
Source§

fn follow_redirects(self) -> FollowRedirect<Self>
where Self: Sized,

Follow redirect resposes using the Standard policy. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more