]>
git.proxmox.com Git - pmg-api.git/blob - src/PMG/PBSSchedule.pm
46d0b18b69487b603d92028464456d9c72f0b3c5
1 package PMG
::PBSSchedule
;
6 use PVE
::Tools
qw(run_command file_set_contents file_get_contents trim dir_glob_foreach);
11 my ($filter_remote) = @_;
15 my $systemd_dir = '/etc/systemd/system';
17 dir_glob_foreach
($systemd_dir, '^pmg-pbsbackup@.+\.timer$', sub {
20 if ($filename =~ /^pmg-pbsbackup\@(.+)\.timer$/) {
21 $remote = PVE
::Systemd
::unescape_unit
($1);
23 die "Unrecognized timer name!\n";
26 if (defined($filter_remote) && $filter_remote ne $remote) {
30 my $unitfile = "$systemd_dir/$filename";
31 my $unit = PVE
::Systemd
::read_ini
($unitfile);
34 unitfile
=> $unitfile,
36 schedule
=> $unit->{'Timer'}->{'OnCalendar'},
37 delay
=> $unit->{'Timer'}->{'RandomizedDelaySec'},
46 my ($remote, $schedule, $delay) = @_;
48 my $unit_name = 'pmg-pbsbackup@' . PVE
::Systemd
::escape_unit
($remote);
49 #my $service_unit = $unit_name . '.service';
50 my $timer_unit = $unit_name . '.timer';
51 my $timer_unit_path = "/etc/systemd/system/$timer_unit";
53 # create systemd timer
54 run_command
(['systemd-analyze', 'calendar', $schedule], errmsg
=> "Invalid schedule specification", outfunc
=> sub {});
55 run_command
(['systemd-analyze', 'timespan', $delay], errmsg
=> "Invalid delay specification", outfunc
=> sub {});
58 'Description' => "Timer for PBS Backup to remote $remote",
61 'OnCalendar' => $schedule,
62 'RandomizedDelaySec' => $delay,
65 'WantedBy' => 'timers.target',
70 PVE
::Systemd
::write_ini
($timer, $timer_unit_path);
71 run_command
(['systemctl', 'daemon-reload']);
72 run_command
(['systemctl', 'enable', $timer_unit]);
73 run_command
(['systemctl', 'start', $timer_unit]);
77 die "Creating backup schedule for $remote failed: $err\n";
86 my $schedules = get_schedules
($remote);
88 die "Schedule for $remote not found!\n" if scalar(@$schedules) < 1;
90 my $unit_name = 'pmg-pbsbackup@' . PVE
::Systemd
::escape_unit
($remote);
91 my $service_unit = $unit_name . '.service';
92 my $timer_unit = $unit_name . '.timer';
93 my $timer_unit_path = "/etc/systemd/system/$timer_unit";
96 run_command
(['systemctl', 'disable', $timer_unit]);
97 unlink($timer_unit_path) || die "delete '$timer_unit_path' failed - $!\n";
98 run_command
(['systemctl', 'daemon-reload']);
102 die "Removing backup schedule for $remote failed: $err\n";