pub struct EtcdConfigStore {
client: Arc<OutboundClient>,
endpoints: Vec<String>,
prefix: String,
auth: Option<(String, String)>,
token: Mutex<Option<String>>,
timeout: Duration,
}Expand description
etcd config store over the v3 HTTP/JSON gateway.
Fields§
§client: Arc<OutboundClient>§endpoints: Vec<String>etcd base URLs (v1 uses the first).
prefix: StringKey prefix (no trailing slash), e.g. /featherbit.
auth: Option<(String, String)>§token: Mutex<Option<String>>Cached auth token, refreshed on 401.
timeout: DurationImplementations§
Source§impl EtcdConfigStore
impl EtcdConfigStore
Sourcepub fn new(cfg: &EtcdConfig) -> Self
pub fn new(cfg: &EtcdConfig) -> Self
Builds the store from system.yaml’s etcd settings.
fn base(&self) -> Result<&str, String>
Sourceasync fn call(&self, path: &str, body: &Value) -> Result<Value, String>
async fn call(&self, path: &str, body: &Value) -> Result<Value, String>
POSTs body to an etcd JSON endpoint, attaching the auth token and
re-authenticating once on 401.
async fn call_once( &self, path: &str, body: &Value, ) -> Result<Value, EtcdCallError>
Sourceasync fn authenticate(&self) -> Result<(), String>
async fn authenticate(&self) -> Result<(), String>
Authenticates and caches the token.
Sourceasync fn range_prefix(&self) -> Result<Vec<(String, Vec<u8>)>, String>
async fn range_prefix(&self) -> Result<Vec<(String, Vec<u8>)>, String>
Ranges all keys under the prefix, returning (key, value_bytes) pairs.
async fn put(&self, key: &str, value: &[u8]) -> Result<(), String>
async fn delete(&self, key: &str) -> Result<(), String>
fn route_key(&self, name: &str) -> String
fn policy_key(&self, name: &str) -> String
fn consumer_key(&self, name: &str) -> String
Trait Implementations§
Source§impl ConfigStore for EtcdConfigStore
impl ConfigStore for EtcdConfigStore
Source§fn load_all<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<GatewayConfig, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_all<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<GatewayConfig, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Loads the full gateway config from the source.
Source§fn commit<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
candidate: GatewayConfig,
) -> Pin<Box<dyn Future<Output = Result<(), String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn commit<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 SharedState,
candidate: GatewayConfig,
) -> Pin<Box<dyn Future<Output = Result<(), String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Persists a candidate config (the full desired
GatewayConfig after an
Admin API mutation) and makes it live. Read moreAuto Trait Implementations§
impl !Freeze for EtcdConfigStore
impl !RefUnwindSafe for EtcdConfigStore
impl Send for EtcdConfigStore
impl Sync for EtcdConfigStore
impl Unpin for EtcdConfigStore
impl UnsafeUnpin for EtcdConfigStore
impl !UnwindSafe for EtcdConfigStore
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Mutably borrows from an owned value. Read more
§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>
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 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>
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