From: Maximiliano Sandoval <m.sandoval@proxmox.com>
To: Jonas Theisen <j.theisen@proxmox.com>
Cc: pbs-devel@lists.proxmox.com
Subject: Re: [PATCH proxmox v2 1/6] fix #7904: Add 'enable' to {sync,verify,tape,gc} job schema and datastore config
Date: Thu, 08 Oct 2026 09:58:14 +0200 [thread overview]
Message-ID: <s8old88mxnt.fsf@toolbox> (raw)
In-Reply-To: <20261007134500.323872-2-j.theisen@proxmox.com> (Jonas Theisen's message of "Wed, 7 Oct 2026 15:43:49 +0200")
Jonas Theisen <j.theisen@proxmox.com> writes:
> 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>,
> +
Here you can use directly a bool and use something like whats in
pbs-api-types' metrics.rs:
#[serde(default = "return_true", skip_serializing_if = "is_true")]
#[updater(serde(skip_serializing_if = "Option::is_none"))]
pub gc_enable: bool,
This way you don't have to do the unwrap_or(true) later and have the
default defined in multiple places.
> #[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,
--
Maximiliano
next prev parent reply other threads:[~2026-10-08 7:58 UTC|newest]
Thread overview: 11+ 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 ` [PATCH proxmox v2 1/6] fix #7904: Add 'enable' to {sync,verify,tape,gc} job schema and datastore config Jonas Theisen
2026-10-08 7:58 ` Maximiliano Sandoval [this message]
2026-10-08 9:37 ` Christian Ebner
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-08 9:37 ` Christian Ebner
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
2026-10-09 14:57 ` [PATCH proxmox{,-backup} v2 0/6] fix #7904: Implement Enable checkboxes for all jobs 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=s8old88mxnt.fsf@toolbox \
--to=m.sandoval@proxmox.com \
--cc=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