pub struct OvhFloatingIp { /* private fields */ }Expand description
OVH Additional-IP client. See module docs re: the auth placeholder.
Implementations§
Source§impl OvhFloatingIp
impl OvhFloatingIp
Sourcepub fn new(consumer_key: impl Into<String>) -> OvhFloatingIp
pub fn new(consumer_key: impl Into<String>) -> OvhFloatingIp
Build against api.ovh.com.
Sourcepub fn with_base_url(self, url: impl Into<String>) -> OvhFloatingIp
pub fn with_base_url(self, url: impl Into<String>) -> OvhFloatingIp
Override the base URL — used by the in-process axum mocks below.
Trait Implementations§
Source§impl Clone for OvhFloatingIp
impl Clone for OvhFloatingIp
Source§fn clone(&self) -> OvhFloatingIp
fn clone(&self) -> OvhFloatingIp
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl EnvoyAdapter for OvhFloatingIp
impl EnvoyAdapter for OvhFloatingIp
Source§fn tier(&self) -> Tier
fn tier(&self) -> Tier
A, not S, and deliberately: the adapter’s OVH auth is a placeholder
(bare X-Ovh-Consumer header, not OVH’s timestamped HMAC), so the verb
is dispatchable but not live-ready. See floating_ip_adapters::ovh.
Source§fn id(&self) -> &str
fn id(&self) -> &str
"hetzner". Used for tool-namespace
composition (mcp__yah__envoy__hetzner__<verb>) and for matching
against .yah/envoys/<id>/.Source§fn flavor(&self) -> AdapterFlavor
fn flavor(&self) -> AdapterFlavor
Source§fn supported_verb_ids(&self) -> Vec<&'static str>
fn supported_verb_ids(&self) -> Vec<&'static str>
Source§fn dispatch<'life0, 'life1, 'async_trait>(
&'life0 self,
verb_id: &'life1 str,
input: Value,
) -> Pin<Box<dyn Future<Output = Result<Value>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn dispatch<'life0, 'life1, 'async_trait>(
&'life0 self,
verb_id: &'life1 str,
input: Value,
) -> Pin<Box<dyn Future<Output = Result<Value>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
verb_id is one of the entries in
Self::supported_verb_ids; input is the raw JSON request body.
Returns the verb’s response body as JSON. Read moreSource§impl FloatingIpProvider for OvhFloatingIp
impl FloatingIpProvider for OvhFloatingIp
Source§fn resolve_target<'life0, 'life1, 'async_trait>(
&'life0 self,
machine: &'life1 FloatingIpMachine,
) -> Pin<Box<dyn Future<Output = Result<FloatingIpTarget, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
OvhFloatingIp: 'async_trait,
fn resolve_target<'life0, 'life1, 'async_trait>(
&'life0 self,
machine: &'life1 FloatingIpMachine,
) -> Pin<Box<dyn Future<Output = Result<FloatingIpTarget, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
OvhFloatingIp: 'async_trait,
Assumes the OVH serviceName equals machine.name (the same
name-is-the-key convention the Hetzner adapter uses for its
GET /servers?name= lookup) — GET /dedicated/server/{serviceName}
confirms the box exists at OVH before anything is attempted.
Source§fn current_assignment<'life0, 'life1, 'async_trait>(
&'life0 self,
ip_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<FloatingIpState, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
OvhFloatingIp: 'async_trait,
fn current_assignment<'life0, 'life1, 'async_trait>(
&'life0 self,
ip_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<FloatingIpState, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
OvhFloatingIp: 'async_trait,
GET /ip/{ip} — modeled on OVH’s IP-service + routing info; see
module docs re: exact endpoint shape needing live verification.
Source§fn reassign<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ip_id: &'life1 str,
target: &'life2 FloatingIpTarget,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
OvhFloatingIp: 'async_trait,
fn reassign<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ip_id: &'life1 str,
target: &'life2 FloatingIpTarget,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
OvhFloatingIp: 'async_trait,
POST /dedicated/server/{serviceName}/ipMove — moves ip_id onto
the dedicated server named target.attach_id.
Source§fn id(&self) -> &'static str
fn id(&self) -> &'static str
"hetzner" — matches
FloatingIpMachine::provider.Auto Trait Implementations§
impl !RefUnwindSafe for OvhFloatingIp
impl !UnwindSafe for OvhFloatingIp
impl Freeze for OvhFloatingIp
impl Send for OvhFloatingIp
impl Sync for OvhFloatingIp
impl Unpin for OvhFloatingIp
impl UnsafeUnpin for OvhFloatingIp
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> FloatingIpEnvoy for Twhere
T: FloatingIpProvider + ?Sized,
impl<T> FloatingIpEnvoy for Twhere
T: FloatingIpProvider + ?Sized,
Source§fn floating_ip_assign<'life0, 'async_trait>(
&'life0 self,
input: FloatingIpAssignInput,
) -> Pin<Box<dyn Future<Output = Result<FloatingIpAssignOutput, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
T: 'async_trait,
fn floating_ip_assign<'life0, 'async_trait>(
&'life0 self,
input: FloatingIpAssignInput,
) -> Pin<Box<dyn Future<Output = Result<FloatingIpAssignOutput, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
T: 'async_trait,
floating_ip.assign — move the IP, idempotently and zone-checked.Source§fn floating_ip_status<'life0, 'async_trait>(
&'life0 self,
input: FloatingIpStatusInput,
) -> Pin<Box<dyn Future<Output = Result<FloatingIpStatusOutput, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
T: 'async_trait,
fn floating_ip_status<'life0, 'async_trait>(
&'life0 self,
input: FloatingIpStatusInput,
) -> Pin<Box<dyn Future<Output = Result<FloatingIpStatusOutput, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
T: 'async_trait,
floating_ip.status — report where the IP lives today.impl<T> Fruit for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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