[pbs-devel] [PATCH proxmox-backup 01/26] api-types: add RemovableDeviceConfig
Hannes Laimer
h.laimer at proxmox.com
Tue Jul 5 15:08:09 CEST 2022
Signed-off-by: Hannes Laimer <h.laimer at proxmox.com>
---
pbs-api-types/src/lib.rs | 3 ++
pbs-api-types/src/removable_device.rs | 58 +++++++++++++++++++++++++++
2 files changed, 61 insertions(+)
create mode 100644 pbs-api-types/src/removable_device.rs
diff --git a/pbs-api-types/src/lib.rs b/pbs-api-types/src/lib.rs
index 70c9ec45..43f68e33 100644
--- a/pbs-api-types/src/lib.rs
+++ b/pbs-api-types/src/lib.rs
@@ -111,6 +111,9 @@ pub use openid::*;
mod remote;
pub use remote::*;
+mod removable_device;
+pub use removable_device::*;
+
mod tape;
pub use tape::*;
diff --git a/pbs-api-types/src/removable_device.rs b/pbs-api-types/src/removable_device.rs
new file mode 100644
index 00000000..cb1dca11
--- /dev/null
+++ b/pbs-api-types/src/removable_device.rs
@@ -0,0 +1,58 @@
+use proxmox_schema::{api, Schema, StringSchema, Updater};
+use serde::{Deserialize, Serialize};
+
+use crate::{DATASTORE_SCHEMA, PROXMOX_SAFE_ID_FORMAT, UUID_FORMAT};
+
+pub const DEVICE_NAME_SCHEMA: Schema = StringSchema::new("Removable device name.")
+ .format(&PROXMOX_SAFE_ID_FORMAT)
+ .min_length(3)
+ .max_length(32)
+ .schema();
+
+pub const DEVICE_UUID_SCHEMA: Schema = StringSchema::new("Removable device UUID.")
+ .format(&UUID_FORMAT)
+ .schema();
+
+#[api(
+ properties: {
+ name: {
+ schema: DEVICE_NAME_SCHEMA,
+ },
+ store: {
+ schema: DATASTORE_SCHEMA,
+ },
+ uuid: {
+ schema: DEVICE_UUID_SCHEMA,
+ },
+ initialized: {
+ default: false,
+ optional: true,
+ type: bool,
+ },
+ },
+ default_key: "name",
+)]
+#[derive(Serialize, Deserialize, Clone, Updater)]
+#[serde(rename_all = "kebab-case")]
+/// Information about a removable device
+pub struct RemovableDeviceConfig {
+ /// Name of the removable device
+ #[updater(skip)]
+ pub name: String,
+
+ /// The datastore the device is associated with
+ pub store: String,
+
+ /// UUID of the removeable device
+ pub uuid: String,
+
+ /// this device is initialized
+ #[serde(default)]
+ pub initialized: bool,
+}
+
+impl RemovableDeviceConfig {
+ pub fn acl_path<'a>(&'a self) -> Vec<&'a str> {
+ vec!["datastore", &self.store]
+ }
+}
--
2.30.2
More information about the pbs-devel
mailing list