canic_host/deployment_truth/model/lifecycle/verification/
mod.rs1use super::super::{CanisterControlClassV1, DeploymentCheckV1};
2use super::authority::LifecycleVerificationRequirementV1;
3use super::proposal::{
4 ExternalUpgradeProposalV1, ExternalUpgradeReceiptV1, ExternalUpgradeVerificationResultV1,
5};
6use serde::{Deserialize, Serialize};
7
8#[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#[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#[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#[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#[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)]
74pub enum ExternalUpgradeVerificationRequirementStatusV1 {
75 Required,
76 NotRequired,
77}
78
79#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
83pub struct ExternalUpgradeVerificationPolicyRequest {
84 pub policy_id: String,
85 pub proposal: ExternalUpgradeProposalV1,
86}
87
88#[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#[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)]
110pub enum ExternalVerificationObservationSourceV1 {
111 SuppliedObservation,
112 DeploymentTruthInventory,
113}
114
115#[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#[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#[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}