use canic_backup::journal::JournalResumeReport;
use serde::Serialize;
use std::path::PathBuf;
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct BackupCreateReport {
pub fleet: String,
pub network: String,
pub out: PathBuf,
pub plan_id: String,
pub run_id: String,
pub mode: String,
pub status: String,
pub scope: String,
pub targets: usize,
pub operations: usize,
pub executed_operations: usize,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct BackupListEntry {
pub dir: PathBuf,
pub backup_id: String,
pub created_at: String,
pub members: usize,
pub status: String,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
#[serde(untagged)]
pub enum BackupStatusReport {
Download(JournalResumeReport),
DryRun(BackupDryRunStatusReport),
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct BackupDryRunStatusReport {
pub layout_status: String,
pub plan_id: String,
pub run_id: String,
pub fleet: String,
pub network: String,
pub targets: usize,
pub operations: usize,
pub execution: canic_backup::execution::BackupExecutionResumeSummary,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct BackupInspectReport {
pub layout_status: String,
pub plan_id: String,
pub run_id: String,
pub fleet: String,
pub network: String,
pub scope: String,
pub targets: Vec<BackupInspectTarget>,
pub operations: Vec<BackupInspectOperation>,
pub execution: canic_backup::execution::BackupExecutionResumeSummary,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct BackupInspectTarget {
pub role: String,
pub canister_id: String,
pub parent_canister_id: String,
pub expected_module_hash: String,
pub depth: u32,
pub control_authority: String,
pub snapshot_read_authority: String,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct BackupInspectOperation {
pub sequence: usize,
pub kind: String,
pub target_canister_id: String,
pub state: String,
pub blocking_reasons: Vec<String>,
}