canic_host/deployment_truth/model/lifecycle/handoff/
mod.rs1use super::super::CanisterControlClassV1;
2use super::authority::{
3 ConsentChannelKindV1, ConsentRequirementV1, ConsentSubjectKindV1, LifecycleModeV1,
4 LifecycleVerificationRequirementV1,
5};
6use super::plan::ExternalLifecyclePlanStatusV1;
7use serde::{Deserialize, Serialize};
8
9#[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#[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#[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#[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}