pub struct TaskSpec { /* private fields */ }Expand description
Desired state specification.
TaskSpec describes what should be run and how it should be managed by the runtime.
Fields cover:
- logical grouping (
slot) - execution backend (
kind) - concurrency control (
admission) - lifecycle policies (
timeout,restart,backoff)
§Also
TaskSpecBuildervalidated builder (viaTaskSpec::builder).TaskKindexecution backend variants.RestartPolicy/BackoffPolicylifecycle policies.AdmissionPolicyduplicate handling.RunnerSelectorlabel-based runner routing.
Implementations§
Source§impl TaskSpec
impl TaskSpec
Sourcepub fn restart(&self) -> RestartPolicy
pub fn restart(&self) -> RestartPolicy
Restart policy applied after completion or failure.
Sourcepub fn backoff(&self) -> &BackoffPolicy
pub fn backoff(&self) -> &BackoffPolicy
Backoff configuration between restart attempts.
Sourcepub fn admission(&self) -> AdmissionPolicy
pub fn admission(&self) -> AdmissionPolicy
Admission policy for handling slot conflicts.
Sourcepub fn runner_selector(&self) -> Option<&RunnerSelector>
pub fn runner_selector(&self) -> Option<&RunnerSelector>
Label selector for runner routing (if present).
Source§impl TaskSpec
impl TaskSpec
Sourcepub fn builder(
slot: impl Into<Slot>,
kind: TaskKind,
timeout: impl Into<Timeout>,
) -> TaskSpecBuilder
pub fn builder( slot: impl Into<Slot>, kind: TaskKind, timeout: impl Into<Timeout>, ) -> TaskSpecBuilder
Create a TaskSpecBuilder with the three required fields.
use solti_model::{TaskSpec, TaskKind, SubprocessSpec, SubprocessMode, RestartPolicy};
let spec = TaskSpec::builder(
"my-slot",
TaskKind::Subprocess(SubprocessSpec {
mode: SubprocessMode::Command {
command: "echo".into(),
args: vec!["hello".into()],
},
env: Default::default(),
cwd: None,
fail_on_non_zero: Default::default(),
}),
5_000u64,
)
.restart(RestartPolicy::OnFailure)
.build()
.expect("valid spec");Source§impl TaskSpec
impl TaskSpec
Sourcepub fn with_runner_selector(self, sel: RunnerSelector) -> Self
pub fn with_runner_selector(self, sel: RunnerSelector) -> Self
Attach a runner selector used by the router (consuming builder-style).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for TaskSpec
impl<'de> Deserialize<'de> for TaskSpec
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for TaskSpec
impl StructuralPartialEq for TaskSpec
Auto Trait Implementations§
impl Freeze for TaskSpec
impl RefUnwindSafe for TaskSpec
impl Send for TaskSpec
impl Sync for TaskSpec
impl Unpin for TaskSpec
impl UnsafeUnpin for TaskSpec
impl UnwindSafe for TaskSpec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more