diff --git a/pbs-api-types/src/maintenance.rs b/pbs-api-types/src/maintenance.rs index e46ba90a..1b03ca94 100644 --- a/pbs-api-types/src/maintenance.rs +++ b/pbs-api-types/src/maintenance.rs @@ -46,6 +46,8 @@ pub enum MaintenanceType { ReadOnly, /// Neither read nor write operations are allowed on the datastore. Offline, + /// The datastore is being deleted. + Delete, } serde_plain::derive_display_from_serialize!(MaintenanceType); serde_plain::derive_fromstr_from_deserialize!(MaintenanceType); @@ -76,6 +78,10 @@ pub struct MaintenanceMode { impl MaintenanceMode { pub fn check(&self, operation: Option) -> Result<(), Error> { + if self.ty == MaintenanceType::Delete { + bail!("datastore is being deleted"); + } + let message = percent_encoding::percent_decode_str(self.message.as_deref().unwrap_or("")) .decode_utf8() .unwrap_or(Cow::Borrowed(""));