From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 0FC551FF2C6 for ; Wed, 10 Jul 2024 09:49:33 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A6BB13EBF; Wed, 10 Jul 2024 09:49:55 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Wed, 10 Jul 2024 09:48:52 +0200 Message-Id: <20240710074856.27706-2-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240710074856.27706-1-c.ebner@proxmox.com> References: <20240710074856.27706-1-c.ebner@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.021 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy 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 Subject: [pbs-devel] [PATCH v2 proxmox-backup 1/5] datastore: move `ArchiveType` to PBS api types crate 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: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" In preparation for introducing a dedicated `BackupArchiveName` api type, allowing to set the corresponding archive type variant when parsing the archive name based on it's filename. Signed-off-by: Christian Ebner --- changes since version 1: - inlined variable name in `from_path` bail branch pbs-api-types/src/datastore.rs | 23 ++++++++++++++++++++++- pbs-client/src/backup_writer.rs | 4 ++-- pbs-datastore/src/datastore.rs | 6 +++--- pbs-datastore/src/manifest.rs | 22 +--------------------- pbs-datastore/src/snapshot_reader.rs | 4 ++-- proxmox-backup-client/src/main.rs | 10 ++++------ src/api2/backup/mod.rs | 3 +-- src/api2/reader/mod.rs | 7 +++---- src/api2/tape/restore.rs | 10 +++++----- src/backup/verify.rs | 7 ++++--- src/server/pull.rs | 10 ++++------ 11 files changed, 51 insertions(+), 55 deletions(-) diff --git a/pbs-api-types/src/datastore.rs b/pbs-api-types/src/datastore.rs index 31767417a..dfa6bb259 100644 --- a/pbs-api-types/src/datastore.rs +++ b/pbs-api-types/src/datastore.rs @@ -1,5 +1,5 @@ use std::fmt; -use std::path::PathBuf; +use std::path::{Path, PathBuf}; use anyhow::{bail, format_err, Error}; use const_format::concatcp; @@ -1569,3 +1569,24 @@ pub fn print_store_and_ns(store: &str, ns: &BackupNamespace) -> String { format!("datastore '{}', namespace '{}'", store, ns) } } + +#[derive(PartialEq, Eq)] +/// Allowed variants of backup archives to be contained in a snapshot's manifest +pub enum ArchiveType { + FixedIndex, + DynamicIndex, + Blob, +} + +impl ArchiveType { + pub fn from_path(archive_name: impl AsRef) -> Result { + let archive_name = archive_name.as_ref(); + let archive_type = match archive_name.extension().and_then(|ext| ext.to_str()) { + Some("didx") => ArchiveType::DynamicIndex, + Some("fidx") => ArchiveType::FixedIndex, + Some("blob") => ArchiveType::Blob, + _ => bail!("unknown archive type: {archive_name:?}"), + }; + Ok(archive_type) + } +} diff --git a/pbs-client/src/backup_writer.rs b/pbs-client/src/backup_writer.rs index 813c8d602..45f975d05 100644 --- a/pbs-client/src/backup_writer.rs +++ b/pbs-client/src/backup_writer.rs @@ -12,12 +12,12 @@ use tokio::io::AsyncReadExt; use tokio::sync::{mpsc, oneshot}; use tokio_stream::wrappers::ReceiverStream; -use pbs_api_types::{BackupDir, BackupNamespace}; +use pbs_api_types::{ArchiveType, BackupDir, BackupNamespace}; use pbs_datastore::data_blob::{ChunkInfo, DataBlob, DataChunkBuilder}; use pbs_datastore::dynamic_index::DynamicIndexReader; use pbs_datastore::fixed_index::FixedIndexReader; use pbs_datastore::index::IndexFile; -use pbs_datastore::manifest::{ArchiveType, BackupManifest, MANIFEST_BLOB_NAME}; +use pbs_datastore::manifest::{BackupManifest, MANIFEST_BLOB_NAME}; use pbs_datastore::{CATALOG_NAME, PROXMOX_BACKUP_PROTOCOL_ID_V1}; use pbs_tools::crypt_config::CryptConfig; diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs index 5e7d674e8..6c0f6815a 100644 --- a/pbs-datastore/src/datastore.rs +++ b/pbs-datastore/src/datastore.rs @@ -19,8 +19,9 @@ use proxmox_sys::WorkerTaskContext; use proxmox_sys::{task_log, task_warn}; use pbs_api_types::{ - Authid, BackupNamespace, BackupType, ChunkOrder, DataStoreConfig, DatastoreFSyncLevel, - DatastoreTuning, GarbageCollectionStatus, MaintenanceMode, MaintenanceType, Operation, UPID, + ArchiveType, Authid, BackupNamespace, BackupType, ChunkOrder, DataStoreConfig, + DatastoreFSyncLevel, DatastoreTuning, GarbageCollectionStatus, MaintenanceMode, + MaintenanceType, Operation, UPID, }; use crate::backup_info::{BackupDir, BackupGroup, BackupGroupDeleteStats}; @@ -29,7 +30,6 @@ use crate::dynamic_index::{DynamicIndexReader, DynamicIndexWriter}; use crate::fixed_index::{FixedIndexReader, FixedIndexWriter}; use crate::hierarchy::{ListGroups, ListGroupsType, ListNamespaces, ListNamespacesRecursive}; use crate::index::IndexFile; -use crate::manifest::ArchiveType; use crate::task_tracking::{self, update_active_operations}; use crate::DataBlob; diff --git a/pbs-datastore/src/manifest.rs b/pbs-datastore/src/manifest.rs index 347af9337..f65eb9602 100644 --- a/pbs-datastore/src/manifest.rs +++ b/pbs-datastore/src/manifest.rs @@ -5,7 +5,7 @@ use anyhow::{bail, format_err, Error}; use serde::{Deserialize, Serialize}; use serde_json::{json, Value}; -use pbs_api_types::{BackupType, CryptMode, Fingerprint}; +use pbs_api_types::{ArchiveType, BackupType, CryptMode, Fingerprint}; use pbs_tools::crypt_config::CryptConfig; pub const MANIFEST_BLOB_NAME: &str = "index.json.blob"; @@ -56,26 +56,6 @@ pub struct BackupManifest { pub signature: Option, } -#[derive(PartialEq, Eq)] -pub enum ArchiveType { - FixedIndex, - DynamicIndex, - Blob, -} - -impl ArchiveType { - pub fn from_path(archive_name: impl AsRef) -> Result { - let archive_name = archive_name.as_ref(); - let archive_type = match archive_name.extension().and_then(|ext| ext.to_str()) { - Some("didx") => ArchiveType::DynamicIndex, - Some("fidx") => ArchiveType::FixedIndex, - Some("blob") => ArchiveType::Blob, - _ => bail!("unknown archive type: {:?}", archive_name), - }; - Ok(archive_type) - } -} - //#[deprecated(note = "use ArchivType::from_path instead")] later... pub fn archive_type>(archive_name: P) -> Result { ArchiveType::from_path(archive_name) diff --git a/pbs-datastore/src/snapshot_reader.rs b/pbs-datastore/src/snapshot_reader.rs index f9c772079..432701ea0 100644 --- a/pbs-datastore/src/snapshot_reader.rs +++ b/pbs-datastore/src/snapshot_reader.rs @@ -8,13 +8,13 @@ use nix::dir::Dir; use proxmox_sys::fs::lock_dir_noblock_shared; -use pbs_api_types::{print_store_and_ns, BackupNamespace, Operation}; +use pbs_api_types::{print_store_and_ns, ArchiveType, BackupNamespace, Operation}; use crate::backup_info::BackupDir; use crate::dynamic_index::DynamicIndexReader; use crate::fixed_index::FixedIndexReader; use crate::index::IndexFile; -use crate::manifest::{ArchiveType, CLIENT_LOG_BLOB_NAME, MANIFEST_BLOB_NAME}; +use crate::manifest::{CLIENT_LOG_BLOB_NAME, MANIFEST_BLOB_NAME}; use crate::DataStore; /// Helper to access the contents of a datastore backup snapshot diff --git a/proxmox-backup-client/src/main.rs b/proxmox-backup-client/src/main.rs index 6a7d09047..3c19dc348 100644 --- a/proxmox-backup-client/src/main.rs +++ b/proxmox-backup-client/src/main.rs @@ -25,9 +25,9 @@ use pxar::accessor::aio::Accessor; use pxar::accessor::{MaybeReady, ReadAt, ReadAtOperation}; use pbs_api_types::{ - Authid, BackupDir, BackupGroup, BackupNamespace, BackupPart, BackupType, CryptMode, - Fingerprint, GroupListItem, PruneJobOptions, PruneListItem, RateLimitConfig, SnapshotListItem, - StorageStatus, BACKUP_ID_SCHEMA, BACKUP_NAMESPACE_SCHEMA, BACKUP_TIME_SCHEMA, + ArchiveType, Authid, BackupDir, BackupGroup, BackupNamespace, BackupPart, BackupType, + CryptMode, Fingerprint, GroupListItem, PruneJobOptions, PruneListItem, RateLimitConfig, + SnapshotListItem, StorageStatus, BACKUP_ID_SCHEMA, BACKUP_NAMESPACE_SCHEMA, BACKUP_TIME_SCHEMA, BACKUP_TYPE_SCHEMA, TRAFFIC_CONTROL_BURST_SCHEMA, TRAFFIC_CONTROL_RATE_SCHEMA, }; use pbs_client::catalog_shell::Shell; @@ -54,9 +54,7 @@ use pbs_datastore::chunk_store::verify_chunk_size; use pbs_datastore::dynamic_index::{BufferedDynamicReader, DynamicIndexReader, LocalDynamicReadAt}; use pbs_datastore::fixed_index::FixedIndexReader; use pbs_datastore::index::IndexFile; -use pbs_datastore::manifest::{ - ArchiveType, BackupManifest, ENCRYPTED_KEY_BLOB_NAME, MANIFEST_BLOB_NAME, -}; +use pbs_datastore::manifest::{BackupManifest, ENCRYPTED_KEY_BLOB_NAME, MANIFEST_BLOB_NAME}; use pbs_datastore::read_chunk::AsyncReadChunk; use pbs_datastore::CATALOG_NAME; use pbs_key_config::{decrypt_key, rsa_encrypt_key_config, KeyConfig}; diff --git a/src/api2/backup/mod.rs b/src/api2/backup/mod.rs index 915fb2a84..8597a6398 100644 --- a/src/api2/backup/mod.rs +++ b/src/api2/backup/mod.rs @@ -17,13 +17,12 @@ use proxmox_schema::*; use proxmox_sortable_macro::sortable; use pbs_api_types::{ - Authid, BackupNamespace, BackupType, Operation, SnapshotVerifyState, VerifyState, + ArchiveType, Authid, BackupNamespace, BackupType, Operation, SnapshotVerifyState, VerifyState, BACKUP_ARCHIVE_NAME_SCHEMA, BACKUP_ID_SCHEMA, BACKUP_NAMESPACE_SCHEMA, BACKUP_TIME_SCHEMA, BACKUP_TYPE_SCHEMA, CHUNK_DIGEST_SCHEMA, DATASTORE_SCHEMA, PRIV_DATASTORE_BACKUP, }; use pbs_config::CachedUserInfo; use pbs_datastore::index::IndexFile; -use pbs_datastore::manifest::ArchiveType; use pbs_datastore::{DataStore, PROXMOX_BACKUP_PROTOCOL_ID_V1}; use pbs_tools::json::{required_array_param, required_integer_param, required_string_param}; use proxmox_rest_server::{H2Service, WorkerTask}; diff --git a/src/api2/reader/mod.rs b/src/api2/reader/mod.rs index 23492f64c..a258bf983 100644 --- a/src/api2/reader/mod.rs +++ b/src/api2/reader/mod.rs @@ -17,13 +17,12 @@ use proxmox_schema::{BooleanSchema, ObjectSchema}; use proxmox_sortable_macro::sortable; use pbs_api_types::{ - Authid, Operation, BACKUP_ARCHIVE_NAME_SCHEMA, BACKUP_ID_SCHEMA, BACKUP_NAMESPACE_SCHEMA, - BACKUP_TIME_SCHEMA, BACKUP_TYPE_SCHEMA, CHUNK_DIGEST_SCHEMA, DATASTORE_SCHEMA, - PRIV_DATASTORE_BACKUP, PRIV_DATASTORE_READ, + ArchiveType, Authid, Operation, BACKUP_ARCHIVE_NAME_SCHEMA, BACKUP_ID_SCHEMA, + BACKUP_NAMESPACE_SCHEMA, BACKUP_TIME_SCHEMA, BACKUP_TYPE_SCHEMA, CHUNK_DIGEST_SCHEMA, + DATASTORE_SCHEMA, PRIV_DATASTORE_BACKUP, PRIV_DATASTORE_READ, }; use pbs_config::CachedUserInfo; use pbs_datastore::index::IndexFile; -use pbs_datastore::manifest::ArchiveType; use pbs_datastore::{DataStore, PROXMOX_BACKUP_READER_PROTOCOL_ID_V1}; use pbs_tools::json::required_string_param; use proxmox_rest_server::{H2Service, WorkerTask}; diff --git a/src/api2/tape/restore.rs b/src/api2/tape/restore.rs index 79200d1b9..d297ff4bf 100644 --- a/src/api2/tape/restore.rs +++ b/src/api2/tape/restore.rs @@ -17,10 +17,10 @@ use proxmox_sys::{task_log, task_warn, WorkerTaskContext}; use proxmox_uuid::Uuid; use pbs_api_types::{ - parse_ns_and_snapshot, print_ns_and_snapshot, Authid, BackupDir, BackupNamespace, CryptMode, - NotificationMode, Operation, TapeRestoreNamespace, Userid, DATASTORE_MAP_ARRAY_SCHEMA, - DATASTORE_MAP_LIST_SCHEMA, DRIVE_NAME_SCHEMA, MAX_NAMESPACE_DEPTH, PRIV_DATASTORE_BACKUP, - PRIV_DATASTORE_MODIFY, PRIV_TAPE_READ, TAPE_RESTORE_NAMESPACE_SCHEMA, + parse_ns_and_snapshot, print_ns_and_snapshot, ArchiveType, Authid, BackupDir, BackupNamespace, + CryptMode, NotificationMode, Operation, TapeRestoreNamespace, Userid, + DATASTORE_MAP_ARRAY_SCHEMA, DATASTORE_MAP_LIST_SCHEMA, DRIVE_NAME_SCHEMA, MAX_NAMESPACE_DEPTH, + PRIV_DATASTORE_BACKUP, PRIV_DATASTORE_MODIFY, PRIV_TAPE_READ, TAPE_RESTORE_NAMESPACE_SCHEMA, TAPE_RESTORE_SNAPSHOT_SCHEMA, UPID_SCHEMA, }; use pbs_client::tools::handle_root_with_optional_format_version_prelude; @@ -28,7 +28,7 @@ use pbs_config::CachedUserInfo; use pbs_datastore::dynamic_index::DynamicIndexReader; use pbs_datastore::fixed_index::FixedIndexReader; use pbs_datastore::index::IndexFile; -use pbs_datastore::manifest::{ArchiveType, BackupManifest, MANIFEST_BLOB_NAME}; +use pbs_datastore::manifest::{BackupManifest, MANIFEST_BLOB_NAME}; use pbs_datastore::{DataBlob, DataStore}; use pbs_tape::{ BlockReadError, MediaContentHeader, TapeRead, PROXMOX_BACKUP_CONTENT_HEADER_MAGIC_1_0, diff --git a/src/backup/verify.rs b/src/backup/verify.rs index 8dde7dacc..feecd069d 100644 --- a/src/backup/verify.rs +++ b/src/backup/verify.rs @@ -9,12 +9,13 @@ use anyhow::{bail, format_err, Error}; use proxmox_sys::{task_log, WorkerTaskContext}; use pbs_api_types::{ - print_ns_and_snapshot, print_store_and_ns, Authid, BackupNamespace, BackupType, CryptMode, - SnapshotVerifyState, VerifyState, PRIV_DATASTORE_BACKUP, PRIV_DATASTORE_VERIFY, UPID, + print_ns_and_snapshot, print_store_and_ns, ArchiveType, Authid, BackupNamespace, BackupType, + CryptMode, SnapshotVerifyState, VerifyState, PRIV_DATASTORE_BACKUP, PRIV_DATASTORE_VERIFY, + UPID, }; use pbs_datastore::backup_info::{BackupDir, BackupGroup, BackupInfo}; use pbs_datastore::index::IndexFile; -use pbs_datastore::manifest::{ArchiveType, BackupManifest, FileInfo}; +use pbs_datastore::manifest::{BackupManifest, FileInfo}; use pbs_datastore::{DataBlob, DataStore, StoreProgress}; use proxmox_sys::fs::lock_dir_noblock_shared; diff --git a/src/server/pull.rs b/src/server/pull.rs index d144e2f2d..2ef916c3c 100644 --- a/src/server/pull.rs +++ b/src/server/pull.rs @@ -16,9 +16,9 @@ use proxmox_sys::{task_log, task_warn}; use serde_json::json; use pbs_api_types::{ - print_store_and_ns, Authid, BackupDir, BackupGroup, BackupNamespace, CryptMode, GroupFilter, - GroupListItem, Operation, RateLimitConfig, Remote, SnapshotListItem, MAX_NAMESPACE_DEPTH, - PRIV_DATASTORE_AUDIT, PRIV_DATASTORE_BACKUP, PRIV_DATASTORE_READ, + print_store_and_ns, ArchiveType, Authid, BackupDir, BackupGroup, BackupNamespace, CryptMode, + GroupFilter, GroupListItem, Operation, RateLimitConfig, Remote, SnapshotListItem, + MAX_NAMESPACE_DEPTH, PRIV_DATASTORE_AUDIT, PRIV_DATASTORE_BACKUP, PRIV_DATASTORE_READ, }; use pbs_client::{BackupReader, BackupRepository, HttpClient, RemoteChunkReader}; use pbs_config::CachedUserInfo; @@ -26,9 +26,7 @@ use pbs_datastore::data_blob::DataBlob; use pbs_datastore::dynamic_index::DynamicIndexReader; use pbs_datastore::fixed_index::FixedIndexReader; use pbs_datastore::index::IndexFile; -use pbs_datastore::manifest::{ - ArchiveType, BackupManifest, FileInfo, CLIENT_LOG_BLOB_NAME, MANIFEST_BLOB_NAME, -}; +use pbs_datastore::manifest::{BackupManifest, FileInfo, CLIENT_LOG_BLOB_NAME, MANIFEST_BLOB_NAME}; use pbs_datastore::read_chunk::AsyncReadChunk; use pbs_datastore::{ check_backup_owner, DataStore, ListNamespacesRecursive, LocalChunkReader, StoreProgress, -- 2.39.2 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel