Skip to main content

Crate foundation_deployment

Crate foundation_deployment 

Source
Expand description

Foundation Deployment — trait-based, multi-provider infrastructure deploys.

WHY: Infrastructure is declared as ordinary Rust types (no YAML/TOML). A type that implements Deployable can be deployed and destroyed uniformly, whatever the underlying provider or transport.

WHAT: The Deployable trait — deploy/destroy are async, returning a BoxFuture (Pin<Box<dyn Future<Output = Result<..>> + Send>>) the caller .awaits — plus ProviderClient (state store + HTTP client) and the namespaced state persistence a deploy records and a destroy reads back.

HOW: Implementors write plain Box::pin(async move { … }) — no async_trait macro, and the trait stays object-safe (dyn Deployable works). A provider whose transport does not fit ProviderClient’s HTTP client (e.g. Docker over a Unix socket) may build its own client inside the future and use ProviderClient only for state. See README.md for the full pattern and the “unique underlying mechanics” case.

Re-exports§

pub use traits::BoxFuture;
pub use traits::Deployable;
pub use traits::Deploying;

Modules§

config
Deployment target detection and configuration.
core
Provider-agnostic deployment primitives.
error
Unified error types for the deployment system.
json_schema
Shared JSON Schema and OpenAPI response type extraction utilities.
provider_client
Provider Client - Central client wrapping StateStore.
providers
Provider-specific deployment implementations.
resource_info
Resource info trait for computing resource identifiers from input types.
traits
Deployable trait and Deploying enum for trait-based deployments.
types
Common deployment output types for trait-based deployments.