[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