Skip to main content

canic_host/deployment_truth/model/comparison/
mod.rs

1use super::{DeploymentIdentityV1, SafetyFindingV1, SafetySeverityV1, SafetyStatusV1};
2use serde::{Deserialize, Serialize};
3
4///
5/// DeploymentComparisonReportV1
6///
7#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
8pub struct DeploymentComparisonReportV1 {
9    pub schema_version: u32,
10    pub report_id: String,
11    pub report_digest: String,
12    pub compared_at: String,
13    pub left: DeploymentComparisonTargetV1,
14    pub right: DeploymentComparisonTargetV1,
15    pub status: SafetyStatusV1,
16    pub identity_diff: Vec<DeploymentComparisonDiffV1>,
17    pub artifact_diff: Vec<DeploymentComparisonDiffV1>,
18    pub module_hash_diff: Vec<DeploymentComparisonDiffV1>,
19    pub embedded_config_diff: Vec<DeploymentComparisonDiffV1>,
20    pub authority_diff: Vec<DeploymentComparisonDiffV1>,
21    pub pool_diff: Vec<DeploymentComparisonDiffV1>,
22    pub verifier_readiness_diff: Vec<DeploymentComparisonDiffV1>,
23    pub external_lifecycle_diff: Vec<DeploymentComparisonDiffV1>,
24    pub hard_failures: Vec<SafetyFindingV1>,
25    pub warnings: Vec<SafetyFindingV1>,
26    pub next_actions: Vec<String>,
27}
28
29///
30/// DeploymentComparisonTargetV1
31///
32#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
33pub struct DeploymentComparisonTargetV1 {
34    pub label: String,
35    pub check_id: String,
36    pub check_digest: String,
37    pub plan_id: String,
38    pub plan_digest: String,
39    pub inventory_id: String,
40    pub inventory_digest: String,
41    pub deployment_identity: DeploymentIdentityV1,
42}
43
44///
45/// DeploymentComparisonDiffV1
46///
47#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
48pub struct DeploymentComparisonDiffV1 {
49    pub category: DeploymentComparisonCategoryV1,
50    pub subject: String,
51    pub left: Option<String>,
52    pub right: Option<String>,
53    pub severity: SafetySeverityV1,
54    pub message: String,
55}
56
57///
58/// DeploymentComparisonCategoryV1
59///
60#[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)]
61pub enum DeploymentComparisonCategoryV1 {
62    Identity,
63    TrustDomain,
64    Artifact,
65    ModuleHash,
66    EmbeddedConfig,
67    Authority,
68    Pool,
69    VerifierReadiness,
70    ExternalLifecycle,
71}