Skip to main content

Ec2Runtime

Struct Ec2Runtime 

Source
pub struct Ec2Runtime { /* private fields */ }

Implementations§

Source§

impl Ec2Runtime

Source

pub fn new() -> Option<Self>

Construct the Docker/Podman backend. Returns None when no container CLI is available — callers then run in metadata-only mode.

Source

pub async fn new_k8s(server_port: u16) -> Result<Self, BackendInitError>

Construct the Kubernetes backend. server_port is fakecloud’s bound port (used when FAKECLOUD_K8S_SELF_URL omits one). Fails fast on misconfiguration — never silently degrades to Docker.

Source

pub fn firewall(&self) -> &FirewallEnforcer

The firewall enforcer, so the control plane can skip building the model when enforcement is disabled and report the mode for introspection.

Source

pub async fn reconcile_firewall(&self, subnets: Vec<SubnetFirewall>)

Re-render and atomically apply the security-group/NACL ruleset for the given per-subnet model. No-op (cheap) when enforcement is disabled. Serialized against other reconciles (finding 4.3).

Source

pub fn network_isolation_enforced(&self) -> bool

Whether this runtime backs network isolation with real enforcement — host nftables (Docker, opt-in) or k8s NetworkPolicy. Lets the control plane skip building the firewall model entirely when neither applies.

Source

pub fn is_k8s(&self) -> bool

True for the Kubernetes backend (isolation via NetworkPolicy).

Source

pub async fn reconcile_network_policies(&self, rules: Vec<InstanceRules>)

Apply one NetworkPolicy per instance for the k8s backend. No-op on the Docker backend (which uses nftables instead). Serialized against other reconciles so a concurrent apply+prune can’t delete a just-applied policy (finding 4.3).

Source

pub fn network_isolation_summary(&self) -> NetworkIsolationSummary

A snapshot of how this runtime isolates instance traffic, for the /_fakecloud/ec2/instance-networks introspection endpoint (#1745 ph5).

Source

pub fn cli_name(&self) -> &str

Name of the active backend, for logging.

Source

pub async fn run_instance( &self, instance_id: &str, user_data: Option<&str>, tags: &BTreeMap<String, String>, network: Option<&InstanceNetwork>, ) -> Result<RunningInstance, RuntimeError>

Boot a container for an instance. user_data is the base64-encoded user-data as received on the wire (RunInstances UserData), run at boot the way cloud-init would, if present.

Source

pub async fn stop_instance(&self, instance_id: &str)

Stop an instance’s backing container (maps to StopInstances). Docker stops the container in place; k8s deletes the Pod (recreated on the next Start).

Source

pub async fn start_instance(&self, instance_id: &str) -> Option<RunningInstance>

Start a previously-stopped instance (maps to StartInstances). Returns the running container’s (possibly new) handle and private IP. Docker starts the existing container; k8s recreates the Pod under a new unique name, so the handle changes — callers should persist it.

Source

pub async fn reboot_instance( &self, instance_id: &str, ) -> Option<RunningInstance>

Restart an instance’s backing container (maps to RebootInstances). Docker restarts in place; k8s deletes and recreates the Pod under a new name. Returns the running container’s handle + IP when it changed (k8s), so callers can persist the new handle; None when nothing to update.

Source

pub async fn terminate_instance(&self, instance_id: &str)

Remove an instance’s backing container (maps to TerminateInstances).

Source

pub async fn stop_all(&self)

Tear down every container this runtime spawned (used on reset and shutdown). The Docker backend leans on the shared reaper for any container it loses track of.

Source

pub async fn reap_stale(&self)

Sweep instance Pods orphaned by a previous fakecloud process (k8s only; the Docker backend relies on the shared reaper).

Source

pub async fn console_output(&self, instance_id: &str) -> Option<Vec<u8>>

The backing container’s console log — its combined stdout/stderr, which includes anything user-data printed at boot (maps to GetConsoleOutput). None for an unbacked instance or when logs can’t be read.

Trait Implementations§

Source§

impl Clone for Ec2Runtime

Source§

fn clone(&self) -> Ec2Runtime

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 Ec2Runtime

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> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> IntoEither for T

Source§

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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