use super::super::{CanisterControlClassV1, DeploymentCheckV1};
use super::authority::LifecycleVerificationRequirementV1;
use super::proposal::{
ExternalUpgradeProposalV1, ExternalUpgradeReceiptV1, ExternalUpgradeVerificationResultV1,
};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ExternalUpgradeVerificationReportV1 {
pub schema_version: u32,
pub report_id: String,
pub report_digest: String,
pub proposal_id: String,
pub proposal_digest: String,
pub receipt_id: String,
pub receipt_digest: String,
pub subject: String,
pub canister_id: Option<String>,
pub role: Option<String>,
pub verification_result: ExternalUpgradeVerificationResultV1,
pub verification_notes: Vec<String>,
pub live_inventory_required: bool,
pub status_summary: String,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ExternalUpgradeVerificationReportRequest {
pub report_id: String,
pub proposal: ExternalUpgradeProposalV1,
pub receipt: ExternalUpgradeReceiptV1,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ExternalUpgradeVerificationPolicyV1 {
pub schema_version: u32,
pub policy_id: String,
pub policy_digest: String,
pub proposal_id: String,
pub proposal_digest: String,
pub deployment_plan_id: String,
pub deployment_plan_digest: String,
pub subject: String,
pub canister_id: Option<String>,
pub role: Option<String>,
pub required_verification: Vec<LifecycleVerificationRequirementV1>,
pub verification_requirements: Vec<ExternalUpgradeVerificationPolicyRequirementV1>,
pub max_observation_age_seconds: Option<u64>,
pub status_summary: String,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ExternalUpgradeVerificationPolicyRequirementV1 {
pub requirement: LifecycleVerificationRequirementV1,
pub status: ExternalUpgradeVerificationRequirementStatusV1,
pub expected_value: Option<String>,
}
#[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)]
pub enum ExternalUpgradeVerificationRequirementStatusV1 {
Required,
NotRequired,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ExternalUpgradeVerificationPolicyRequest {
pub policy_id: String,
pub proposal: ExternalUpgradeProposalV1,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ExternalUpgradeVerificationObservationV1 {
pub source: ExternalVerificationObservationSourceV1,
pub deployment_check_id: Option<String>,
pub deployment_check_digest: Option<String>,
pub inventory_id: Option<String>,
pub observed_at: Option<String>,
pub live_inventory_observed: bool,
pub controller_observation_present: bool,
pub observed_control_class: Option<CanisterControlClassV1>,
pub observed_module_hash: Option<String>,
pub observed_canonical_embedded_config_sha256: Option<String>,
pub protected_call_ready: Option<bool>,
}
#[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)]
pub enum ExternalVerificationObservationSourceV1 {
SuppliedObservation,
DeploymentTruthInventory,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ExternalUpgradeVerificationCheckV1 {
pub schema_version: u32,
pub check_id: String,
pub check_digest: String,
pub policy_id: String,
pub policy_digest: String,
pub proposal_id: String,
pub proposal_digest: String,
pub subject: String,
pub canister_id: Option<String>,
pub role: Option<String>,
pub observation: ExternalUpgradeVerificationObservationV1,
pub requirement_results: Vec<ExternalUpgradeVerificationCheckRequirementV1>,
pub verification_result: ExternalUpgradeVerificationResultV1,
pub status_summary: String,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ExternalUpgradeVerificationCheckRequirementV1 {
pub requirement: LifecycleVerificationRequirementV1,
pub status: ExternalUpgradeVerificationRequirementStatusV1,
pub expected_value: Option<String>,
pub observed_value: Option<String>,
pub satisfied: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ExternalUpgradeVerificationCheckRequest {
pub check_id: String,
pub policy: ExternalUpgradeVerificationPolicyV1,
pub observation: Option<ExternalUpgradeVerificationObservationV1>,
pub deployment_check: Option<DeploymentCheckV1>,
}