Skip to main content

WorkloadRuntime

Trait WorkloadRuntime 

Source
pub trait WorkloadRuntime: Send + Sync {
    // Required methods
    fn deploy_workload<'life0, 'life1, 'async_trait>(
        &'life0 self,
        spec: &'life1 WorkloadSpec,
    ) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn teardown_workload<'life0, 'life1, 'async_trait>(
        &'life0 self,
        name: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn is_running<'life0, 'life1, 'async_trait>(
        &'life0 self,
        name: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn runtime_health<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
}
Expand description

Shared interface for deploying and managing WorkloadSpec containers.

This is the keystone abstraction (R256-F10) that makes sim and cloud literally interchangeable at the container level:

  • Camp/sim tier: LocalDockerRuntime in cloud implements this trait via the docker CLI pointed at OrbStack (or any Docker-compatible socket). No mesh — containers communicate over OrbStack’s bridge network.

  • Yubaba/cloud-HA tier: yubaba::runtime::ContainerRuntime (gRPC to containerd) will implement this trait. Mesh assignment is a separate orchestration step on top (handled by yubaba’s raft layer), not part of the shared deploy/supervise interface.

Callers that type against WorkloadRuntime automatically work with both backends. Reconcilers in cloud use it today; yubaba wires its own impl when R276 Tier-3 lands.

Required Methods§

Source

fn deploy_workload<'life0, 'life1, 'async_trait>( &'life0 self, spec: &'life1 WorkloadSpec, ) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Deploy a workload described by spec. Pulls the image if needed, creates and starts the container, and returns an opaque workload ID (typically the container name derived from spec.name).

Idempotent: re-deploying a running workload replaces it cleanly.

Source

fn teardown_workload<'life0, 'life1, 'async_trait>( &'life0 self, name: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Tear down a deployed workload — stop the process and remove all associated state. No-op when the workload is already gone.

Source

fn is_running<'life0, 'life1, 'async_trait>( &'life0 self, name: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Returns true when the named workload is currently running (i.e. the container process is alive and has not exited).

Source

fn runtime_health<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Probe the runtime backend. Returns true when the backend socket is reachable and healthy (e.g. docker daemon up, containerd gRPC up). Used by health endpoints and startup checks.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§