Weave documentation
Rust referenceloom-deploy

loom-deploy · spec

Source declarations, signatures and documentation for spec.

Source: sigil/weave/tools/loom-deploy/src/spec.rs. SHA-256: afa0f02e5e8cf377fd1e698150e8b2126a10edac8aef2f888f68dd40f50238e0.

This reference follows declared source modules, retains conditional attributes, and includes public declarations and implementation methods. Private-module re-exports and trait resolution require the compiler; this is a source reference, not a claim that every listed item is a root import. Function bodies and constant values are omitted.

spec::Runtime

What runtime ARISE should provision.

#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Runtime {
    /// WASI/Wasmtime. Best for stateless services.
    Wasm,
    /// OCI container.
    Docker,
    /// Firecracker microVM. Best for stateful workloads.
    Firecracker,
}

Source line: 11.

spec::NetworkMode

Network exposure mode.

#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum NetworkMode {
    /// Default — bridge to a private subnet.
    Bridge,
    /// Share the host network.
    Host,
    /// Air-gapped.
    None,
}

Source line: 23.

spec::ResourceSpec

Hardware resources requested.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ResourceSpec {
/// CPU cores requested. Floats allowed for fractional cores in v2.

pub cpu_cores: u32,
/// Memory in MB.

pub memory_mb: u64,
/// Disk in MB.

#[serde(default)]
pub disk_mb: u64
}

Source line: 34.

spec::NetworkSpec

Network spec.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct NetworkSpec {
/// Network mode.

#[serde(default = "default_mode")]
pub mode: NetworkMode,
/// Ports exposed to peers.

#[serde(default)]
pub exposed_ports: Vec<u16>
}

Source line: 46.

spec::DeploySpec

The full deploy spec. Any unknown fields under [deploy.extra] flow through unchanged into the marketplace request.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct DeploySpec {
/// User-facing app name.

pub name: String,
/// Path to the entrypoint relative to the repo root.

pub entrypoint: String,
/// Runtime.

pub runtime: Runtime,
/// Resource request.

pub resources: ResourceSpec,
/// Network spec.

#[serde(default)]
pub network: NetworkSpec,
/// Env vars.

#[serde(default)]
pub env: std::collections::BTreeMap<String, String>,
/// Free-form fields the marketplace consumes.

#[serde(default)]
pub extra: serde_json::Value
}

Source line: 71.

spec::DeployError

Errors raised parsing the spec.

#[derive(Debug, Error)]
pub enum DeployError {
    /// The file doesn't exist.
    #[error("loom.toml not found at {0}")]
    Missing(String),
    /// IO error reading the file.
    #[error("io reading {0}: {1}")]
    Io(String, std::io::Error),
    /// TOML parse error.
    #[error("parse {0}: {1}")]
    Parse(String, toml::de::Error),
    /// Required `[deploy]` section absent.
    #[error("loom.toml is missing a `[deploy]` section")]
    NoDeploySection,
}

Source line: 93.

spec::parse

Parse a loom.toml file path.

pub fn parse(path: &Path) -> Result<DeploySpec, DeployError>;

Source line: 114.

On this page