use crate::fleet_ensure::{
model::attempt_recovery::AttemptRecoveryReviewRecord,
ops::{
self, EnsurePaths,
capacity_import::journal::{CapacityImportJournalError, CapacityImportJournalStore},
},
};
use std::path::Path;
pub fn review(
workspace: &Path,
environment: &str,
fleet: &str,
) -> Result<AttemptRecoveryReviewRecord, CapacityImportJournalError> {
let paths = paths(workspace, environment, fleet)?;
let _owner = CapacityImportJournalStore::open(&paths)?;
ops::attempt_recovery::review(&paths, environment, fleet)
}
pub fn apply(
workspace: &Path,
environment: &str,
fleet: &str,
digest: [u8; 32],
) -> Result<AttemptRecoveryReviewRecord, CapacityImportJournalError> {
let paths = paths(workspace, environment, fleet)?;
let _owner = CapacityImportJournalStore::open(&paths)?;
ops::attempt_recovery::apply(&paths, environment, fleet, digest)
}
fn paths(
workspace: &Path,
environment: &str,
fleet: &str,
) -> Result<EnsurePaths, CapacityImportJournalError> {
crate::fleet_ensure::policy::validate_path_labels(environment, fleet)
.map_err(|_| CapacityImportJournalError::RequestInvalid)?;
Ok(EnsurePaths::under(
&workspace.canonicalize()?,
environment,
fleet,
))
}