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 0DD16B39A0 for ; Wed, 29 Nov 2023 12:37:26 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E3B08559E for ; Wed, 29 Nov 2023 12:36:55 +0100 (CET) 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 ; Wed, 29 Nov 2023 12:36:52 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 219C140587 for ; Wed, 29 Nov 2023 12:36:52 +0100 (CET) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Wed, 29 Nov 2023 12:36:36 +0100 Message-Id: <20231129113637.204053-2-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231129113637.204053-1-c.ebner@proxmox.com> References: <20231129113637.204053-1-c.ebner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.050 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 T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pbs-devel] [PATCH proxmox-backup 1/2] api: create default prune job on datastore creation 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: Wed, 29 Nov 2023 11:37:26 -0000 Create a default prune job when a datastore is created as part of a disk/zpool creation transaction via e.g.: `proxmox-backup-manager disk fs create --disk --add-datastore true` Signed-off-by: Christian Ebner --- Currently depends on this patch to apply: https://lists.proxmox.com/pipermail/pbs-devel/2023-November/007336.html I can send a v2 without this interdependecy if requested. src/api2/node/disks/directory.rs | 25 +++++++++++++++++++++++-- src/api2/node/disks/zfs.rs | 27 ++++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/src/api2/node/disks/directory.rs b/src/api2/node/disks/directory.rs index af2e1a14..89260b8e 100644 --- a/src/api2/node/disks/directory.rs +++ b/src/api2/node/disks/directory.rs @@ -6,10 +6,11 @@ use proxmox_router::{Permission, Router, RpcEnvironment, RpcEnvironmentType}; use proxmox_schema::api; use proxmox_section_config::SectionConfigData; use proxmox_sys::task_log; +use proxmox_uuid::Uuid; use pbs_api_types::{ - DataStoreConfig, BLOCKDEVICE_NAME_SCHEMA, STORAGE_NAME_SCHEMA, NODE_SCHEMA, PRIV_SYS_AUDIT, - PRIV_SYS_MODIFY, UPID_SCHEMA, + DataStoreConfig, KeepOptions, PruneJobConfig, PruneJobOptions, BLOCKDEVICE_NAME_SCHEMA, + NODE_SCHEMA, PRIV_SYS_AUDIT, PRIV_SYS_MODIFY, STORAGE_NAME_SCHEMA, UPID_SCHEMA, }; use crate::tools::disks::{ @@ -210,6 +211,26 @@ pub fn create_datastore_disk( datastore, Some(&worker), )?; + + crate::api2::config::prune::do_create_prune_job( + PruneJobConfig { + id: { + let mut id = format!("default-{}-{}", name, Uuid::generate()); + id.truncate(32); + id + }, + store: name.clone(), + comment: None, + disable: false, + schedule: String::from("daily"), + options: PruneJobOptions { + keep: KeepOptions::default(), + max_depth: None, + ns: None, + }, + }, + Some(&worker), + )?; } Ok(()) diff --git a/src/api2/node/disks/zfs.rs b/src/api2/node/disks/zfs.rs index e225b9a7..7bc46986 100644 --- a/src/api2/node/disks/zfs.rs +++ b/src/api2/node/disks/zfs.rs @@ -4,11 +4,12 @@ use serde_json::{json, Value}; use proxmox_router::{Permission, Router, RpcEnvironment, RpcEnvironmentType}; use proxmox_schema::api; use proxmox_sys::{task_error, task_log}; +use proxmox_uuid::Uuid; use pbs_api_types::{ - DataStoreConfig, ZfsCompressionType, ZfsRaidLevel, ZpoolListItem, STORAGE_NAME_SCHEMA, - DISK_ARRAY_SCHEMA, DISK_LIST_SCHEMA, NODE_SCHEMA, PRIV_SYS_AUDIT, PRIV_SYS_MODIFY, UPID_SCHEMA, - ZFS_ASHIFT_SCHEMA, ZPOOL_NAME_SCHEMA, + DataStoreConfig, KeepOptions, PruneJobConfig, PruneJobOptions, ZfsCompressionType, + ZfsRaidLevel, ZpoolListItem, DISK_ARRAY_SCHEMA, DISK_LIST_SCHEMA, NODE_SCHEMA, PRIV_SYS_AUDIT, + PRIV_SYS_MODIFY, STORAGE_NAME_SCHEMA, UPID_SCHEMA, ZFS_ASHIFT_SCHEMA, ZPOOL_NAME_SCHEMA, }; use crate::tools::disks::{ @@ -325,6 +326,26 @@ pub fn create_zpool( datastore, Some(&worker), )?; + + crate::api2::config::prune::do_create_prune_job( + PruneJobConfig { + id: { + let mut id = format!("default-{}-{}", name, Uuid::generate()); + id.truncate(32); + id + }, + store: name.clone(), + comment: None, + disable: false, + schedule: String::from("daily"), + options: PruneJobOptions { + keep: KeepOptions::default(), + max_depth: None, + ns: None, + }, + }, + Some(&worker), + )?; } Ok(()) -- 2.39.2