Skip to main content

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

1use super::super::CanisterControlClassV1;
2use super::authority::{
3    ConsentChannelKindV1, ConsentRequirementV1, ConsentSubjectKindV1, LifecycleModeV1,
4    LifecycleVerificationRequirementV1,
5};
6use super::plan::ExternalLifecyclePlanStatusV1;
7use serde::{Deserialize, Serialize};
8
9///
10/// ExternalLifecycleHandoffV1
11///
12#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
13pub struct ExternalLifecycleHandoffV1 {
14    pub schema_version: u32,
15    pub handoff_id: String,
16    pub handoff_digest: String,
17    pub lifecycle_check_id: String,
18    pub lifecycle_check_digest: String,
19    pub pending_report_id: String,
20    pub pending_report_digest: String,
21    pub proposal_report_id: String,
22    pub proposal_report_digest: String,
23    pub deployment_plan_id: String,
24    pub deployment_plan_digest: String,
25    pub inventory_id: String,
26    pub status: ExternalLifecyclePlanStatusV1,
27    pub handoff_actions: Vec<ExternalLifecycleHandoffActionV1>,
28    pub blocked_subjects: Vec<String>,
29    pub residual_exposure: Vec<String>,
30    pub operator_summary: String,
31}
32
33///
34/// ExternalLifecycleHandoffActionV1
35///
36#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
37pub struct ExternalLifecycleHandoffActionV1 {
38    pub subject: String,
39    pub proposal_id: String,
40    pub proposal_digest: String,
41    pub canister_id: Option<String>,
42    pub role: Option<String>,
43    pub control_class: CanisterControlClassV1,
44    pub lifecycle_mode: LifecycleModeV1,
45    pub required_external_action: String,
46    pub consent_channel_kind: ConsentChannelKindV1,
47    pub consent_subject_kind: ConsentSubjectKindV1,
48    pub required_principals: Vec<String>,
49    pub current_module_hash: Option<String>,
50    pub target_installed_module_hash: Option<String>,
51    pub target_canonical_embedded_config_sha256: Option<String>,
52    pub verification_requirements: Vec<LifecycleVerificationRequirementV1>,
53    pub operator_instructions: Vec<String>,
54}
55
56///
57/// ExternalLifecyclePendingActionV1
58///
59#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
60pub struct ExternalLifecyclePendingActionV1 {
61    pub subject: String,
62    pub proposal_id: String,
63    pub proposal_digest: String,
64    pub canister_id: Option<String>,
65    pub role: Option<String>,
66    pub control_class: CanisterControlClassV1,
67    pub lifecycle_mode: LifecycleModeV1,
68    pub required_external_action: String,
69    pub consent_requirements: Vec<ConsentRequirementV1>,
70    pub verification_requirements: Vec<LifecycleVerificationRequirementV1>,
71}
72
73///
74/// CriticalExternalFixReportV1
75///
76#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
77pub struct CriticalExternalFixReportV1 {
78    pub schema_version: u32,
79    pub report_id: String,
80    pub report_digest: String,
81    pub fix_id: String,
82    pub severity: String,
83    pub lifecycle_plan_id: String,
84    pub lifecycle_plan_digest: String,
85    pub pending_report_id: String,
86    pub pending_report_digest: String,
87    pub deployment_plan_id: String,
88    pub deployment_plan_digest: String,
89    pub inventory_id: String,
90    pub affected_roles: Vec<String>,
91    pub affected_canisters: Vec<String>,
92    pub directly_patchable_roles: Vec<String>,
93    pub externally_blocked_roles: Vec<String>,
94    pub dependency_blocked_roles: Vec<String>,
95    pub required_external_actions: Vec<String>,
96    pub protected_call_implications: Vec<String>,
97    pub residual_exposure: Vec<String>,
98    pub operator_next_steps: Vec<String>,
99}