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 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 operation_id: String,
pub plan_sha256: String,
pub phase: FleetEnsurePhase,
pub state: FleetEnsureProgressState,
pub applied_effects: u32,
pub reviewed_effects: usize,
}