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-backup 08/14] fix #7904: Implement "Enable" checkbox for Tape backup jobs
Date: Wed, 30 Sep 2026 17:18:06 +0200	[thread overview]
Message-ID: <20260930152131.317493-9-j.theisen@proxmox.com> (raw)
In-Reply-To: <20260930152131.317493-1-j.theisen@proxmox.com>

To allow users to disable a tape backup job without
having to remove the schedule this patch introduces
an "Enable" checkbox.

The value is inserted into the job config and honored by
the scheduler by skipping it if enabled is set to false.

If the value is not present it is assumed the job should run
for backwards compatibility.

If the checkbox is unchecked the schedule input box in the UI is also
disabled and such is configured to not allow empty inputs anymore.

Signed-off-by: Jonas Theisen <j.theisen@proxmox.com>
---
 src/api2/tape/backup.rs          | 11 ++++++++++-
 src/bin/proxmox-backup-proxy.rs  |  8 ++++++++
 www/tape/window/TapeBackupJob.js | 30 ++++++++++++++++++++++++++++--
 3 files changed, 46 insertions(+), 3 deletions(-)

diff --git a/src/api2/tape/backup.rs b/src/api2/tape/backup.rs
index c0a4ca65b..3bf6c8bb0 100644
--- a/src/api2/tape/backup.rs
+++ b/src/api2/tape/backup.rs
@@ -83,7 +83,16 @@ pub fn list_tape_backup_jobs(
 
         let status = compute_schedule_status("tape-backup-job", &job.id, job.schedule.as_deref())?;
 
-        let next_run = status.next_run.unwrap_or(current_time);
+        let next_run: i64;
+        let enabled = match job.enable {
+            Some(c) => c,
+            None => true,
+        };
+        if !enabled {
+            next_run = 0;
+        } else {
+            next_run = status.next_run.unwrap_or(current_time);
+        }
 
         let mut next_media_label = None;
 
diff --git a/src/bin/proxmox-backup-proxy.rs b/src/bin/proxmox-backup-proxy.rs
index c974da4bd..f0fe21b90 100644
--- a/src/bin/proxmox-backup-proxy.rs
+++ b/src/bin/proxmox-backup-proxy.rs
@@ -780,6 +780,14 @@ async fn schedule_tape_backup_jobs() {
             None => continue,
         };
 
+        let job_enabled = match job_config.enable {
+            Some(c) => c,
+            None => true, //if not defined assume enabled for backwards compatibility
+        };
+        if !job_enabled {
+            continue;
+        }
+
         let worker_type = "tape-backup-job";
         let auth_id = Authid::root_auth_id().clone();
         if check_schedule(worker_type, &event_str, &job_id) {
diff --git a/www/tape/window/TapeBackupJob.js b/www/tape/window/TapeBackupJob.js
index ad03b6076..2c50470e5 100644
--- a/www/tape/window/TapeBackupJob.js
+++ b/www/tape/window/TapeBackupJob.js
@@ -46,6 +46,14 @@ Ext.define('PBS.TapeManagement.BackupJobEdit', {
         },
     },
 
+    setValues: function (values) {
+        let me = this;
+        if (!values.schedule || values.schedule === '') {
+            values.enable = false;
+        }
+        me.callParent([values]);
+    },
+
     items: {
         xtype: 'tabpanel',
         bodyPadding: 10,
@@ -112,13 +120,31 @@ Ext.define('PBS.TapeManagement.BackupJobEdit', {
                 ],
 
                 column2: [
+                    {
+                        xtype: 'proxmoxcheckbox',
+                        fieldLabel: gettext('Enable'),
+                        name: 'enable',
+                        autoEl: {
+                            tag: 'div',
+                            'data-qtip': gettext('Enable scheduled execution of this task.'),
+                        },
+                        listeners: {
+                            change: function (field, enabled) {
+                                let me = this;
+                                let view = me.up('pbsTapeBackupJobEdit');
+                                let schedule = view.down('field[name=schedule]');
+                                schedule.setDisabled(!enabled);
+                            },
+                        },
+                        uncheckedValue: false,
+                        value: true,
+                    },
                     {
                         fieldLabel: gettext('Schedule'),
                         xtype: 'pbsCalendarEvent',
                         name: 'schedule',
-                        emptyText: gettext('none (disabled)'),
+                        allowBlank: false,
                         cbind: {
-                            deleteEmpty: '{!isCreate}',
                             value: '{scheduleValue}',
                         },
                     },
-- 
2.47.3





  parent reply	other threads:[~2026-09-30 15:22 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-30 15:17 [PATCH proxmox{,-backup} 00/14] fix #7904: Implement Enable checkboxes for all jobs Jonas Theisen
2026-09-30 15:17 ` [PATCH proxmox 01/14] fix #7904: Add 'enable' to sync job schema Jonas Theisen
2026-09-30 15:18 ` [PATCH proxmox 02/14] fix #7904: Add 'enable' to verify " Jonas Theisen
2026-09-30 15:18 ` [PATCH proxmox 03/14] fix #7904: Add 'enable' to datastore config and GC " Jonas Theisen
2026-09-30 15:18 ` [PATCH proxmox 04/14] fix #7904: Add 'enable' to Tape backup " Jonas Theisen
2026-09-30 15:18 ` [PATCH proxmox-backup 05/14] fix #7904: Implement "Enable" checkbox for Sync jobs Jonas Theisen
2026-09-30 15:18 ` [PATCH proxmox-backup 06/14] fix #7904: Implement "Enable" checkbox for Verify jobs Jonas Theisen
2026-09-30 15:18 ` [PATCH proxmox-backup 07/14] fix #7904: Implement "Enable" checkbox for GC jobs Jonas Theisen
2026-09-30 15:18 ` Jonas Theisen [this message]
2026-09-30 15:18 ` [PATCH proxmox-backup 09/14] fix #7904: Improve visibility of disabled GC on the overview page Jonas Theisen
2026-09-30 15:18 ` [PATCH proxmox-backup 10/14] fix #7904: Improve visibility of disabled Verify jobs " Jonas Theisen
2026-09-30 15:18 ` [PATCH proxmox-backup 11/14] fix #7904: Improve visibility of disabled Sync " Jonas Theisen
2026-09-30 15:18 ` [PATCH proxmox-backup 12/14] fix #7904: Improve visibility of disabled Tape Backup " Jonas Theisen
2026-09-30 15:18 ` [PATCH proxmox-backup 13/14] fix #7904: Remove clear button from calendar selector Jonas Theisen
2026-09-30 15:18 ` [PATCH proxmox-backup 14/14] fix #7904: Align Prune Edit window to other "Enable" checkboxes 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=20260930152131.317493-9-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