my $STATE_DIR = '/var/lib/pve-replica';
my $STATE_PATH = "$STATE_DIR/pve-replica.state";
-PVE::Cluster::cfs_update;
my $local_node = PVE::INotify::nodename();
my $cluster_nodes;
}
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 {
my $warnings = 0;
my $func = sub {
my ($id, $volume) = @_;
+ return if !defined($volume->{replica}) || !$volume->{replica};
my $volname;
if ($vm_type eq 'qemu') {
if( PVE::Storage::volume_has_feature($cfg, 'replicate', $volname , undef, $running)) {
$syncable_disks->{$volname} = 1;
} else {
- warn "Can't sync Volume: $volname\n"
- if !$noerr &&
- (!defined($volume->{replica}) || $volume->{replica});
+ warn "Can't sync Volume: $volname\n" if !$noerr;
$warnings = 1;
}
};