canic_host/deployment_truth/lifecycle/error/external_upgrade/
mod.rs1use super::super::super::LifecycleVerificationRequirementV1;
2
3#[derive(Debug, Eq, thiserror::Error, PartialEq)]
7pub enum ExternalUpgradeReceiptError {
8 #[error("external upgrade receipt schema version {actual} does not match expected {expected}")]
9 SchemaVersionMismatch { expected: u32, actual: u32 },
10 #[error("external upgrade receipt field `{field}` is required")]
11 MissingRequiredField { field: &'static str },
12 #[error("external upgrade receipt field `{field}` digest is stale")]
13 DigestMismatch { field: &'static str },
14 #[error("external upgrade receipt field `{field}` does not match proposal source")]
15 SourceMismatch { field: &'static str },
16 #[error("external upgrade receipt verification result does not match observations")]
17 VerificationMismatch,
18 #[error("external upgrade receipt refused consent cannot be verified")]
19 RefusedConsentVerified,
20}
21
22#[derive(Debug, Eq, thiserror::Error, PartialEq)]
26pub enum ExternalUpgradeConsentEvidenceError {
27 #[error(
28 "external upgrade consent evidence schema version {actual} does not match expected {expected}"
29 )]
30 SchemaVersionMismatch { expected: u32, actual: u32 },
31 #[error("external upgrade consent evidence field `{field}` is required")]
32 MissingRequiredField { field: &'static str },
33 #[error("external upgrade consent evidence field `{field}` digest is stale")]
34 DigestMismatch { field: &'static str },
35 #[error("external upgrade consent evidence field `{field}` no longer matches source receipt")]
36 SourceMismatch { field: &'static str },
37 #[error(transparent)]
38 Receipt(#[from] ExternalUpgradeReceiptError),
39}
40
41#[derive(Debug, Eq, thiserror::Error, PartialEq)]
45pub enum ExternalUpgradeVerificationReportError {
46 #[error(
47 "external upgrade verification report schema version {actual} does not match expected {expected}"
48 )]
49 SchemaVersionMismatch { expected: u32, actual: u32 },
50 #[error("external upgrade verification report field `{field}` is required")]
51 MissingRequiredField { field: &'static str },
52 #[error("external upgrade verification report field `{field}` digest is stale")]
53 DigestMismatch { field: &'static str },
54 #[error("external upgrade verification report field `{field}` does not match source evidence")]
55 SourceMismatch { field: &'static str },
56 #[error(transparent)]
57 Receipt(#[from] ExternalUpgradeReceiptError),
58}
59
60#[derive(Debug, Eq, thiserror::Error, PartialEq)]
64pub enum ExternalUpgradeVerificationPolicyError {
65 #[error(
66 "external upgrade verification policy schema version {actual} does not match expected {expected}"
67 )]
68 SchemaVersionMismatch { expected: u32, actual: u32 },
69 #[error("external upgrade verification policy field `{field}` is required")]
70 MissingRequiredField { field: &'static str },
71 #[error("external upgrade verification policy field `{field}` digest is stale")]
72 DigestMismatch { field: &'static str },
73 #[error("external upgrade verification policy field `{field}` does not match proposal source")]
74 SourceMismatch { field: &'static str },
75}
76
77#[derive(Debug, Eq, thiserror::Error, PartialEq)]
81pub enum ExternalUpgradeVerificationCheckError {
82 #[error(
83 "external upgrade verification check schema version {actual} does not match expected {expected}"
84 )]
85 SchemaVersionMismatch { expected: u32, actual: u32 },
86 #[error("external upgrade verification check field `{field}` is required")]
87 MissingRequiredField { field: &'static str },
88 #[error("external upgrade verification check field `{field}` digest is stale")]
89 DigestMismatch { field: &'static str },
90 #[error("external upgrade verification check field `{field}` does not match policy source")]
91 SourceMismatch { field: &'static str },
92 #[error("external upgrade verification check contains duplicate requirement `{requirement:?}`")]
93 DuplicateRequirement {
94 requirement: LifecycleVerificationRequirementV1,
95 },
96 #[error(
97 "external upgrade verification check requirement `{requirement:?}` has invalid satisfaction state"
98 )]
99 RequirementStatusMismatch {
100 requirement: LifecycleVerificationRequirementV1,
101 },
102}
103
104#[derive(Debug, Eq, thiserror::Error, PartialEq)]
108pub enum ExternalUpgradeProposalReportError {
109 #[error(
110 "external upgrade proposal report schema version {actual} does not match expected {expected}"
111 )]
112 SchemaVersionMismatch { expected: u32, actual: u32 },
113 #[error("external upgrade proposal report field `{field}` is required")]
114 MissingRequiredField { field: &'static str },
115 #[error("external upgrade proposal report field `{field}` digest is stale")]
116 DigestMismatch { field: &'static str },
117 #[error("external upgrade proposal report field `{field}` does not match lifecycle source")]
118 SourceMismatch { field: &'static str },
119 #[error(
120 "external upgrade proposal report contains proposal for directly controlled row `{subject}`"
121 )]
122 DirectLifecycleProposal { subject: String },
123 #[error("external upgrade proposal report contains duplicate subject `{subject}`")]
124 DuplicateSubject { subject: String },
125}
126
127#[derive(Debug, Eq, thiserror::Error, PartialEq)]
131pub enum ExternalUpgradeCompletionReportError {
132 #[error(
133 "external upgrade completion report schema version {actual} does not match expected {expected}"
134 )]
135 SchemaVersionMismatch { expected: u32, actual: u32 },
136 #[error("external upgrade completion report field `{field}` is required")]
137 MissingRequiredField { field: &'static str },
138 #[error("external upgrade completion report field `{field}` digest is stale")]
139 DigestMismatch { field: &'static str },
140 #[error("external upgrade completion report field `{field}` does not match source evidence")]
141 SourceMismatch { field: &'static str },
142 #[error(transparent)]
143 Proposal(#[from] ExternalUpgradeProposalReportError),
144 #[error(transparent)]
145 ConsentEvidence(#[from] ExternalUpgradeConsentEvidenceError),
146 #[error(transparent)]
147 VerificationCheck(#[from] ExternalUpgradeVerificationCheckError),
148}