Skip to main content

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

1use super::super::CanisterControlClassV1;
2use super::authority::{LifecycleAuthorityV1, LifecycleModeV1};
3use super::handoff::ExternalLifecyclePendingActionV1;
4use super::proposal::ExternalUpgradeProposalV1;
5use serde::{Deserialize, Serialize};
6
7///
8/// ExternalLifecyclePlanV1
9///
10#[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///
30/// ExternalLifecycleRoleUpgradeV1
31///
32#[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///
45/// ExternalLifecyclePlanStatusV1
46///
47#[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)]
48pub enum ExternalLifecyclePlanStatusV1 {
49    Ready,
50    PendingExternalAction,
51    Blocked,
52}
53
54///
55/// ExternalUpgradeProposalReportV1
56///
57#[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///
72/// ExternalLifecyclePendingReportV1
73///
74#[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///
96/// ExternalLifecycleCheckV1
97///
98#[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}