Skip to main content

LocalExecutionManager

Struct LocalExecutionManager 

Source
pub struct LocalExecutionManager { /* private fields */ }
Expand description

Local lifecycle facade shared by service, CLI, and SDK adapters.

Implementations§

Source§

impl LocalExecutionManager

Source

pub async fn with_native_linux_oci_migration( state_path: impl Into<PathBuf>, home_dir: impl Into<PathBuf>, config: NativeLinuxOciMigrationConfig, ) -> ExecutionManagerResult<Self>

Compose the retained VM backend with the production native-Linux OCI owner and bundle provider. Only new Sandbox reservations use OCI.

Source

pub async fn with_windows_whpx_oci_qualification( state_path: impl Into<PathBuf>, home_dir: impl Into<PathBuf>, config: WindowsWhpxOciMigrationConfig, ) -> ExecutionManagerResult<Self>

Compose the retained backend with the externally launched Box/WHPX OCI service.

Source

pub async fn with_configured_backend( state_path: impl Into<PathBuf>, home_dir: impl Into<PathBuf>, ) -> ExecutionManagerResult<Self>

Select the production migration composition only when explicitly opted in through A3S_BOX_OCI_MIGRATION=sandbox.

Source

pub async fn with_configured_backend_and_pull_progress( state_path: impl Into<PathBuf>, home_dir: impl Into<PathBuf>, pull_progress_fn: Option<PullProgressFn>, ) -> ExecutionManagerResult<Self>

Configured construction retaining the CLI’s image-pull progress hook on both the legacy and migrated preparation paths.

Source§

impl LocalExecutionManager

Source

pub async fn remove_execution( &self, execution_id: &ExecutionId, expected_generation: ExecutionGeneration, ) -> ExecutionManagerResult<bool>

Remove one terminal generation after durably claiming its teardown.

A failed cleanup deliberately leaves the record in removing. Retrying the same generation resumes cleanup before the record is forgotten.

Source§

impl LocalExecutionManager

Source

pub fn new( state_path: impl Into<PathBuf>, home_dir: impl Into<PathBuf>, backend: Arc<dyn LocalExecutionBackend>, ) -> Self

Source

pub fn state_path(&self) -> &Path

Source

pub async fn preflight_isolation( &self, isolation: ExecutionIsolation, ) -> ExecutionManagerResult<()>

Probe the backend selected by the current creation policy before an image pull or other product preparation. Record creation repeats all mutable capability checks before publishing durable state.

Source

pub fn with_vm_backend( state_path: impl Into<PathBuf>, home_dir: impl Into<PathBuf>, ) -> Self

Source

pub fn with_oci_migration_backend( state_path: impl Into<PathBuf>, home_dir: impl Into<PathBuf>, oci_backend: Arc<dyn LocalExecutionBackend>, policy: OciMigrationPolicy, ) -> Self

Compose the retained Box backend with an explicitly supplied OCI SDK backend. The policy affects new reservations only; every selected route is persisted before preflight and remains authoritative after restart.

Trait Implementations§

Source§

impl Clone for LocalExecutionManager

Source§

fn clone(&self) -> LocalExecutionManager

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 ExecutionManager for LocalExecutionManager

Source§

fn create<'life0, 'life1, 'async_trait>( &'life0 self, request: CreateExecutionRequest, operation_id: &'life1 OperationId, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionReservation>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Persist exactly one unstarted execution reservation for operation_id.
Source§

fn start<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, expected_generation: ExecutionGeneration, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionLease>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Start one created execution after fencing stale callers by generation.
Source§

fn inspect<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionStatus>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn read_logs<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, expected_generation: ExecutionGeneration, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<Vec<LogEntry>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Read structured stdout/stderr entries after fencing the runtime generation.
Source§

fn list_processes<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, expected_generation: ExecutionGeneration, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionProcessInventory>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Return the runtime-visible init and live exec processes for one exact generation.
Source§

fn stats<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, expected_generation: ExecutionGeneration, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionStats>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Return one normalized resource snapshot for an exact generation.
Source§

fn events<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, expected_generation: ExecutionGeneration, request: ExecutionEventsRequest, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionEventBatch>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Poll ordered runtime events without crossing the selected generation.
Source§

fn update_resources<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, expected_generation: ExecutionGeneration, operation_id: &'life2 OperationId, update: ExecutionResourceUpdate, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionLease>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Apply a replay-safe partial live resource update to one exact generation.
Source§

fn create_filesystem_snapshot<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, expected_generation: ExecutionGeneration, snapshot_id: &'life2 ExecutionSnapshotId, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionSnapshot>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Temporarily quiesce the execution, atomically capture its rootfs in the runtime-managed snapshot store, and restore its prior stable state.
Source§

fn filesystem_snapshot_size<'life0, 'life1, 'async_trait>( &'life0 self, snapshot_id: &'life1 ExecutionSnapshotId, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<Option<u64>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Return the size of a fully published runtime-managed snapshot, or None when it does not exist.
Source§

fn delete_filesystem_snapshot<'life0, 'life1, 'async_trait>( &'life0 self, snapshot_id: &'life1 ExecutionSnapshotId, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<bool>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Delete a runtime-managed snapshot, refusing while an active execution still uses it as a copy-on-write lower.
Source§

fn pause<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, expected_generation: ExecutionGeneration, keep_memory: bool, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionLease>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Pause one execution and return the generation-fenced paused lease.
Source§

fn resume<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, expected_generation: ExecutionGeneration, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionLease>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn restart_with_options<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, expected_generation: ExecutionGeneration, operation_id: &'life2 OperationId, options: RestartExecutionOptions, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionLease>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Restart with controls that become part of the durable operation intent.
Source§

fn kill<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, expected_generation: ExecutionGeneration, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<KillOutcome>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn kill_with_options<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, expected_generation: ExecutionGeneration, options: KillExecutionOptions, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<KillOutcome>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Terminate one execution with controls that survive lifecycle recovery. Read more
Source§

fn remove<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, expected_generation: ExecutionGeneration, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<bool>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Remove one terminal execution and all runtime-owned resources. Read more
Source§

fn reconcile<'life0, 'life1, 'async_trait>( &'life0 self, operation_id: &'life1 OperationId, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ReconcileOutcome>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn create_and_start<'life0, 'life1, 'async_trait>( &'life0 self, request: CreateExecutionRequest, operation_id: &'life1 OperationId, ) -> Pin<Box<dyn Future<Output = Result<ExecutionLease, ExecutionManagerError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Create and start exactly one execution for operation_id. Read more
Source§

fn restart<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, generation: ExecutionGeneration, operation_id: &'life2 OperationId, ) -> Pin<Box<dyn Future<Output = Result<ExecutionLease, ExecutionManagerError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, Self: 'async_trait,

Terminate the current runtime, advance its generation exactly once, and start it again under an idempotent operation identity.
Source§

impl ExecutionPortConnector for LocalExecutionManager

Source§

fn connect_port<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, generation: ExecutionGeneration, port: NonZeroU16, timeout: Duration, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionPortStream>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

impl ExecutionSessionManager for LocalExecutionManager

Source§

fn execute<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, generation: ExecutionGeneration, request: ExecRequest, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecOutput>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn start_process<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, generation: ExecutionGeneration, request: ExecRequest, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionProcess>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn start_pty<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, generation: ExecutionGeneration, request: PtyRequest, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<ExecutionProcess>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn transfer_file<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, generation: ExecutionGeneration, request: FileRequest, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<FileResponse>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn filesystem<'life0, 'life1, 'async_trait>( &'life0 self, execution_id: &'life1 ExecutionId, generation: ExecutionGeneration, request: FilesystemRequest, ) -> Pin<Box<dyn Future<Output = ExecutionManagerResult<FilesystemResponse>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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> 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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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 = !

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