[pve-devel] [PATCH manager 1/2] vzdump jobs: make job ID a standard option

Fabian Grünbichler f.gruenbichler at proxmox.com
Fri Sep 20 11:05:05 CEST 2024


and put it into PVE::VZDump because there is a cycle between

PVE::Jobs::VZDump, PVE::API2::VZDump and PVE::API2::Backups

that prevents any of those containing it for now.

Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
---
 PVE/API2/Backup.pm | 18 ++++++------------
 PVE/VZDump.pm      | 10 ++++++++++
 2 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/PVE/API2/Backup.pm b/PVE/API2/Backup.pm
index 48598b8f4..f37e23931 100644
--- a/PVE/API2/Backup.pm
+++ b/PVE/API2/Backup.pm
@@ -10,7 +10,7 @@ use PVE::Tools qw(extract_param);
 use PVE::Cluster qw(cfs_lock_file cfs_read_file cfs_write_file);
 use PVE::RESTHandler;
 use PVE::RPCEnvironment;
-use PVE::JSONSchema;
+use PVE::JSONSchema qw(get_standard_option);
 use PVE::Storage;
 use PVE::Exception qw(raise_param_exc);
 use PVE::VZDump;
@@ -34,12 +34,6 @@ sub verify_day_of_week {
     die "invalid day '$value'\n";
 }
 
-my $vzdump_job_id_prop = {
-    type => 'string',
-    description => "The job ID.",
-    maxLength => 50
-};
-
 # NOTE: also used by the vzdump API call.
 sub assert_param_permission_common {
     my ($rpcenv, $user, $param, $is_delete) = @_;
@@ -142,7 +136,7 @@ __PACKAGE__->register_method({
 	items => {
 	    type => "object",
 	    properties => {
-		id => $vzdump_job_id_prop
+		id => get_standard_option('pve-backup-jobid'),
 	    },
 	},
 	links => [ { rel => 'child', href => "{id}" } ],
@@ -298,7 +292,7 @@ __PACKAGE__->register_method({
     parameters => {
     	additionalProperties => 0,
 	properties => {
-	    id => $vzdump_job_id_prop
+	    id => get_standard_option('pve-backup-jobid'),
 	},
     },
     returns => {
@@ -346,7 +340,7 @@ __PACKAGE__->register_method({
     parameters => {
     	additionalProperties => 0,
 	properties => {
-	    id => $vzdump_job_id_prop
+	    id => get_standard_option('pve-backup-jobid'),
 	},
     },
     returns => { type => 'null' },
@@ -412,7 +406,7 @@ __PACKAGE__->register_method({
     parameters => {
     	additionalProperties => 0,
 	properties => PVE::VZDump::Common::json_config_properties({
-	    id => $vzdump_job_id_prop,
+	    id => get_standard_option('pve-backup-jobid'),
 	    schedule => {
 		description => "Backup schedule. The format is a subset of `systemd` calendar events.",
 		type => 'string', format => 'pve-calendar-event',
@@ -570,7 +564,7 @@ __PACKAGE__->register_method({
     parameters => {
 	additionalProperties => 0,
 	properties => {
-	    id => $vzdump_job_id_prop
+	    id => get_standard_option('pve-backup-jobid'),
 	},
     },
     returns => {
diff --git a/PVE/VZDump.pm b/PVE/VZDump.pm
index f1a6b2206..f813bba60 100644
--- a/PVE/VZDump.pm
+++ b/PVE/VZDump.pm
@@ -27,6 +27,16 @@ use PVE::VZDump::Plugin;
 use PVE::Tools qw(extract_param split_list);
 use PVE::API2Tools;
 
+# section config header/ID, this needs to cover UUIDs, user given values
+# and `$digest:$counter` values converted from vzdump.cron
+# TODO move to a better place once cycle
+# Jobs::VZDump -> API2::VZDump -> API2::Backups -> Jobs::VZDump is broken..
+PVE::JSONSchema::register_standard_option('pve-backup-jobid', {
+    type => 'string',
+    description => "The job ID.",
+    maxLength => 50,
+});
+
 my @posix_filesystems = qw(ext3 ext4 nfs nfs4 reiserfs xfs);
 
 my $lockfile = '/var/run/vzdump.lock';
-- 
2.39.5





More information about the pve-devel mailing list