use crate::fleet_ensure::model::FleetEnsureSuccessorReviewReason;
use serde::Serialize;
#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum FleetEnsurePhase {
Infrastructure,
ImportReconciliation,
ControlPlane,
WorkloadProvisioning,
PoolReadiness,
TerminalVerification,
Complete,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
#[serde(tag = "kind", rename_all = "snake_case")]
pub enum FleetEnsureProgressState {
Advancing,
AwaitingProgress {
elapsed_seconds: u64,
provisioning: Option<FleetProvisioningProgress>,
},
PrerequisiteComplete,
FundingRequired,
ReviewRequired {
reason: FleetEnsureSuccessorReviewReason,
review: Option<Box<crate::fleet_ensure::model::FleetSuccessorReview>>,
},
Complete,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct FleetProvisioningProgress {
pub pending_root_failure:
Option<canic_core::dto::component_provisioning::FleetComponentProvisioningRootFailure>,
pub phase: canic_core::dto::component_provisioning::FleetComponentProvisioningPhase,
pub root_batch_count: u32,
pub accepted_root_count: u32,
pub provisioned_root_count: u32,
pub directory_confirmed_root_count: u32,
pub directory_confirmation_root_count: u32,
pub runtime_activated_root_count: u32,
pub component_count: u32,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct FleetEnsureProgress {
pub next_action: Option<FleetEnsureActionProgress>,
pub operation_id: String,
pub plan_sha256: String,
pub phase: FleetEnsurePhase,
pub state: FleetEnsureProgressState,
pub applied_effects: u32,
pub reviewed_effects: usize,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct FleetEnsureActionProgress {
pub kind: FleetEnsureActionKind,
pub target: String,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum FleetEnsureActionKind {
ActivateRegistry,
ActivateRegistryMirror,
AdoptStore,
BootstrapStore,
Create,
Delete,
Fund,
FundEstate,
Install,
JoinRoot,
MaintainPoolReadiness,
ObservePoolReadiness,
PrepareComponentRegistry,
PrepareStoreFixture,
Protocol,
ProvisionComponents,
PublishStoreChunk,
PublishStoreFixtureChunk,
ReconcilePoolAsset,
SealAuthority,
SetControllers,
Start,
Stop,
SynchronizeRegistry,
Transfer,
}