From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 650307A8C3 for ; Tue, 5 Jul 2022 15:08:50 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 0797A2F3E5 for ; Tue, 5 Jul 2022 15:08:50 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Tue, 5 Jul 2022 15:08:47 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 6CDFA43CB3 for ; Tue, 5 Jul 2022 15:08:47 +0200 (CEST) From: Hannes Laimer To: pbs-devel@lists.proxmox.com Date: Tue, 5 Jul 2022 13:08:09 +0000 Message-Id: <20220705130834.14285-4-h.laimer@proxmox.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220705130834.14285-1-h.laimer@proxmox.com> References: <20220705130834.14285-1-h.laimer@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.038 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [self.store, lib.rs] Subject: [pbs-devel] [PATCH proxmox-backup 01/26] api-types: add RemovableDeviceConfig X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jul 2022 13:08:50 -0000 Signed-off-by: Hannes Laimer --- 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