canic-core 0.111.0

Canic — a canister orchestration and management toolkit for the Internet Computer
Documentation
//! Module: view::fleet_activation
//!
//! Responsibility: expose internal activation projections and transition results.
//! Does not own: activation mutation, runtime startup, or endpoint serialization.
//! Boundary: ops reconstructs the role-owned record view and reports committed transitions.

use crate::{
    cdk::types::Principal,
    dto::{
        component_registry::ComponentRuntimeStatusResponse,
        fleet_activation::FleetActivationStatusResponse,
    },
    storage::stable::fleet_activation::{
        ComponentRuntimeRecord, FleetActivationStateRecord, FleetCascadeManifestEntryRecord,
        FleetCredentialManifestRecord, FleetSubnetRootAuthorityRecord,
        FleetSubnetWasmStoreAuthorityRecord,
    },
};
use canic_contracts::ids::FleetSubnetWasmStoreActivationAuthority;

///
/// FleetActivationView
///
/// Read projection reconstructed by ops from one role-owned activation record.
///

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct FleetActivationView {
    pub state: FleetActivationStateRecord,
    pub root_authority: Option<FleetSubnetRootAuthorityRecord>,
    pub wasm_store_authority: Option<FleetSubnetWasmStoreAuthorityRecord>,
    pub prepared_state_snapshot_hash: Option<[u8; 32]>,
    pub prepared_topology_snapshot_hash: Option<[u8; 32]>,
    pub cascade_manifest: Option<Vec<FleetCascadeManifestEntryRecord>>,
    pub credential_manifests: Vec<FleetCredentialManifestRecord>,
    pub component_runtime: Option<ComponentRuntimeRecord>,
}

/// The exact root-owned Wasm Store included in fresh Fleet activation.
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct FleetActivationWasmStoreView {
    pub pid: Principal,
}

/// Exact retained authority Root uses for its independently installed Store child.
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct FleetActivationWasmStoreAuthorityView {
    pub authority: FleetSubnetWasmStoreActivationAuthority,
}

///
/// FleetActivationTransition
///

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct FleetActivationTransition {
    pub status: FleetActivationStatusResponse,
    pub transitioned: bool,
    pub application_init_args: Option<Vec<u8>>,
}

///
/// ComponentRuntimeActivationTransition
///

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ComponentRuntimeActivationTransition {
    pub status: ComponentRuntimeStatusResponse,
    pub transitioned: bool,
}

/// Retained arguments and exact release for one application initialization attempt.
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ApplicationStartupWork {
    pub release: crate::model::caller_authority::CallerPublicationRecord,
    pub arguments: Option<Vec<u8>>,
}