Expand description
Firecracker-compatible HTTP API server for squib.
squib-api exposes the same OpenAPI surface that upstream Firecracker speaks over
a Unix domain socket: same paths, same JSON shapes, same status codes, same
{"fault_message": "..."} error body, same Server: Firecracker API response
header. Per-endpoint compatibility lives in
21-api-compat-matrix.md; the machinery is
pinned in 20-firecracker-api.md.
§Architecture
schemas—Raw*request/response shapes plus validated newtypes whose only construction path is viaTryFrom. Per 10-data-model.md § 2.3, validation is the constructor; “unvalidatedDriveConfig” is unrepresentable.action— theApiAction/ApiResponseenum the API thread posts onto the bounded mpsc channel into the VMM event loop.controller— theRuntimeApiControllerwithArcSwapread-mirror, lock-free read fast path, and per-action-classtokio::time::timeout(D26).error— the wire-shapeFaultMessage,ApiError(incl. squib-only 504), and theIntoResponseimpl that translates everything into the upstream wire shape.handlers— axum endpoint handlers for every Firecracker route.server— axum router ontokio::net::UnixListenerplus theserveentry.replay—--config-filestatic-config replay path; deterministic order, identical validation/dispatch as the HTTP layer.
Re-exports§
pub use action::ActionClass;pub use action::ApiAction;pub use action::ApiResponse;pub use controller::ActionReceiver;pub use controller::ActionSender;pub use controller::ControllerSnapshot;pub use controller::RuntimeApiController;pub use controller::TimeoutTable;pub use error::ApiError;pub use error::FaultMessage;pub use error::Result;pub use replay::ReplayError;pub use replay::parse_config_file;pub use replay::replay_config;pub use schemas::InstanceInfo;pub use schemas::VersionResponse;pub use schemas::VmState;pub use server::DEFAULT_MAX_PAYLOAD;pub use server::FIRECRACKER_SERVER_HEADER;pub use server::MAX_MAX_PAYLOAD;pub use server::MIN_MAX_PAYLOAD;pub use server::ServeOptions;pub use server::bind_listener;pub use server::router;pub use server::serve;pub use server::serve_bound;pub use server::unlink_socket_if_exists;
Modules§
- action
- Cross-thread
ApiAction/ApiResponseenums. - controller
RuntimeApiController— channel to VMM + lock-free read mirror + timeout taxonomy.- error
- Error type and the wire-shape Firecracker uses for failed requests.
- handlers
- Axum handlers per 20-firecracker-api.md § 2.
- replay
--config-filestatic-config replay path.- schemas
- Request and response types that mirror Firecracker’s
OpenAPIshapes. - server
- Axum router on a Unix domain socket; the
serveentrypoint.