use crate::ids::{
FleetAdmissionPolicy, FleetCoordinatorBinding, FleetSubnetRootBinding, ManagedCanisterBinding,
};
pub const FLEET_ADMISSION_ROOT_SCHEMA_VERSION: u16 = 1;
pub const MAX_FLEET_ADMISSION_ROOT_RECORD_BYTES: u32 = 8 * 1024 * 1024;
pub const MAX_FLEET_ADMISSION_ROOT_PARTICIPANTS: usize = 4_096;
pub const MAX_FLEET_ADMISSION_ROOT_STATUS_PAGE: u64 = 32;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum FleetAdmissionRootPhaseModel {
Preparing,
PerimeterFenced,
Activating,
Opening,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum FleetAdmissionRootParticipantPhaseModel {
Pending,
Prepared,
Activated,
Open,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct FleetAdmissionRootParticipantModel {
pub target: ManagedCanisterBinding,
pub projection_digest: [u8; 32],
pub phase: FleetAdmissionRootParticipantPhaseModel,
pub last_receipt_hash: Option<[u8; 32]>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct FleetAdmissionRootPrepareRequestModel {
pub authority: FleetCoordinatorBinding,
pub root: FleetSubnetRootBinding,
pub operation_id: [u8; 32],
pub expected_generation: u64,
pub expected_policy_digest: [u8; 32],
pub successor: FleetAdmissionPolicy,
pub request_hash: [u8; 32],
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct FleetAdmissionRootTransitionModel {
pub request: FleetAdmissionRootPrepareRequestModel,
pub phase: FleetAdmissionRootPhaseModel,
pub participant_catalog_digest: [u8; 32],
pub participants: Vec<FleetAdmissionRootParticipantModel>,
pub fence_request_hash: Option<[u8; 32]>,
pub prepare_receipt_hash: Option<[u8; 32]>,
pub activate_request_hash: Option<[u8; 32]>,
pub activate_receipt_hash: Option<[u8; 32]>,
pub open_request_hash: Option<[u8; 32]>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct FleetAdmissionRootReleasedReservationModel {
pub request: FleetAdmissionRootPrepareRequestModel,
pub participant_catalog_digest: [u8; 32],
pub participant_count: u32,
pub release_request_hash: [u8; 32],
pub receipt_hash: [u8; 32],
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct FleetAdmissionRootRetainedResultModel {
pub request: FleetAdmissionRootPrepareRequestModel,
pub participant_catalog_digest: [u8; 32],
pub participants: Vec<FleetAdmissionRootParticipantModel>,
pub fence_request_hash: [u8; 32],
pub prepare_receipt_hash: [u8; 32],
pub activate_request_hash: [u8; 32],
pub activate_receipt_hash: [u8; 32],
pub open_request_hash: [u8; 32],
pub receipt_hash: [u8; 32],
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct FleetAdmissionRootState {
pub schema_version: u16,
pub active_policy: FleetAdmissionPolicy,
pub current_transition: Option<FleetAdmissionRootTransitionModel>,
pub last_result: Option<FleetAdmissionRootRetainedResultModel>,
pub last_release: Option<FleetAdmissionRootReleasedReservationModel>,
}