diff --git a/Cargo.toml b/Cargo.toml index 75017c72..4410a5d7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,7 +70,7 @@ proxmox-ldap = "0.2.1" proxmox-metrics = "0.3.1" proxmox-notify = "0.4" proxmox-openid = "0.10.0" -proxmox-rest-server = { version = "0.5.1", features = [ "templates" ] } +proxmox-rest-server = { version = "0.6", features = [ "templates" ] } # some use "cli", some use "cli" and "server", pbs-config uses nothing proxmox-router = { version = "2.0.0", default-features = false } proxmox-rrd = { version = "0.2" } @@ -81,10 +81,11 @@ proxmox-serde = "0.1.1" proxmox-shared-memory = "0.3.0" proxmox-sortable-macro = "0.1.2" proxmox-subscription = { version = "0.4.2", features = [ "api-types" ] } -proxmox-sys = "0.5.7" +proxmox-sys = "0.6" proxmox-tfa = { version = "5", features = [ "api", "api-types" ] } proxmox-time = "2" proxmox-uuid = "1" +proxmox-worker-task = "0.1" # other proxmox crates pathpatterns = "0.3" @@ -236,6 +237,7 @@ proxmox-sys = { workspace = true, features = [ "timer" ] } proxmox-tfa.workspace = true proxmox-time.workspace = true proxmox-uuid.workspace = true +proxmox-worker-task.workspace = true # in their respective repo pathpatterns.workspace = true @@ -287,6 +289,7 @@ proxmox-rrd.workspace = true #proxmox-tfa = { path = "../proxmox/proxmox-tfa" } #proxmox-time = { path = "../proxmox/proxmox-time" } #proxmox-uuid = { path = "../proxmox/proxmox-uuid" } +#proxmox-worker-task = { path = "../proxmox/proxmox-worker-task" } #proxmox-acme = { path = "../proxmox/proxmox-acme" } #pathpatterns = {path = "../pathpatterns" } diff --git a/debian/control b/debian/control index a3b80fe6..81838da0 100644 --- a/debian/control +++ b/debian/control @@ -75,13 +75,14 @@ Build-Depends: bash-completion, librust-proxmox-io-1+tokio-dev (>= 1.0.1-~~), librust-proxmox-lang-1+default-dev (>= 1.1-~~), librust-proxmox-ldap-0.2+default-dev (>= 0.2.1-~~), + librust-proxmox-log-0.1+default-dev, librust-proxmox-metrics-0.3+default-dev (>= 0.3.1-~~), librust-proxmox-notify-0.4+default-dev, librust-proxmox-notify-0.4+pbs-context-dev, librust-proxmox-openid-0.10+default-dev, - librust-proxmox-rest-server-0.5+default-dev (>= 0.5.1-~~), - librust-proxmox-rest-server-0.5+rate-limited-stream-dev (>= 0.5.1-~~), - librust-proxmox-rest-server-0.5+templates-dev (>= 0.5.1-~~), + librust-proxmox-rest-server-0.6+default-dev, + librust-proxmox-rest-server-0.6+rate-limited-stream-dev, + librust-proxmox-rest-server-0.6+templates-dev, librust-proxmox-router-2+cli-dev, librust-proxmox-router-2+server-dev, librust-proxmox-rrd-0.2+default-dev, @@ -94,17 +95,18 @@ Build-Depends: bash-completion, librust-proxmox-sortable-macro-0.1+default-dev (>= 0.1.2-~~), librust-proxmox-subscription-0.4+api-types-dev (>= 0.4.2-~~), librust-proxmox-subscription-0.4+default-dev (>= 0.4.2-~~), - librust-proxmox-sys-0.5+acl-dev (>= 0.5.7-~~), - librust-proxmox-sys-0.5+crypt-dev (>= 0.5.7-~~), - librust-proxmox-sys-0.5+default-dev (>= 0.5.7-~~), - librust-proxmox-sys-0.5+logrotate-dev (>= 0.5.7-~~), - librust-proxmox-sys-0.5+timer-dev (>= 0.5.7-~~), + librust-proxmox-sys-0.6+acl-dev, + librust-proxmox-sys-0.6+crypt-dev, + librust-proxmox-sys-0.6+default-dev, + librust-proxmox-sys-0.6+logrotate-dev, + librust-proxmox-sys-0.6+timer-dev, librust-proxmox-tfa-5+api-dev, librust-proxmox-tfa-5+api-types-dev, librust-proxmox-tfa-5+default-dev, librust-proxmox-time-2+default-dev, librust-proxmox-uuid-1+default-dev, librust-proxmox-uuid-1+serde-dev, + librust-proxmox-worker-task-0.1+default-dev, librust-pxar-0.12+default-dev, librust-regex-1+default-dev (>= 1.5.5-~~), librust-rustyline-9+default-dev, diff --git a/pbs-datastore/Cargo.toml b/pbs-datastore/Cargo.toml index fcb11ac4..d8997e1d 100644 --- a/pbs-datastore/Cargo.toml +++ b/pbs-datastore/Cargo.toml @@ -28,14 +28,15 @@ pathpatterns.workspace = true pxar.workspace = true proxmox-borrow.workspace = true -proxmox-io.workspace = true proxmox-human-byte.workspace = true +proxmox-io.workspace = true proxmox-lang.workspace=true proxmox-schema = { workspace = true, features = [ "api-macro" ] } proxmox-serde = { workspace = true, features = [ "serde_json" ] } +proxmox-sys.workspace = true proxmox-time.workspace = true proxmox-uuid.workspace = true -proxmox-sys.workspace = true +proxmox-worker-task.workspace = true pbs-api-types.workspace = true pbs-buildcfg.workspace = true diff --git a/pbs-datastore/src/chunk_store.rs b/pbs-datastore/src/chunk_store.rs index 68a7ee39..dd0061ea 100644 --- a/pbs-datastore/src/chunk_store.rs +++ b/pbs-datastore/src/chunk_store.rs @@ -11,7 +11,7 @@ use proxmox_sys::fs::{create_dir, create_path, file_type_from_file_stat, CreateO use proxmox_sys::process_locker::{ ProcessLockExclusiveGuard, ProcessLockSharedGuard, ProcessLocker, }; -use proxmox_sys::WorkerTaskContext; +use proxmox_worker_task::WorkerTaskContext; use crate::file_formats::{ COMPRESSED_BLOB_MAGIC_1_0, ENCRYPTED_BLOB_MAGIC_1_0, UNCOMPRESSED_BLOB_MAGIC_1_0, diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs index 55a6ddab..46bb121f 100644 --- a/pbs-datastore/src/datastore.rs +++ b/pbs-datastore/src/datastore.rs @@ -16,7 +16,7 @@ use proxmox_sys::error::SysError; use proxmox_sys::fs::{file_read_optional_string, replace_file, CreateOptions}; use proxmox_sys::fs::{lock_dir_noblock, DirLockGuard}; use proxmox_sys::process_locker::ProcessLockSharedGuard; -use proxmox_sys::WorkerTaskContext; +use proxmox_worker_task::WorkerTaskContext; use pbs_api_types::{ Authid, BackupNamespace, BackupType, ChunkOrder, DataStoreConfig, DatastoreFSyncLevel, @@ -145,7 +145,7 @@ impl DataStore { ) -> Result, Error> { // Avoid TOCTOU between checking maintenance mode and updating active operation counter, as // we use it to decide whether it is okay to delete the datastore. - let config_lock = pbs_config::datastore::lock_config()?; + let _config_lock = pbs_config::datastore::lock_config()?; // we could use the ConfigVersionCache's generation for staleness detection, but we load // the config anyway -> just use digest, additional benefit: manual changes get detected diff --git a/src/api2/node/apt.rs b/src/api2/node/apt.rs index eb359e1b..672ef7bf 100644 --- a/src/api2/node/apt.rs +++ b/src/api2/node/apt.rs @@ -1,23 +1,21 @@ use anyhow::{bail, Error}; -use tracing::{info, warn}; +use proxmox_apt_api_types::{ + APTChangeRepositoryOptions, APTGetChangelogOptions, APTRepositoriesResult, APTRepositoryHandle, + APTUpdateInfo, APTUpdateOptions, +}; use proxmox_config_digest::ConfigDigest; +use proxmox_http::ProxyConfig; +use proxmox_rest_server::WorkerTask; use proxmox_router::{ list_subdirs_api_method, Permission, Router, RpcEnvironment, RpcEnvironmentType, SubdirMap, }; use proxmox_schema::api; use proxmox_sys::fs::{replace_file, CreateOptions}; -use proxmox_apt_api_types::{ - APTChangeRepositoryOptions, APTGetChangelogOptions, APTRepositoriesResult, APTRepositoryHandle, - APTUpdateInfo, APTUpdateOptions, -}; -use proxmox_http::ProxyConfig; - use pbs_api_types::{NODE_SCHEMA, PRIV_SYS_AUDIT, PRIV_SYS_MODIFY, UPID_SCHEMA}; use crate::config::node; -use proxmox_rest_server::WorkerTask; #[api( input: { diff --git a/src/api2/tape/backup.rs b/src/api2/tape/backup.rs index ad8417a3..cf5a0189 100644 --- a/src/api2/tape/backup.rs +++ b/src/api2/tape/backup.rs @@ -5,9 +5,10 @@ use serde_json::Value; use tracing::{info, warn}; use proxmox_lang::try_block; +use proxmox_rest_server::WorkerTask; use proxmox_router::{Permission, Router, RpcEnvironment, RpcEnvironmentType}; use proxmox_schema::api; -use proxmox_sys::WorkerTaskContext; +use proxmox_worker_task::WorkerTaskContext; use pbs_api_types::{ print_ns_and_snapshot, print_store_and_ns, Authid, MediaPoolConfig, Operation, @@ -18,7 +19,6 @@ use pbs_api_types::{ use pbs_config::CachedUserInfo; use pbs_datastore::backup_info::{BackupDir, BackupInfo}; use pbs_datastore::{DataStore, StoreProgress}; -use proxmox_rest_server::WorkerTask; use crate::tape::TapeNotificationMode; use crate::{ diff --git a/src/api2/tape/restore.rs b/src/api2/tape/restore.rs index 21cedd7d..9f5eb77c 100644 --- a/src/api2/tape/restore.rs +++ b/src/api2/tape/restore.rs @@ -10,12 +10,13 @@ use tracing::{info, warn}; use proxmox_human_byte::HumanByte; use proxmox_io::ReadExt; +use proxmox_rest_server::WorkerTask; use proxmox_router::{Permission, Router, RpcEnvironment, RpcEnvironmentType}; use proxmox_schema::{api, ApiType}; use proxmox_section_config::SectionConfigData; use proxmox_sys::fs::{replace_file, CreateOptions}; -use proxmox_sys::WorkerTaskContext; use proxmox_uuid::Uuid; +use proxmox_worker_task::WorkerTaskContext; use pbs_api_types::{ parse_ns_and_snapshot, print_ns_and_snapshot, Authid, BackupDir, BackupNamespace, CryptMode, @@ -34,7 +35,6 @@ use pbs_datastore::{DataBlob, DataStore}; use pbs_tape::{ BlockReadError, MediaContentHeader, TapeRead, PROXMOX_BACKUP_CONTENT_HEADER_MAGIC_1_0, }; -use proxmox_rest_server::WorkerTask; use crate::backup::check_ns_modification_privs; use crate::tape::TapeNotificationMode; diff --git a/src/backup/verify.rs b/src/backup/verify.rs index 44b8da6b..e5407748 100644 --- a/src/backup/verify.rs +++ b/src/backup/verify.rs @@ -1,13 +1,14 @@ -use nix::dir::Dir; use std::collections::HashSet; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::{Arc, Mutex}; use std::time::Instant; use anyhow::{bail, format_err, Error}; +use nix::dir::Dir; use tracing::{error, info}; -use proxmox_sys::WorkerTaskContext; +use proxmox_sys::fs::lock_dir_noblock_shared; +use proxmox_worker_task::WorkerTaskContext; use pbs_api_types::{ print_ns_and_snapshot, print_store_and_ns, Authid, BackupNamespace, BackupType, CryptMode, @@ -17,7 +18,6 @@ use pbs_datastore::backup_info::{BackupDir, BackupGroup, BackupInfo}; use pbs_datastore::index::IndexFile; use pbs_datastore::manifest::{archive_type, ArchiveType, BackupManifest, FileInfo}; use pbs_datastore::{DataBlob, DataStore, StoreProgress}; -use proxmox_sys::fs::lock_dir_noblock_shared; use crate::tools::parallel_handler::ParallelHandler; diff --git a/src/tape/drive/mod.rs b/src/tape/drive/mod.rs index d0f94e6c..9adec2dd 100644 --- a/src/tape/drive/mod.rs +++ b/src/tape/drive/mod.rs @@ -1,10 +1,5 @@ //! Tape drivers -mod virtual_tape; - -mod lto; -pub use lto::*; - use std::path::PathBuf; use anyhow::{bail, format_err, Error}; @@ -14,18 +9,16 @@ use serde::Deserialize; use serde_json::Value; use tracing::info; +use proxmox_io::ReadExt; +use proxmox_section_config::SectionConfigData; use proxmox_sys::fs::{ atomic_open_or_create_file, file_read_optional_string, lock_file, replace_file, CreateOptions, }; - -use proxmox_io::ReadExt; -use proxmox_section_config::SectionConfigData; -use proxmox_sys::WorkerTaskContext; use proxmox_uuid::Uuid; +use proxmox_worker_task::WorkerTaskContext; use pbs_api_types::{Fingerprint, LtoTapeDrive, VirtualTapeDrive}; use pbs_key_config::KeyConfig; - use pbs_tape::{sg_tape::TapeAlertFlags, BlockReadError, MediaContentHeader, TapeRead, TapeWrite}; use crate::tape::TapeNotificationMode; @@ -42,6 +35,11 @@ use crate::{ }, }; +mod virtual_tape; + +mod lto; +pub use lto::*; + /// Tape driver interface pub trait TapeDriver { /// Flush all data to the tape @@ -430,8 +428,8 @@ pub fn request_and_load_media( }; info!( - "Please insert media '{label_text}' into {device_type} '{device}'" - ); + "Please insert media '{label_text}' into {device_type} '{device}'" + ); send_load_media_notification( notification_mode, changer.is_some(), diff --git a/tests/worker-task-abort.rs b/tests/worker-task-abort.rs index 3109019e..41a8d74f 100644 --- a/tests/worker-task-abort.rs +++ b/tests/worker-task-abort.rs @@ -1,19 +1,13 @@ use anyhow::{bail, Error}; - -extern crate proxmox_backup; - -extern crate nix; -extern crate tokio; +use tracing::info; use proxmox_lang::try_block; +use proxmox_rest_server::{CommandSocket, WorkerTask}; use proxmox_sys::fs::CreateOptions; -use proxmox_sys::WorkerTaskContext; +use proxmox_worker_task::WorkerTaskContext; use pbs_api_types::{Authid, UPID}; -use proxmox_rest_server::{CommandSocket, WorkerTask}; -use tracing::info; - fn garbage_collection(worker: &WorkerTask) -> Result<(), Error> { info!("start garbage collection");