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 <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2021-12-02 11:41:43 +01:00 committed by Thomas Lamprecht
parent 38772ec8fa
commit c048ad30c8
2 changed files with 27 additions and 0 deletions

View File

@ -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;
}

View File

@ -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',