all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-backup] tape: fix 'eject-before-unload' api type
@ 2023-12-13 10:11 Dominik Csapak
  2023-12-14  7:46 ` Thomas Lamprecht
  0 siblings, 1 reply; 5+ messages in thread
From: Dominik Csapak @ 2023-12-13 10:11 UTC (permalink / raw)
  To: pbs-devel

by converting the bool into an option, otherwise having the options not
set at all will fail the unload while deserializing with
'eject-before-unload is not optional'

Also if we can automatically decide this in the future, we can now
detect if the option was explicitely set or not.

Fixes: 66402cdc ("fix #4904: tape changer: add option to eject before unload")
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 pbs-api-types/src/tape/changer.rs | 17 ++++++++++-------
 src/tape/changer/mod.rs           |  2 +-
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/pbs-api-types/src/tape/changer.rs b/pbs-api-types/src/tape/changer.rs
index e3cf27c1..9e36b12e 100644
--- a/pbs-api-types/src/tape/changer.rs
+++ b/pbs-api-types/src/tape/changer.rs
@@ -39,18 +39,21 @@ Import/Export, i.e. any media in those slots are considered to be
 .format(&ApiStringFormat::PropertyString(&SLOT_ARRAY_SCHEMA))
 .schema();
 
-fn is_false(b: &bool) -> bool {
-    !b
-}
-
-#[api]
+#[api(
+    properties: {
+        "eject-before-unload": {
+            optional: true,
+            default: false,
+        },
+    },
+)]
 #[derive(Serialize, Deserialize)]
 #[serde(rename_all = "kebab-case")]
 /// Options for Changers
 pub struct ChangerOptions {
-    #[serde(default, skip_serializing_if = "is_false")]
+    #[serde(skip_serializing_if = "Option::is_none")]
     /// if set to true, tapes are ejected manually before unloading
-    pub eject_before_unload: bool,
+    pub eject_before_unload: Option<bool>,
 }
 
 pub const CHANGER_OPTIONS_STRING_SCHEMA: Schema = StringSchema::new("Changer options")
diff --git a/src/tape/changer/mod.rs b/src/tape/changer/mod.rs
index df63f6f8..9d90e29d 100644
--- a/src/tape/changer/mod.rs
+++ b/src/tape/changer/mod.rs
@@ -433,7 +433,7 @@ impl MediaChange for MtxMediaChanger {
                 .parse_property_string(self.config.options.as_deref().unwrap_or_default())?,
         )?;
 
-        if options.eject_before_unload {
+        if options.eject_before_unload.unwrap_or(false) {
             let file = open_lto_tape_device(&self.drive.path)?;
             let mut handle = LtoTapeHandle::new(file)?;
 
-- 
2.39.2




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-12-14  8:32 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-13 10:11 [pbs-devel] [PATCH proxmox-backup] tape: fix 'eject-before-unload' api type Dominik Csapak
2023-12-14  7:46 ` Thomas Lamprecht
2023-12-14  7:52   ` Dominik Csapak
2023-12-14  8:18     ` Dietmar Maurer
2023-12-14  8:32     ` Thomas Lamprecht

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal