Skip to main content

WorkloadHost

Struct WorkloadHost 

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

Governs and records one adapter.

Implementations§

Source§

impl WorkloadHost

Source

pub fn new( runtime: Arc<dyn WorkloadRuntime>, gate: Arc<dyn GateBackend>, agent_id: impl Into<String>, node_tier: NodeTrustTier, ) -> Self

Host for runtime on a node of node_tier.

Source

pub fn with_chain(self, cm: Arc<ChainManager>) -> Self

Attach the chain.

Source

pub fn node_tier(&self) -> NodeTrustTier

The trust tier this host’s node is governed at right now.

Source

pub fn set_node_tier(&self, tier: NodeTrustTier)

Change the governed tier (an operator demotion or promotion). Takes effect on the next gated call, including on instances already placed.

Source

pub fn runtime(&self) -> &Arc<dyn WorkloadRuntime> ⓘ

The adapter.

Source

pub async fn load( &self, w: &VerifiedWorkload, cfg: &WorkloadConfig, ) -> Result<InstanceHandle, RuntimeError>

Gate, admit and load. Store pins are also gated as workload.install.

Source

pub async fn adopt( &self, h: &InstanceHandle, w: &VerifiedWorkload, ) -> Result<(), RuntimeError>

Re-attach an instance loaded before a controller restart (WorkloadRuntime::adopt), gated as workload.load and chained with phase readopted. A no-op if the instance is already known.

Source

pub async fn start(&self, h: &InstanceHandle) -> Result<(), RuntimeError>

Gate and start.

Source

pub async fn console( &self, h: &InstanceHandle, command: &str, ) -> Result<RunEvidence, RuntimeError>

Gate and run one console cycle, chained as workload.start with phase console.

Instances the adapter says must stop first (sensor feed contention, including ones WeftOS did not load) are each gated as workload.stop; if any is denied nothing is stopped. Each stop is chained as it happens (so a failed console run still leaves the record), and afterwards each stopped instance is restarted, gated as workload.start and chained with phase resume-after-console.

Source

pub async fn stop( &self, h: &InstanceHandle, grace: Duration, ) -> Result<RunEvidence, RuntimeError>

Gate and stop.

Source

pub async fn unload(&self, h: InstanceHandle) -> Result<(), RuntimeError>

Gate and unload.

Source

pub async fn workload_for(&self, h: &InstanceHandle) -> Option<VerifiedWorkload>

The workload a loaded instance came from, if this host loaded or adopted it.

Source

pub async fn revoke_teardown( &self, h: &InstanceHandle, grace: Duration, why: Value, ) -> Result<(), RuntimeError>

Stop and unload an instance because its package, signer or artifact was revoked. Not gated: the applied revocation is the authority (why names it in both records), so enforcement cannot depend on an operator having written a stop or unload permit. The unload is attempted even when the stop fails (the instance may already have exited). Each step is chained like the gated one, with forced_by_revocation set.

Source

pub async fn status(&self, h: &InstanceHandle) -> InstanceStatus

Status (not gated: read-only).

Source§

impl WorkloadHost

Source

pub async fn upgrade_seed_firmware( &self, seed: &SeedApiRuntime, backup: &SeedBackup, target_version: &str, ) -> Result<UpgradeOutcome, RuntimeError>

Governed, backed-up Seed firmware upgrade to the operator-pinned target_version: gated as workload.install of seed-firmware@<target_version> (so the decision names the version), applied only if that is the version the Seed has pending, outcome chained.

Source

pub async fn recover_seed_writes( &self, seed: &SeedApiRuntime, backup: &SeedBackup, ) -> Result<(), RuntimeError>

Governed writes_gated recovery (truncate-confirm after a backup).

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

Source§

type Pointer = u32

Source§

fn debug( pointer: <T as Pointee>::Pointer, f: &mut Formatter<'_>, ) -> Result<(), Error>

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, 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<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