Skip to main content

greentic_deployer/environment/
mod.rs

1//! Environment persistence (A2 of `plans/next-gen-deployment.md`).
2//!
3//! Public surface:
4//!
5//! - [`EnvironmentStore`] — local-FS persistence trait
6//! - [`LocalFsStore`] — concrete impl rooted at `~/.greentic/environments/`
7//! - [`StoreError`] — typed errors
8//! - [`EnvFlock`] — RAII per-env exclusive lock (re-exported for transactional callers)
9//! - [`atomic_write_json`], [`atomic_write_bytes`], [`copy_to_backup`] — primitives
10//! - [`mint_revision_id`], [`mint_deployment_id`] — ULID generators
11
12pub mod atomic_write;
13pub mod audit;
14pub mod bootstrap;
15pub mod bundle_deployment;
16pub mod file_lock;
17pub mod http_store;
18pub mod lifecycle;
19pub mod messaging;
20pub mod mutations;
21pub mod mutations_local;
22pub mod reads;
23pub mod runtime_config;
24pub mod snapshot;
25pub mod store;
26pub mod trust_root;
27
28pub use atomic_write::{AtomicWriteError, atomic_write_bytes, atomic_write_json, copy_to_backup};
29pub use audit::{
30    AUDIT_EVENT_SCHEMA_V1, Actor, AuditDecision, AuditError, AuditEvent, AuditLog, AuditResult,
31    POLICY_LOCAL_ONLY, POLICY_LOCAL_OWNER, authorize_local_owner, current_local_actor,
32};
33pub use bootstrap::{EnsureLocalEnvironmentPayload, LocalEnvOutcome};
34pub use bundle_deployment::{
35    BundleDeploymentError, REVENUE_POLICY_PREDICATE_TYPE_V1, RevenuePolicyPredicate,
36    RevenuePolicyVersion, write_revenue_policy_version,
37};
38pub use file_lock::{EnvFlock, LockError};
39pub use http_store::{AuthMethod, ConstructionError, HttpEnvironmentStore};
40pub use lifecycle::{
41    HealthCheckId, HealthGateFailure, LifecycleError, apply_revision_transition,
42    apply_revision_transition_with_health_gate,
43};
44pub use messaging::{MessagingEndpointIndexEntry, materialize_messaging_index};
45pub use mutations::{
46    AddBundlePayload, AddMessagingEndpointPayload, ApplyTrafficSplitOutcome, EnvironmentMutations,
47    ExtensionKey, FieldUpdate, MigrateMergePayload, MigrateSeedPayload, RemoveBundleOutcome,
48    RevisionTransitionOutcome, RollbackTrafficSplitOutcome, SetMessagingWelcomeFlowPayload,
49    SetTrafficSplitPayload, StageRevisionPayload, TrustRootAddOutcome, TrustRootRemoveOutcome,
50    TrustRootSeed, UpdateBundlePayload, UpdateEnvironmentPayload, WarmRevisionPayload,
51};
52pub use reads::EnvironmentReads;
53pub use runtime_config::materialize_runtime_config;
54pub use snapshot::{SnapshotId, restore_environment, snapshot_environment};
55pub use store::{EnvironmentStore, LocalFsStore, Locked, StoreError};
56pub use trust_root::{
57    TRUST_ROOT_FILE, TRUST_ROOT_SCHEMA_V1, TrustRootDocument, TrustRootError, add_trusted_key,
58    load as load_trust_root, remove_trusted_key, trust_root_path,
59};
60
61use greentic_deploy_spec::{DeploymentId, RevisionId};
62
63/// Mint a fresh [`RevisionId`] (ULID). Wrapper kept here so call sites do not
64/// need a direct dependency on the spec crate.
65pub fn mint_revision_id() -> RevisionId {
66    RevisionId::new()
67}
68
69/// Mint a fresh [`DeploymentId`] (ULID). Wrapper kept here so call sites do
70/// not need a direct dependency on the spec crate.
71pub fn mint_deployment_id() -> DeploymentId {
72    DeploymentId::new()
73}