]> git.proxmox.com Git - pve-storage.git/commitdiff
pvesr: rename list => jobs, call API
authorDietmar Maurer <dietmar@proxmox.com>
Fri, 5 May 2017 08:31:51 +0000 (10:31 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Fri, 5 May 2017 08:31:51 +0000 (10:31 +0200)
to avoid code duplication. I also removed the functioanlity to query
jobs on other nodes, because it is clumsy and not really needed.

PVE/API2/Storage/Replication.pm
PVE/CLI/pvesr.pm
PVE/ReplicationTools.pm

index a33d5ccc5b49022e5d70873370922b8d9c282215..9123f223a7cc87cdbebc558992ba0f8074bebbf8 100644 (file)
@@ -43,7 +43,7 @@ __PACKAGE__->register_method ({
     name => 'jobs',
     path => 'jobs',
     method => 'GET',
-    description => "List of all replication jobs.",
+    description => "List replication jobs.",
     permissions => {
        user => 'all',
     },
@@ -53,26 +53,13 @@ __PACKAGE__->register_method ({
        additionalProperties => 0,
        properties => {
            node => get_standard_option('pve-node'),
-           nodes => get_standard_option('pve-node-list' ,
-                                        {description => "Notes where the jobs is located.",
-                                         optional => 1}),
        },
     },
     returns => { type => 'object' },
     code => sub {
        my ($param) = @_;
 
-       if ($param->{nodes}) {
-           foreach my $node (PVE::Tools::split_list($param->{nodes})) {
-               die "Node: $node does not exists.\n" if
-                   !PVE::Cluster::check_node_exists($node);
-           }
-       }
-
-       my $nodes = $param->{nodes} ?
-           $param->{nodes} : $param->{node};
-
-       return PVE::ReplicationTools::get_all_jobs($nodes);
-}});
+       return PVE::ReplicationTools::get_all_jobs();
+    }});
 
 1;
index 59321e28fd86a6362df776124bd467050fa514fd..0f4f5c7c75929a40a8a8bed129756fc4b8a6504e 100644 (file)
@@ -21,28 +21,23 @@ sub setup_environment {
     PVE::RPCEnvironment->setup_default_cli_env();
 }
 
-my $print_list = sub {
-    my ($conf, $json) = @_;
-
-    if (defined($json)) {
-       print JSON::encode_json($conf);
-    } else {
-       printf("%-10s%-20s%-20s%-5s%-10s%-5s\n",
-              "VMID", "DEST", "LAST SYNC","IVAL", "STATE", "FAIL");
-
-       foreach my $vmid (sort keys %$conf) {
-           my $job = $conf->{$vmid};
-           my $timestr = strftime("%Y-%m-%d_%H:%M:%S", localtime($job->{lastsync}));
-
-           printf("%-9s ", $vmid);
-           printf("%-19s ", $job->{tnode});
-           printf("%-19s ", $timestr);
-           printf("%-4s ", $job->{interval});
-           printf("%-9s ", $job->{state});
-           printf("%-9s\n", $job->{fail});
-       }
+my $print_job_list = sub {
+    my ($conf) = @_;
+
+    printf("%-10s%-20s%-20s%-5s%-10s%-5s\n",
+          "VMID", "DEST", "LAST SYNC","IVAL", "STATE", "FAIL");
+
+    foreach my $vmid (sort keys %$conf) {
+       my $job = $conf->{$vmid};
+       my $timestr = strftime("%Y-%m-%d_%H:%M:%S", localtime($job->{lastsync}));
+
+       printf("%-9s ", $vmid);
+       printf("%-19s ", $job->{tnode});
+       printf("%-19s ", $timestr);
+       printf("%-4s ", $job->{interval});
+       printf("%-9s ", $job->{state});
+       printf("%-9s\n", $job->{fail});
     }
-
 };
 
 sub set_list {
@@ -157,63 +152,11 @@ __PACKAGE__->register_method ({
 
     }});
 
-__PACKAGE__->register_method ({
-    name => 'list',
-    path => 'list',
-    method => 'GET',
-    description => "List of all replication jobs.",
-    permissions => {
-       user => 'all'
-    },
-    protected => 1,
-    parameters => {
-       additionalProperties => 0,
-       properties => {
-           vmid => {
-               type => 'string', format => 'pve-vmid',
-               description => "The VMID of the guest.",
-               completion => \&PVE::Cluster::complete_local_vmid,
-           },
-       },
-    },
-    protected => 1,
-    proxyto => 'node',
-    parameters => {
-       additionalProperties => 0,
-       properties => {
-           node => get_standard_option('pve-node'),
-           nodes => get_standard_option('pve-node-list' ,
-                                        {description => "Notes where the jobs is located.",
-                                         optional => 1}),
-           json => {
-               optional => 1,
-               type => 'boolean',
-               description => "Output in JSON format.",
-           },
-       },
-    },
-    returns => { type => 'string' },
-    code => sub {
-       my ($param) = @_;
-
-       if ($param->{nodes}) {
-           foreach my $node (PVE::Tools::split_list($param->{nodes})) {
-               die "Node: $node does not exists.\n" if
-                   !PVE::Cluster::check_node_exists($node);
-           }
-       }
-
-       my $nodes = $param->{nodes} ?
-           $param->{nodes} : $param->{node};
-
-       my $list = PVE::ReplicationTools::get_all_jobs($nodes);
-
-       &$print_list($list, $param->{json});
-}});
 
 
 our $cmddef = {
-    list => [  __PACKAGE__ , 'list' , [],  {node => $nodename}],
+    jobs => [ 'PVE::API2::Storage::Replication', 'jobs' , [],
+             {node => $nodename}, $print_job_list ],
     run => [ __PACKAGE__ , 'run'],
     destroyjob => [ __PACKAGE__ , 'destroyjob', ['vmid']],
 };
index 7b6590c085de1b12c9b3ba299e786dd53f9988b9..86f7e0183fbdc15fb81c83b029ec9566b3265649 100644 (file)
@@ -85,57 +85,32 @@ sub get_node_ip {
 }
 
 sub get_all_jobs {
-    my ($nodes) = @_;
-
-    my @nodelist = PVE::Tools::split_list($nodes);
 
     my $vms = PVE::Cluster::get_vmlist();
-    my $state = read_state();
-    my $jobs = {};
-
-    my $outfunc = sub {
-       my $line = shift;
-
-       my $remote_jobs = JSON::decode_json($line);
-       foreach my $vmid (keys %$remote_jobs) {
-           $jobs->{$vmid} = $remote_jobs->{$vmid};
-       }
-    };
-
-    foreach my $node (@nodelist) {
-       if ($local_node ne $node) {
 
-           my $ip = get_node_ip($node);
-           $ip = [$ip] if Net::IP::ip_is_ipv6($ip);
-
-           my @cmd = ('ssh', '-o', 'Batchmode=yes', "root\@$ip", '--',
-                      'pvesr', 'list', '--json');
-
-           run_command([@cmd], outfunc=>$outfunc)
+    my $state = read_state();
 
-       } else {
+    my $jobs = {};
 
-           foreach my $vmid (keys %{$vms->{ids}}) {
+    foreach my $vmid (keys %{$vms->{ids}}) {
+       next if $vms->{ids}->{$vmid}->{node} ne $local_node;
 
-               next if !($vms->{ids}->{$vmid}->{node} eq $local_node);
-               next if !defined($state->{$vmid});
-               my $vm_state = $state->{$vmid};
-               my $job = {};
+       my $vm_state = $state->{$vmid};
+       next if !defined($vm_state);
 
-               $job->{limit}    = $vm_state->{limit};
-               $job->{interval} = $vm_state->{interval};
-               $job->{tnode}    = $vm_state->{tnode};
-               $job->{lastsync} = $vm_state->{lastsync};
-               $job->{state}    = $vm_state->{state};
-               $job->{fail}     = $vm_state->{fail};
+       my $job = {};
 
-               $jobs->{$vmid}   = $job;
-           }
+       $job->{limit}    = $vm_state->{limit};
+       $job->{interval} = $vm_state->{interval};
+       $job->{tnode}    = $vm_state->{tnode};
+       $job->{lastsync} = $vm_state->{lastsync};
+       $job->{state}    = $vm_state->{state};
+       $job->{fail}     = $vm_state->{fail};
 
-       }
+       $jobs->{$vmid}   = $job;
     }
 
-    return ($jobs);
+    return $jobs;
 }
 
 sub sync_guest {