canic_host/deployment_truth/model/lifecycle/proposal/
mod.rs1use super::super::CanisterControlClassV1;
2use super::authority::{
3 ConsentRequirementV1, ExternalUpgradeAuthorizationModeV1, LifecycleModeV1,
4 LifecycleVerificationRequirementV1,
5};
6use serde::{Deserialize, Serialize};
7
8#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
12pub struct ExternalUpgradeProposalV1 {
13 pub proposal_id: String,
14 pub proposal_digest: String,
15 pub deployment_plan_id: String,
16 pub deployment_plan_digest: String,
17 pub lifecycle_plan_id: String,
18 pub lifecycle_plan_digest: String,
19 pub promotion_plan_id: Option<String>,
20 pub promotion_plan_digest: Option<String>,
21 pub promotion_provenance_id: Option<String>,
22 pub promotion_provenance_digest: Option<String>,
23 pub subject: String,
24 pub canister_id: Option<String>,
25 pub role: Option<String>,
26 pub control_class: CanisterControlClassV1,
27 pub lifecycle_mode: LifecycleModeV1,
28 pub observed_before_digest: String,
29 pub current_module_hash: Option<String>,
30 pub current_canonical_embedded_config_sha256: Option<String>,
31 pub target_wasm_sha256: Option<String>,
32 pub target_wasm_gz_sha256: Option<String>,
33 pub target_installed_module_hash: Option<String>,
34 pub target_role_artifact_identity: Option<String>,
35 pub target_canonical_embedded_config_sha256: Option<String>,
36 pub root_trust_anchor: Option<String>,
37 pub authority_profile_hash: Option<String>,
38 pub required_external_action: String,
39 pub consent_requirements: Vec<ConsentRequirementV1>,
40 pub allowed_authorization_modes: Vec<ExternalUpgradeAuthorizationModeV1>,
41 pub verification_requirements: Vec<LifecycleVerificationRequirementV1>,
42 pub expires_at: Option<String>,
43 pub supersedes_proposal_id: Option<String>,
44}
45
46#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
50pub struct ExternalUpgradeReceiptV1 {
51 pub schema_version: u32,
52 pub receipt_id: String,
53 pub proposal_id: String,
54 pub proposal_digest: String,
55 pub subject: String,
56 pub canister_id: Option<String>,
57 pub role: Option<String>,
58 pub consent_state: ExternalUpgradeConsentStateV1,
59 pub reported_by: Option<String>,
60 pub observed_before_module_hash: Option<String>,
61 pub observed_after_module_hash: Option<String>,
62 pub observed_after_canonical_embedded_config_sha256: Option<String>,
63 pub verification_result: ExternalUpgradeVerificationResultV1,
64 pub verification_notes: Vec<String>,
65 pub receipt_digest: String,
66}
67
68#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
72pub struct ExternalUpgradeConsentEvidenceV1 {
73 pub schema_version: u32,
74 pub evidence_id: String,
75 pub evidence_digest: String,
76 pub proposal_id: String,
77 pub proposal_digest: String,
78 pub receipt_id: String,
79 pub receipt_digest: String,
80 pub subject: String,
81 pub canister_id: Option<String>,
82 pub role: Option<String>,
83 pub consent_state: ExternalUpgradeConsentStateV1,
84 pub reported_by: Option<String>,
85 pub consent_requirements: Vec<ConsentRequirementV1>,
86 pub allowed_authorization_modes: Vec<ExternalUpgradeAuthorizationModeV1>,
87 pub status_summary: String,
88}
89
90#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
94pub struct ExternalUpgradeConsentEvidenceRequest {
95 pub evidence_id: String,
96 pub proposal: ExternalUpgradeProposalV1,
97 pub receipt: ExternalUpgradeReceiptV1,
98}
99
100#[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)]
104pub enum ExternalUpgradeConsentStateV1 {
105 Pending,
106 Refused,
107 Delegated,
108 ExecutedExternally,
109}
110
111#[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)]
115pub enum ExternalUpgradeVerificationResultV1 {
116 Pending,
117 Refused,
118 Verified,
119 Mismatch,
120}