Skip to main content

canic_host/deployment_truth/model/lifecycle/verification/
mod.rs

1use super::super::{CanisterControlClassV1, DeploymentCheckV1};
2use super::authority::LifecycleVerificationRequirementV1;
3use super::proposal::{
4    ExternalUpgradeProposalV1, ExternalUpgradeReceiptV1, ExternalUpgradeVerificationResultV1,
5};
6use serde::{Deserialize, Serialize};
7
8///
9/// ExternalUpgradeVerificationReportV1
10///
11#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
12pub struct ExternalUpgradeVerificationReportV1 {
13    pub schema_version: u32,
14    pub report_id: String,
15    pub report_digest: String,
16    pub proposal_id: String,
17    pub proposal_digest: String,
18    pub receipt_id: String,
19    pub receipt_digest: String,
20    pub subject: String,
21    pub canister_id: Option<String>,
22    pub role: Option<String>,
23    pub verification_result: ExternalUpgradeVerificationResultV1,
24    pub verification_notes: Vec<String>,
25    pub live_inventory_required: bool,
26    pub status_summary: String,
27}
28
29///
30/// ExternalUpgradeVerificationReportRequest
31///
32#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
33pub struct ExternalUpgradeVerificationReportRequest {
34    pub report_id: String,
35    pub proposal: ExternalUpgradeProposalV1,
36    pub receipt: ExternalUpgradeReceiptV1,
37}
38
39///
40/// ExternalUpgradeVerificationPolicyV1
41///
42#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
43pub struct ExternalUpgradeVerificationPolicyV1 {
44    pub schema_version: u32,
45    pub policy_id: String,
46    pub policy_digest: String,
47    pub proposal_id: String,
48    pub proposal_digest: String,
49    pub deployment_plan_id: String,
50    pub deployment_plan_digest: String,
51    pub subject: String,
52    pub canister_id: Option<String>,
53    pub role: Option<String>,
54    pub required_verification: Vec<LifecycleVerificationRequirementV1>,
55    pub verification_requirements: Vec<ExternalUpgradeVerificationPolicyRequirementV1>,
56    pub max_observation_age_seconds: Option<u64>,
57    pub status_summary: String,
58}
59
60///
61/// ExternalUpgradeVerificationPolicyRequirementV1
62///
63#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
64pub struct ExternalUpgradeVerificationPolicyRequirementV1 {
65    pub requirement: LifecycleVerificationRequirementV1,
66    pub status: ExternalUpgradeVerificationRequirementStatusV1,
67    pub expected_value: Option<String>,
68}
69
70///
71/// ExternalUpgradeVerificationRequirementStatusV1
72///
73#[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)]
74pub enum ExternalUpgradeVerificationRequirementStatusV1 {
75    Required,
76    NotRequired,
77}
78
79///
80/// ExternalUpgradeVerificationPolicyRequest
81///
82#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
83pub struct ExternalUpgradeVerificationPolicyRequest {
84    pub policy_id: String,
85    pub proposal: ExternalUpgradeProposalV1,
86}
87
88///
89/// ExternalUpgradeVerificationObservationV1
90///
91#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
92pub struct ExternalUpgradeVerificationObservationV1 {
93    pub source: ExternalVerificationObservationSourceV1,
94    pub deployment_check_id: Option<String>,
95    pub deployment_check_digest: Option<String>,
96    pub inventory_id: Option<String>,
97    pub observed_at: Option<String>,
98    pub live_inventory_observed: bool,
99    pub controller_observation_present: bool,
100    pub observed_control_class: Option<CanisterControlClassV1>,
101    pub observed_module_hash: Option<String>,
102    pub observed_canonical_embedded_config_sha256: Option<String>,
103    pub protected_call_ready: Option<bool>,
104}
105
106///
107/// ExternalVerificationObservationSourceV1
108///
109#[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)]
110pub enum ExternalVerificationObservationSourceV1 {
111    SuppliedObservation,
112    DeploymentTruthInventory,
113}
114
115///
116/// ExternalUpgradeVerificationCheckV1
117///
118#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
119pub struct ExternalUpgradeVerificationCheckV1 {
120    pub schema_version: u32,
121    pub check_id: String,
122    pub check_digest: String,
123    pub policy_id: String,
124    pub policy_digest: String,
125    pub proposal_id: String,
126    pub proposal_digest: String,
127    pub subject: String,
128    pub canister_id: Option<String>,
129    pub role: Option<String>,
130    pub observation: ExternalUpgradeVerificationObservationV1,
131    pub requirement_results: Vec<ExternalUpgradeVerificationCheckRequirementV1>,
132    pub verification_result: ExternalUpgradeVerificationResultV1,
133    pub status_summary: String,
134}
135
136///
137/// ExternalUpgradeVerificationCheckRequirementV1
138///
139#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
140pub struct ExternalUpgradeVerificationCheckRequirementV1 {
141    pub requirement: LifecycleVerificationRequirementV1,
142    pub status: ExternalUpgradeVerificationRequirementStatusV1,
143    pub expected_value: Option<String>,
144    pub observed_value: Option<String>,
145    pub satisfied: Option<bool>,
146}
147
148///
149/// ExternalUpgradeVerificationCheckRequest
150///
151#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
152pub struct ExternalUpgradeVerificationCheckRequest {
153    pub check_id: String,
154    pub policy: ExternalUpgradeVerificationPolicyV1,
155    pub observation: Option<ExternalUpgradeVerificationObservationV1>,
156    pub deployment_check: Option<DeploymentCheckV1>,
157}