On 01.07.19 15:43, Christian Ebner wrote: > remove_vmid_from_backup_jobs updates the vzdump.cron backup jobs, > excluding the given vmid. > > Signed-off-by: Christian Ebner <c.eb...@proxmox.com> > --- > PVE/VZDump/Plugin.pm | 46 ++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 46 insertions(+) > > diff --git a/PVE/VZDump/Plugin.pm b/PVE/VZDump/Plugin.pm > index 9933ef6..f415242 100644 > --- a/PVE/VZDump/Plugin.pm > +++ b/PVE/VZDump/Plugin.pm > @@ -7,6 +7,8 @@ use POSIX qw(strftime); > > use PVE::Tools; > use PVE::SafeSyslog; > +use PVE::Cluster qw(cfs_read_file cfs_write_file cfs_lock_file); > +use PVE::API2::Backup; ^^^^^^^^^^^^^^^^^ above won't fly, that's a module from pve-manager and thus would create a cyclic build dependency.. And I'd rather reduce than increase them ;)
The use is for the vzdump cron parser/writer which are cfs_registered in that file.. So either we move that out to a module here (or even higher up) or do something else, avoiding use of modules which are lower in the dependency chain. > > my $log_level = { > err => 'ERROR:', > @@ -168,4 +170,48 @@ sub cleanup { > die "internal error"; # implement in subclass > } > > +sub remove_vmid_from_list { > + my ($list, $rm_vmid) = @_; > + # this removes the given vmid from the list, if present > + return join(',', grep { $_ ne $rm_vmid } PVE::Tools::split_list($list)); > +} > + > +sub remove_vmid_from_jobs { > + my ($jobs, $exclude_vmid) = @_; > + > + my $updated_jobs = []; > + foreach my $job (@$jobs) { > + if (defined $job->{vmid}) { > + my $list = remove_vmid_from_list($job->{vmid}, $exclude_vmid); > + if ($list) { > + $job->{vmid} = $list; > + push @$updated_jobs, $job; > + } > + } elsif (defined $job->{exclude}) { > + my $list = remove_vmid_from_list($job->{exclude}, $exclude_vmid); > + if ($list) { > + $job->{exclude} = $list; > + } else { > + delete $job->{exclude}; > + } > + push @$updated_jobs, $job; > + } else { > + push @$updated_jobs, $job; > + } > + } > + return $updated_jobs; > +} > + > +sub remove_vmid_from_backup_jobs { > + my ($vmid) = @_; > + > + cfs_lock_file('vzdump.cron', undef, sub { > + my $vzdump_jobs = cfs_read_file('vzdump.cron'); > + my $jobs = $vzdump_jobs->{jobs} || []; > + $vzdump_jobs->{jobs} = remove_vmid_from_jobs($jobs, $vmid); > + cfs_write_file('vzdump.cron', $vzdump_jobs); > + }); > + die "$@" if ($@); > +} > + > 1; > _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel