public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Jonas Theisen <j.theisen@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [PATCH proxmox v2 1/6] fix #7904: Add 'enable' to {sync,verify,tape,gc} job schema and datastore config
Date: Wed,  7 Oct 2026 15:43:49 +0200	[thread overview]
Message-ID: <20261007134500.323872-2-j.theisen@proxmox.com> (raw)
In-Reply-To: <20261007134500.323872-1-j.theisen@proxmox.com>

To be able to en-/disable the respective jobs this patch adds the
enable field to the job config and the needed schema.

This also adds the gc_enable parameter to the datastore config
to allow this type of job to be disabled.

Signed-off-by: Jonas Theisen <j.theisen@proxmox.com>
---
 pbs-api-types/src/datastore.rs | 12 ++++++++++++
 pbs-api-types/src/jobs.rs      | 24 ++++++++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/pbs-api-types/src/datastore.rs b/pbs-api-types/src/datastore.rs
index 93ccaf07..50658b58 100644
--- a/pbs-api-types/src/datastore.rs
+++ b/pbs-api-types/src/datastore.rs
@@ -460,6 +460,11 @@ pub const COUNTER_RESET_SCHEDULE_SCHEMA: Schema =
             optional: true,
             schema: SINGLE_LINE_COMMENT_SCHEMA,
         },
+        "gc-enable": {
+            description: "Enable scheduled execution of garbage collection.",
+            optional: true,
+            type: bool,
+        },
         "gc-schedule": {
             optional: true,
             schema: GC_SCHEDULE_SCHEMA,
@@ -524,6 +529,9 @@ pub struct DataStoreConfig {
     #[serde(skip_serializing_if = "Option::is_none")]
     pub comment: Option<String>,
 
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub gc_enable: Option<bool>,
+
     #[serde(skip_serializing_if = "Option::is_none")]
     pub gc_schedule: Option<String>,
 
@@ -605,6 +613,7 @@ impl DataStoreConfig {
             name,
             path,
             comment: None,
+            gc_enable: None,
             gc_schedule: None,
             gc_on_unmount: None,
             prune_schedule: None,
@@ -1704,6 +1713,9 @@ pub struct GarbageCollectionJobStatus {
     pub store: String,
     #[serde(flatten)]
     pub status: GarbageCollectionStatus,
+    /// Scheduled execution of the gc job
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub enable: Option<bool>,
     /// Schedule of the gc job
     #[serde(skip_serializing_if = "Option::is_none")]
     pub schedule: Option<String>,
diff --git a/pbs-api-types/src/jobs.rs b/pbs-api-types/src/jobs.rs
index 9a5d2b77..0ae93678 100644
--- a/pbs-api-types/src/jobs.rs
+++ b/pbs-api-types/src/jobs.rs
@@ -62,6 +62,12 @@ pub const VERIFICATION_SCHEDULE_SCHEMA: Schema =
         .type_text("<calendar-event>")
         .schema();
 
+pub const ENABLE_JOB_SCHEMA: Schema = BooleanSchema::new(
+    "Enables the scheduled execution of this task.",
+)
+.default(true)
+.schema();
+
 pub const REMOVE_VANISHED_BACKUPS_SCHEMA: Schema = BooleanSchema::new(
     "Delete vanished backups. This removes the local copy if the remote backup was deleted.",
 )
@@ -228,6 +234,10 @@ pub const VERIFICATION_OUTDATED_AFTER_SCHEMA: Schema =
             optional: true,
             schema: VERIFICATION_SCHEDULE_SCHEMA,
         },
+        enable: {
+            optional: true,
+            schema: ENABLE_JOB_SCHEMA,
+        },
         ns: {
             optional: true,
             schema: BACKUP_NAMESPACE_SCHEMA,
@@ -268,6 +278,8 @@ pub struct VerificationJobConfig {
     /// when to schedule this job in calendar event notation
     pub schedule: Option<String>,
     #[serde(skip_serializing_if = "Option::is_none", default)]
+    pub enable: Option<bool>,
+    #[serde(skip_serializing_if = "Option::is_none")]
     /// on which backup namespace to run the verification recursively
     pub ns: Option<BackupNamespace>,
     #[serde(skip_serializing_if = "Option::is_none", default)]
@@ -403,6 +415,10 @@ pub struct TapeBackupJobSetup {
             optional: true,
             schema: SYNC_SCHEDULE_SCHEMA,
         },
+        enable: {
+            optional: true,
+            schema: ENABLE_JOB_SCHEMA,
+        },
     }
 )]
 #[derive(Serialize, Deserialize, Clone, Updater, PartialEq)]
@@ -417,6 +433,8 @@ pub struct TapeBackupJobConfig {
     pub comment: Option<String>,
     #[serde(skip_serializing_if = "Option::is_none")]
     pub schedule: Option<String>,
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub enable: Option<bool>,
 }
 
 #[api(
@@ -642,6 +660,10 @@ pub const UNMOUNT_ON_SYNC_DONE_SCHEMA: Schema =
             optional: true,
             schema: SYNC_SCHEDULE_SCHEMA,
         },
+        enable: {
+            optional: true,
+            schema: ENABLE_JOB_SCHEMA,
+        },
         "group-filter": {
             schema: GROUP_FILTER_LIST_SCHEMA,
             optional: true,
@@ -718,6 +740,8 @@ pub struct SyncJobConfig {
     #[serde(skip_serializing_if = "Option::is_none")]
     pub schedule: Option<String>,
     #[serde(skip_serializing_if = "Option::is_none")]
+    pub enable: Option<bool>,
+    #[serde(skip_serializing_if = "Option::is_none")]
     pub group_filter: Option<Vec<GroupFilter>>,
     #[serde(flatten)]
     pub limit: RateLimitConfig,
-- 
2.47.3





  reply	other threads:[~2026-10-07 13:45 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-07 13:43 [PATCH proxmox{,-backup} v2 0/6] fix #7904: Implement Enable checkboxes for all jobs Jonas Theisen
2026-10-07 13:43 ` Jonas Theisen [this message]
2026-10-07 13:43 ` [PATCH proxmox-backup v2 2/6] ui: prune job: Align Prune Edit window to other "Enable" checkboxes Jonas Theisen
2026-10-07 13:43 ` [PATCH proxmox-backup v2 3/6] fix #7904: api: implement "enable" for {sync,verify,tape,GC} jobs Jonas Theisen
2026-10-07 13:43 ` [PATCH proxmox-backup v2 4/6] fix #7904: ui: job edit: introduce "Enable" checkbox " Jonas Theisen
2026-10-07 13:43 ` [PATCH proxmox-backup v2 5/6] ui: Improve visibility of disabled {sync,verify,tape,GC,prune} jobs on the overview page Jonas Theisen
2026-10-07 13:43 ` [PATCH proxmox-backup v2 6/6] ui: calendar-event: Remove clear button from calendar selector Jonas Theisen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261007134500.323872-2-j.theisen@proxmox.com \
    --to=j.theisen@proxmox.com \
    --cc=pbs-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal