From c048ad30c8fd9a44310a77e92308f246d080f77a Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Thu, 2 Dec 2021 11:41:43 +0100 Subject: [PATCH] vzdump: add new 'next-run' field for vzdump job listing and calculate it by getting the next event after 'now' since we currently have no way to get the last run time for jobs only running on different cluster nodes Signed-off-by: Dominik Csapak --- PVE/API2/Backup.pm | 11 +++++++++++ www/manager6/dc/Backup.js | 16 ++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/PVE/API2/Backup.pm b/PVE/API2/Backup.pm index b1ad6afc..9953a704 100644 --- a/PVE/API2/Backup.pm +++ b/PVE/API2/Backup.pm @@ -16,6 +16,7 @@ use PVE::Exception qw(raise_param_exc); use PVE::VZDump; use PVE::VZDump::Common; use PVE::Jobs; # for VZDump Jobs +use PVE::RS::CalendarEvent; use base qw(PVE::RESTHandler); @@ -117,6 +118,16 @@ __PACKAGE__->register_method({ foreach my $jobid (sort { $order->{$a} <=> $order->{$b} } keys %$jobs) { my $job = $jobs->{$jobid}; next if $job->{type} ne 'vzdump'; + + if (my $schedule = $job->{schedule}) { + # vzdump jobs are cluster wide, there maybe was no local run + # so simply calculate from now + my $last_run = time(); + my $calspec = PVE::RS::CalendarEvent->new($schedule); + my $next_run = $calspec->compute_next_event($last_run); + $job->{'next-run'} = $next_run if defined($next_run); + } + push @$res, $job; } diff --git a/www/manager6/dc/Backup.js b/www/manager6/dc/Backup.js index 6395ea2b..e92ae4aa 100644 --- a/www/manager6/dc/Backup.js +++ b/www/manager6/dc/Backup.js @@ -765,6 +765,22 @@ Ext.define('PVE.dc.BackupView', { sorter: (a, b) => (a.data.comment || '').localeCompare(b.data.comment || ''), flex: 1, }, + { + text: gettext('Next Run'), + dataIndex: 'next-run', + width: 150, + renderer: function(value) { + if (!value) { + return '-'; + } + + let now = new Date(), next = new Date(value * 1000); + if (next < now) { + return gettext('pending'); + } + return Proxmox.Utils.render_timestamp(value); + }, + }, { header: gettext('Retention'), dataIndex: 'prune-backups',