all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-backup] tape restore: show required tape list on single snapshot restore
@ 2023-05-05 14:38 Dominik Csapak
  2023-05-09  8:13 ` [pbs-devel] applied " Dietmar Maurer
  0 siblings, 1 reply; 2+ messages in thread
From: Dominik Csapak @ 2023-05-05 14:38 UTC (permalink / raw)
  To: pbs-devel

like we do on a full restore, for that refactor the functionality into
'log_required_tapes' to be reused across the workers

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 src/api2/tape/restore.rs | 32 ++++++++++++++++++++++++++------
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/src/api2/tape/restore.rs b/src/api2/tape/restore.rs
index 43d34473..7b4fee9c 100644
--- a/src/api2/tape/restore.rs
+++ b/src/api2/tape/restore.rs
@@ -495,12 +495,11 @@ fn restore_full_worker(
         .join(", ");
     task_log!(worker, "Datastore(s): {datastore_list}",);
     task_log!(worker, "Drive: {drive_name}");
-    let required_media = media_id_list
-        .iter()
-        .map(|media_id| media_id.label.label_text.as_str())
-        .collect::<Vec<&str>>()
-        .join(";");
-    task_log!(worker, "Required media list: {required_media}",);
+    log_required_tapes(
+        &worker,
+        &inventory,
+        media_id_list.iter().map(|id| &id.label.uuid),
+    );
 
     let mut datastore_locks = Vec::new();
     for (target, _) in used_datastores.values() {
@@ -607,6 +606,25 @@ fn check_snapshot_restorable(
     Ok(can_restore_some)
 }
 
+fn log_required_tapes<'a>(
+    worker: &WorkerTask,
+    inventory: &Inventory,
+    list: impl Iterator<Item = &'a Uuid>,
+) {
+    let mut tape_list = list
+        .map(|uuid| {
+            inventory
+                .lookup_media(uuid)
+                .unwrap()
+                .label
+                .label_text
+                .as_str()
+        })
+        .collect::<Vec<&str>>();
+    tape_list.sort_unstable();
+    task_log!(worker, "Required media list: {}", tape_list.join(";"));
+}
+
 #[allow(clippy::too_many_arguments)]
 fn restore_list_worker(
     worker: Arc<WorkerTask>,
@@ -751,6 +769,7 @@ fn restore_list_worker(
         }
 
         task_log!(worker, "Phase 1: temporarily restore snapshots to temp dir");
+        log_required_tapes(&worker, &inventory, snapshot_file_hash.keys());
         let mut datastore_chunk_map: HashMap<String, HashSet<[u8; 32]>> = HashMap::new();
         let mut tmp_paths = Vec::new();
         for (media_uuid, file_list) in snapshot_file_hash.iter_mut() {
@@ -804,6 +823,7 @@ fn restore_list_worker(
 
         if !media_file_chunk_map.is_empty() {
             task_log!(worker, "Phase 2: restore chunks to datastores");
+            log_required_tapes(&worker, &inventory, media_file_chunk_map.keys());
         } else {
             task_log!(worker, "All chunks are already present, skip phase 2...");
         }
-- 
2.30.2





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

* [pbs-devel] applied [PATCH proxmox-backup] tape restore: show required tape list on single snapshot restore
  2023-05-05 14:38 [pbs-devel] [PATCH proxmox-backup] tape restore: show required tape list on single snapshot restore Dominik Csapak
@ 2023-05-09  8:13 ` Dietmar Maurer
  0 siblings, 0 replies; 2+ messages in thread
From: Dietmar Maurer @ 2023-05-09  8:13 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Dominik Csapak

applied




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

end of thread, other threads:[~2023-05-09  8:13 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-05 14:38 [pbs-devel] [PATCH proxmox-backup] tape restore: show required tape list on single snapshot restore Dominik Csapak
2023-05-09  8:13 ` [pbs-devel] applied " Dietmar Maurer

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