pub struct HetznerFloatingIp { /* private fields */ }Expand description
Hetzner Cloud floating-IP client. Bearer-token auth, same as cloud’s
HetznerDriver Cloud API calls.
Implementations§
Source§impl HetznerFloatingIp
impl HetznerFloatingIp
Sourcepub fn new(token: impl Into<String>) -> HetznerFloatingIp
pub fn new(token: impl Into<String>) -> HetznerFloatingIp
Build against api.hetzner.cloud.
Sourcepub fn with_base_url(self, url: impl Into<String>) -> HetznerFloatingIp
pub fn with_base_url(self, url: impl Into<String>) -> HetznerFloatingIp
Override the base URL — used by the in-process axum mocks below; production callers shouldn’t need this.
Trait Implementations§
Source§impl Clone for HetznerFloatingIp
impl Clone for HetznerFloatingIp
Source§fn clone(&self) -> HetznerFloatingIp
fn clone(&self) -> HetznerFloatingIp
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl EnvoyAdapter for HetznerFloatingIp
impl EnvoyAdapter for HetznerFloatingIp
Source§fn id(&self) -> &str
fn id(&self) -> &str
Stable provider id, e.g.
"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
How the adapter is built.
Source§fn supported_verb_ids(&self) -> Vec<&'static str>
fn supported_verb_ids(&self) -> Vec<&'static str>
Verb ids this adapter supports. The host calls this once at
registration time; per W144 D2 the result becomes the adapter’s
“supported_verbs” claim in its manifest.
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,
Dispatch one verb call.
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 HetznerFloatingIp
impl FloatingIpProvider for HetznerFloatingIp
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,
HetznerFloatingIp: '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,
HetznerFloatingIp: 'async_trait,
GET /servers?name=<machine.name> — same name→id lookup convention
cloud’s HetznerEnvoy driver already relies on (cloud-init sets the
Hetzner server’s name to MachineConfig.name).
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,
HetznerFloatingIp: '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,
HetznerFloatingIp: 'async_trait,
GET /floating_ips/{id}.
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,
HetznerFloatingIp: '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,
HetznerFloatingIp: 'async_trait,
POST /floating_ips/{id}/actions/assign.
Source§fn id(&self) -> &'static str
fn id(&self) -> &'static str
Provider id, e.g.
"hetzner" — matches
FloatingIpMachine::provider.Auto Trait Implementations§
impl !RefUnwindSafe for HetznerFloatingIp
impl !UnwindSafe for HetznerFloatingIp
impl Freeze for HetznerFloatingIp
impl Send for HetznerFloatingIp
impl Sync for HetznerFloatingIp
impl Unpin for HetznerFloatingIp
impl UnsafeUnpin for HetznerFloatingIp
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
Mutably borrows from an owned value. Read more
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>
Convert
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>
Convert
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)
Convert
&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)
Convert
&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>
Converts
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>
Converts
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)
Converts
&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)
Converts
&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> ⓘ
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