Skip to main content

NodeEnvironment

Struct NodeEnvironment 

Source
pub struct NodeEnvironment {
    pub driver: Arc<dyn VmDriver>,
    pub network: Arc<dyn GuestNetwork>,
    pub agent: Arc<dyn GuestAgentFactory>,
    pub cow_manager: Arc<CowManager>,
}
Expand description

What differs between hosts of the sandbox stack.

Fields§

§driver: Arc<dyn VmDriver>

The VMM the sandboxes run under, behind the driver port (arcbox_vm_driver::VmDriver). It must claim the Prepare and Staging capabilities and offer vsock: the boot and warm-pool flows spawn the VMM ahead of the guest, every flow stages the files its computer boots from, and the guest agent is reached over vsock. A driver that cannot is refused by ComputerManager::new rather than at the first boot.

§network: Arc<dyn GuestNetwork>

What the sandboxes’ NICs attach to, behind the guest-network port (arcbox_vm_driver::net::GuestNetwork). It must offer the NetworkReconcile capability: the quarantine ledger is how a host learns which addresses a previous process still holds, and a network without it is refused at construction rather than at the first cleanup ticket.

§agent: Arc<dyn GuestAgentFactory>

How the runtime reaches the agent inside each sandbox, behind the guest-agent port (crate::agent::GuestAgentFactory). The reference is the arcbox-vm-proto client over the driver’s vsock capability (crate::agent::VmProtoAgentFactory), which is what every Firecracker sandbox speaks; a composer whose Computers are not reachable that way supplies its own. The factory also decides what the readiness gate needs from the driver, so an environment whose driver cannot serve it is refused at construction rather than at the first boot.

§cow_manager: Arc<CowManager>

The copy-on-write rootfs manager. Built by the composer, because what it needs — the data directory, the loop-device tooling of the host’s userland, where its dmsetup lives — is exactly what differs between environments.

Trait Implementations§

Source§

impl Clone for NodeEnvironment

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NodeEnvironment

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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