pub struct ControlPlaneMinter { /* private fields */ }Expand description
Mints proxy tokens for one MicroVM through the control plane.
The bridge between the two lanes: ControlPlane::mint_auth_token answers a
control::ProxyToken, TokenMinter wants a session::ProxyToken, and the From
impl at session/proxy.rs is the conversion — one .into() at the boundary, which is
why that impl is From rather than a named function.
The plane sits behind an Arc rather than a reference because the minter must outlive
the call that built the session: minting happens inside the request path on every later
request, which is what makes it happen at all (TRAP-9).
Public so a driving adapter that builds its own session mints through this rather than a copy of it.
Implementations§
Source§impl ControlPlaneMinter
impl ControlPlaneMinter
Sourcepub fn new(
control: Arc<ControlPlane>,
microvm_id: impl Into<String>,
) -> ControlPlaneMinter
pub fn new( control: Arc<ControlPlane>, microvm_id: impl Into<String>, ) -> ControlPlaneMinter
A minter for microvm_id’s tokens, through control.
Trait Implementations§
Source§impl Debug for ControlPlaneMinter
impl Debug for ControlPlaneMinter
Source§impl TokenMinter for ControlPlaneMinter
impl TokenMinter for ControlPlaneMinter
Source§fn mint_for_ports(
&self,
ports: &[u16],
) -> Pin<Box<dyn Future<Output = Result<ProxyToken, Error>> + Send + '_>>
fn mint_for_ports( &self, ports: &[u16], ) -> Pin<Box<dyn Future<Output = Result<ProxyToken, Error>> + Send + '_>>
Overrides the default, which ignores the ports and delegates.
This is the minter that has a control plane behind it, so it is the one that can
actually widen a token’s scope — and without this override
Session::connect_headers(8080) would keep answering a header pair behind a token
scoped to 9000 only, which the proxy refuses with 403 Access to port denied. See
TokenMinter::mint_for_ports for the measurement.
Auto Trait Implementations§
impl !RefUnwindSafe for ControlPlaneMinter
impl !UnwindSafe for ControlPlaneMinter
impl Freeze for ControlPlaneMinter
impl Send for ControlPlaneMinter
impl Sync for ControlPlaneMinter
impl Unpin for ControlPlaneMinter
impl UnsafeUnpin for ControlPlaneMinter
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
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