canic_host/deployment_truth/model/lifecycle/plan/
mod.rs1use super::super::CanisterControlClassV1;
2use super::authority::{LifecycleAuthorityV1, LifecycleModeV1};
3use super::handoff::ExternalLifecyclePendingActionV1;
4use super::proposal::ExternalUpgradeProposalV1;
5use serde::{Deserialize, Serialize};
6
7#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
11pub struct ExternalLifecyclePlanV1 {
12 pub schema_version: u32,
13 pub lifecycle_plan_id: String,
14 pub lifecycle_plan_digest: String,
15 pub lifecycle_authority_report_id: String,
16 pub deployment_plan_id: String,
17 pub deployment_plan_digest: String,
18 pub inventory_id: String,
19 pub lifecycle_authority_rows: Vec<LifecycleAuthorityV1>,
20 pub directly_executable_role_upgrades: Vec<ExternalLifecycleRoleUpgradeV1>,
21 pub proposed_external_role_upgrades: Vec<ExternalLifecycleRoleUpgradeV1>,
22 pub blocked_role_upgrades: Vec<ExternalLifecycleRoleUpgradeV1>,
23 pub dependency_blockers: Vec<String>,
24 pub protected_call_implications: Vec<String>,
25 pub residual_exposure: Vec<String>,
26 pub status: ExternalLifecyclePlanStatusV1,
27}
28
29#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
33pub struct ExternalLifecycleRoleUpgradeV1 {
34 pub subject: String,
35 pub canister_id: Option<String>,
36 pub role: Option<String>,
37 pub control_class: CanisterControlClassV1,
38 pub lifecycle_mode: LifecycleModeV1,
39 pub required_external_action: Option<String>,
40 pub blockers: Vec<String>,
41 pub warnings: Vec<String>,
42}
43
44#[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)]
48pub enum ExternalLifecyclePlanStatusV1 {
49 Ready,
50 PendingExternalAction,
51 Blocked,
52}
53
54#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
58pub struct ExternalUpgradeProposalReportV1 {
59 pub schema_version: u32,
60 pub report_id: String,
61 pub report_digest: String,
62 pub lifecycle_plan_id: String,
63 pub lifecycle_plan_digest: String,
64 pub deployment_plan_id: String,
65 pub deployment_plan_digest: String,
66 pub inventory_id: String,
67 pub proposals: Vec<ExternalUpgradeProposalV1>,
68 pub blocked_subjects: Vec<String>,
69}
70
71#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
75pub struct ExternalLifecyclePendingReportV1 {
76 pub schema_version: u32,
77 pub report_id: String,
78 pub report_digest: String,
79 pub lifecycle_plan_id: String,
80 pub lifecycle_plan_digest: String,
81 pub proposal_report_id: String,
82 pub proposal_report_digest: String,
83 pub deployment_plan_id: String,
84 pub deployment_plan_digest: String,
85 pub inventory_id: String,
86 pub direct_upgrade_count: usize,
87 pub pending_external_count: usize,
88 pub blocked_count: usize,
89 pub pending_external_actions: Vec<ExternalLifecyclePendingActionV1>,
90 pub blocked_subjects: Vec<String>,
91 pub residual_exposure: Vec<String>,
92 pub status: ExternalLifecyclePlanStatusV1,
93}
94
95#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
99pub struct ExternalLifecycleCheckV1 {
100 pub schema_version: u32,
101 pub check_id: String,
102 pub check_digest: String,
103 pub lifecycle_plan_id: String,
104 pub lifecycle_plan_digest: String,
105 pub proposal_report_id: String,
106 pub proposal_report_digest: String,
107 pub pending_report_id: String,
108 pub pending_report_digest: String,
109 pub deployment_plan_id: String,
110 pub deployment_plan_digest: String,
111 pub inventory_id: String,
112 pub status: ExternalLifecyclePlanStatusV1,
113 pub direct_upgrade_count: usize,
114 pub pending_external_count: usize,
115 pub blocked_count: usize,
116 pub residual_exposure_count: usize,
117 pub summary: String,
118 pub next_actions: Vec<String>,
119}