canic_host/deployment_truth/model/inventory/
mod.rs1use super::artifact::ObservedArtifactV1;
2use super::plan::DeploymentIdentityV1;
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
9pub struct DeploymentInventoryV1 {
10 pub schema_version: u32,
11 pub inventory_id: String,
12 pub observed_at: String,
13 pub observed_identity: Option<DeploymentIdentityV1>,
14 pub observed_root: Option<DeploymentRootObservationV1>,
15 pub local_config: LocalDeploymentConfigV1,
16 pub observed_canisters: Vec<ObservedCanisterV1>,
17 pub observed_pool: Vec<ObservedPoolCanisterV1>,
18 pub observed_artifacts: Vec<ObservedArtifactV1>,
19 pub observed_verifier_readiness: VerifierReadinessObservationV1,
20 pub unresolved_observations: Vec<DeploymentObservationGapV1>,
21}
22
23#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
27pub struct DeploymentRootObservationV1 {
28 pub deployment_name: String,
29 pub network: String,
30 pub fleet_template: String,
31 pub root_principal: String,
32 pub observed_canister_id: String,
33 pub observation_source: DeploymentRootObservationSourceV1,
34 pub control_class: CanisterControlClassV1,
35 pub controllers: Vec<String>,
36 pub module_hash: Option<String>,
37 pub status: Option<String>,
38 pub role_assignment_source: Option<String>,
39}
40
41#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
45pub enum DeploymentRootObservationSourceV1 {
46 IcpCanisterStatus,
47 LocalDeploymentState,
48}
49
50#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
54pub struct ExpectedCanisterV1 {
55 pub role: String,
56 pub canister_id: Option<String>,
57 pub control_class: CanisterControlClassV1,
58}
59
60#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
64pub struct ObservedCanisterV1 {
65 pub canister_id: String,
66 pub role: Option<String>,
67 pub control_class: CanisterControlClassV1,
68 pub controllers: Vec<String>,
69 pub module_hash: Option<String>,
70 pub status: Option<String>,
71 pub root_trust_anchor: Option<String>,
72 pub canonical_embedded_config_digest: Option<String>,
73 pub role_assignment_source: Option<String>,
74}
75
76#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
80pub enum CanisterControlClassV1 {
81 DeploymentControlled,
82 CanicManagedPool,
83 ExternallyImported,
84 JointlyControlled,
85 UserControlled,
86 UnknownUnsafe,
87}
88
89#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
93pub struct ExpectedPoolCanisterV1 {
94 pub pool: String,
95 pub canister_id: Option<String>,
96 pub role: Option<String>,
97}
98
99#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
103pub struct ObservedPoolCanisterV1 {
104 pub pool: String,
105 pub canister_id: String,
106 pub role: Option<String>,
107 pub control_class: CanisterControlClassV1,
108}
109
110#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
114pub struct LocalDeploymentConfigV1 {
115 pub config_path: Option<String>,
116 pub raw_config_sha256: Option<String>,
117 pub canonical_embedded_config_sha256: Option<String>,
118}
119
120#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
124pub struct VerifierReadinessExpectationV1 {
125 pub required: bool,
126 pub expected_role_epochs: Vec<RoleEpochExpectationV1>,
127}
128
129#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
133pub struct VerifierReadinessObservationV1 {
134 pub status: ObservationStatusV1,
135 pub role_epochs: Vec<RoleEpochObservationV1>,
136}
137
138#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
142pub struct RoleEpochExpectationV1 {
143 pub role: String,
144 pub minimum_epoch: u64,
145}
146
147#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
151pub struct RoleEpochObservationV1 {
152 pub role: String,
153 pub observed_epoch: Option<u64>,
154 pub status: ObservationStatusV1,
155}
156
157#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
161pub struct DeploymentObservationGapV1 {
162 pub key: String,
163 pub description: String,
164}
165
166#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
170pub enum ObservationStatusV1 {
171 NotObserved,
172 Observed,
173 Missing,
174 Inconclusive,
175}