Skip to main content

canic_host/deployment_truth/promotion/
request.rs

1use super::super::{
2    ArtifactPromotionPlanV1, ArtifactPromotionProvenanceReportV1, BuildMaterializationEvidenceV1,
3    BuildMaterializationInputV1, BuildMaterializationResultV1, BuildRecipeIdentityV1,
4    DeploymentExecutionPreflightV1, DeploymentPlanV1, DeploymentReceiptV1,
5    PromotionArtifactIdentityReportV1, PromotionMaterializationIdentityReportV1,
6    PromotionPlanTransformV1, PromotionReadinessV1, PromotionTargetExecutionLineageV1,
7    PromotionWasmStoreCatalogEntryV1, PromotionWasmStoreCatalogVerificationV1,
8    PromotionWasmStoreIdentityReportV1, RolePromotionInputV1, RolePromotionPolicyV1,
9    StagingReceiptV1,
10};
11
12///
13/// PromotionReadinessRequest
14///
15#[derive(Clone, Debug, Eq, PartialEq)]
16pub struct PromotionReadinessRequest {
17    pub readiness_id: String,
18    pub target_plan: DeploymentPlanV1,
19    pub inputs: Vec<RolePromotionInputV1>,
20}
21
22///
23/// PromotionReadinessWithPolicyRequest
24///
25#[derive(Clone, Debug, Eq, PartialEq)]
26pub struct PromotionReadinessWithPolicyRequest {
27    pub readiness_id: String,
28    pub target_plan: DeploymentPlanV1,
29    pub inputs: Vec<RolePromotionInputV1>,
30    pub policies: Vec<RolePromotionPolicyV1>,
31}
32
33///
34/// PromotionPlanTransformRequest
35///
36#[derive(Clone, Debug, Eq, PartialEq)]
37pub struct PromotionPlanTransformRequest {
38    pub promoted_plan_id: String,
39    pub target_plan: DeploymentPlanV1,
40    pub inputs: Vec<RolePromotionInputV1>,
41}
42
43///
44/// PromotionPlanTransformWithMaterializationRequest
45///
46#[derive(Clone, Debug, Eq, PartialEq)]
47pub struct PromotionPlanTransformWithMaterializationRequest {
48    pub promoted_plan_id: String,
49    pub target_plan: DeploymentPlanV1,
50    pub inputs: Vec<RolePromotionInputV1>,
51    pub materialization_evidence: Vec<BuildMaterializationEvidenceV1>,
52}
53
54///
55/// PromotionPlanTransformEvidenceRequest
56///
57#[derive(Clone, Debug, Eq, PartialEq)]
58pub struct PromotionPlanTransformEvidenceRequest {
59    pub evidence_id: String,
60    pub generated_at: String,
61    pub transform: PromotionPlanTransformV1,
62}
63
64///
65/// ArtifactPromotionPlanRequest
66///
67#[derive(Clone, Debug, Eq, PartialEq)]
68pub struct ArtifactPromotionPlanRequest {
69    pub plan_id: String,
70    pub generated_at: String,
71    pub readiness: PromotionReadinessV1,
72    pub artifact_identity_report: PromotionArtifactIdentityReportV1,
73    pub transform: PromotionPlanTransformV1,
74    pub target_execution_lineage: Option<PromotionTargetExecutionLineageV1>,
75}
76
77///
78/// ArtifactPromotionProvenanceReportRequest
79///
80#[derive(Clone, Debug, Eq, PartialEq)]
81pub struct ArtifactPromotionProvenanceReportRequest {
82    pub report_id: String,
83    pub artifact_promotion_plan: ArtifactPromotionPlanV1,
84    pub wasm_store_identity_report: Option<PromotionWasmStoreIdentityReportV1>,
85    pub wasm_store_catalog_verification: Option<PromotionWasmStoreCatalogVerificationV1>,
86    pub materialization_identity_report: Option<PromotionMaterializationIdentityReportV1>,
87}
88
89///
90/// ArtifactPromotionExecutionReceiptRequest
91///
92#[derive(Clone, Debug, Eq, PartialEq)]
93pub struct ArtifactPromotionExecutionReceiptRequest {
94    pub receipt_id: String,
95    pub provenance_report: ArtifactPromotionProvenanceReportV1,
96    pub deployment_receipt: DeploymentReceiptV1,
97}
98
99///
100/// PromotionTargetExecutionLineageRequest
101///
102#[derive(Clone, Debug, Eq, PartialEq)]
103pub struct PromotionTargetExecutionLineageRequest {
104    pub lineage_id: String,
105    pub generated_at: String,
106    pub transform: PromotionPlanTransformV1,
107    pub execution_preflight: DeploymentExecutionPreflightV1,
108}
109
110///
111/// PromotionArtifactIdentityReportRequest
112///
113#[derive(Clone, Debug, Eq, PartialEq)]
114pub struct PromotionArtifactIdentityReportRequest {
115    pub report_id: String,
116    pub inputs: Vec<RolePromotionInputV1>,
117}
118
119///
120/// PromotionWasmStoreIdentityReportRequest
121///
122#[derive(Clone, Debug, Eq, PartialEq)]
123pub struct PromotionWasmStoreIdentityReportRequest {
124    pub report_id: String,
125    pub staging_receipts: Vec<StagingReceiptV1>,
126}
127
128///
129/// PromotionWasmStoreCatalogVerificationRequest
130///
131#[derive(Clone, Debug, Eq, PartialEq)]
132pub struct PromotionWasmStoreCatalogVerificationRequest {
133    pub verification_id: String,
134    pub wasm_store_identity_report: PromotionWasmStoreIdentityReportV1,
135    pub catalog_entries: Vec<PromotionWasmStoreCatalogEntryV1>,
136}
137
138///
139/// BuildMaterializationEvidenceRequest
140///
141#[derive(Clone, Debug, Eq, PartialEq)]
142pub struct BuildMaterializationEvidenceRequest {
143    pub evidence_id: String,
144    pub recipe: BuildRecipeIdentityV1,
145    pub materialization_input: BuildMaterializationInputV1,
146    pub materialization_result: BuildMaterializationResultV1,
147}
148
149///
150/// PromotionMaterializationIdentityReportRequest
151///
152#[derive(Clone, Debug, Eq, PartialEq)]
153pub struct PromotionMaterializationIdentityReportRequest {
154    pub report_id: String,
155    pub evidence: Vec<BuildMaterializationEvidenceV1>,
156}
157
158///
159/// PromotionPolicyCheckRequest
160///
161#[derive(Clone, Debug, Eq, PartialEq)]
162pub struct PromotionPolicyCheckRequest {
163    pub check_id: String,
164    pub inputs: Vec<RolePromotionInputV1>,
165    pub policies: Vec<RolePromotionPolicyV1>,
166}