Skip to main content

DogtagPool

Struct DogtagPool 

Source
pub struct DogtagPool { /* private fields */ }
Expand description

Connection pool managing multiple Dogtag CA instances.

Routes enrollment and certificate operations to healthy CA backends. Integrates with kipuka’s HA subsystem for consistent failover behavior across all CA backend types.

§Health Checking

The pool periodically probes each backend via GET /ca/rest/info. Backends that fail consecutive health checks are marked unhealthy and excluded from request routing until they recover.

§Thread Safety

DogtagPool is Send + Sync and designed to be shared via Arc<DogtagPool> across the async runtime.

Implementations§

Source§

impl DogtagPool

Source

pub fn new( configs: &[DogtagConfig], failure_threshold: u32, cooldown_secs: u64, ) -> DogtagResult<Self>

Create a pool from multiple Dogtag configurations.

Each configuration represents a separate CA instance. The pool creates a DogtagClient for each and begins tracking health.

Source

pub fn get_client(&self) -> DogtagResult<Arc<DogtagClient>>

Get a healthy client from the pool.

Returns the first healthy backend. If no backend is healthy, returns DogtagError::NoHealthyBackend.

Source

pub async fn health_check_all(&self)

Run a single health check pass across all backends.

Probes each backend via GET /ca/rest/info and updates health state. Unhealthy backends in cooldown are skipped.

Source

pub fn healthy_count(&self) -> usize

Return the number of backends currently considered healthy.

Source

pub fn total_count(&self) -> usize

Return the total number of backends in the pool.

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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.

§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: 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, 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.
§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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