]> git.proxmox.com Git - pmg-api.git/commitdiff
pbs: get_schedules: allow to filter by remote directly
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 18 Nov 2020 15:30:18 +0000 (16:30 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 18 Nov 2020 15:30:18 +0000 (16:30 +0100)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
src/PMG/API2/PBS/Job.pm
src/PMG/PBSSchedule.pm

index b8249bf54bc0aea229031f9573aecb604f450ded..91e0f818a2b206e06d8c0dbe2135e830241374c1 100644 (file)
@@ -511,12 +511,11 @@ __PACKAGE__->register_method ({
 
        my $remote = $param->{remote};
 
-       my $schedules = PMG::PBSSchedule::get_schedules();
-       my @data = grep {$_->{remote} eq $remote} @$schedules;
+       my $schedules = PMG::PBSSchedule::get_schedules($remote);
 
        my $res = {};
-       if (scalar(@data) == 1) {
-           $res = $data[0];
+       if (scalar(@$schedules) >= 1) {
+           $res = $schedules->[0];
        }
 
        return $res
index 6663f55fdfc777458ed270cf1a94888bb5ccb9bb..46d0b18b69487b603d92028464456d9c72f0b3c5 100644 (file)
@@ -8,7 +8,7 @@ use PVE::Systemd;
 
 # systemd timer
 sub get_schedules {
-    my ($param) = @_;
+    my ($filter_remote) = @_;
 
     my $result = [];
 
@@ -20,7 +20,11 @@ sub get_schedules {
        if ($filename =~ /^pmg-pbsbackup\@(.+)\.timer$/) {
            $remote = PVE::Systemd::unescape_unit($1);
        } else {
-           die 'Unrecognized timer name!\n';
+           die "Unrecognized timer name!\n";
+       }
+
+       if (defined($filter_remote) && $filter_remote ne $remote) {
+           return; # next
        }
 
        my $unitfile = "$systemd_dir/$filename";
@@ -79,9 +83,9 @@ sub create_schedule {
 sub delete_schedule {
     my ($remote) = @_;
 
-    my $schedules = get_schedules();
+    my $schedules = get_schedules($remote);
 
-    die "Schedule for $remote not found!\n" if !grep {$_->{remote} eq $remote} @$schedules;
+    die "Schedule for $remote not found!\n" if scalar(@$schedules) < 1;
 
     my $unit_name = 'pmg-pbsbackup@' . PVE::Systemd::escape_unit($remote);
     my $service_unit = $unit_name . '.service';