mirror of
git://git.proxmox.com/git/pve-ha-manager.git
synced 2025-01-09 01:18:05 +03:00
implement get_node_info
This commit is contained in:
parent
53a449bf4b
commit
91dab9cefe
@ -17,6 +17,16 @@ sub new {
|
|||||||
return $self;
|
return $self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# this should return a hash containing info
|
||||||
|
# what nodes are members and online.
|
||||||
|
sub get_node_info {
|
||||||
|
my ($self) = @_;
|
||||||
|
|
||||||
|
die "implement me";
|
||||||
|
|
||||||
|
# return { node1 => { online => 1, join_time => X }, node2 => ... }
|
||||||
|
}
|
||||||
|
|
||||||
sub log {
|
sub log {
|
||||||
my ($self, $level, $msg) = @_;
|
my ($self, $level, $msg) = @_;
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package PVE::HA::SimEnv;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use POSIX qw(strftime);
|
use POSIX qw(strftime);
|
||||||
|
use Data::Dumper;
|
||||||
|
|
||||||
use PVE::HA::Env;
|
use PVE::HA::Env;
|
||||||
|
|
||||||
@ -17,6 +18,31 @@ my $quorum_setup = [
|
|||||||
[ 500 , [ 'node2', 'node3' ]],
|
[ 500 , [ 'node2', 'node3' ]],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
my $compute_node_info = sub {
|
||||||
|
|
||||||
|
my $last_node_info = {};
|
||||||
|
|
||||||
|
foreach my $entry (@$quorum_setup) {
|
||||||
|
my ($time, $members) = @$entry;
|
||||||
|
|
||||||
|
my $node_info = {};
|
||||||
|
|
||||||
|
foreach my $node (@$members) {
|
||||||
|
$node_info->{$node}->{online} = 1;
|
||||||
|
if (!$last_node_info->{$node}) {
|
||||||
|
$node_info->{$node}->{join_time} = $time;
|
||||||
|
} else {
|
||||||
|
$node_info->{$node}->{join_time} =
|
||||||
|
$last_node_info->{$node}->{join_time};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
push @$entry, $node_info;
|
||||||
|
|
||||||
|
$last_node_info = $node_info;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
sub new {
|
sub new {
|
||||||
my ($this, $nodename) = @_;
|
my ($this, $nodename) = @_;
|
||||||
|
|
||||||
@ -26,6 +52,8 @@ sub new {
|
|||||||
|
|
||||||
$self->{nodename} = $nodename;
|
$self->{nodename} = $nodename;
|
||||||
|
|
||||||
|
&$compute_node_info();
|
||||||
|
|
||||||
return $self;
|
return $self;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,6 +96,20 @@ sub get_ha_manager_lock {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub get_node_info {
|
||||||
|
my ($self) = @_;
|
||||||
|
|
||||||
|
foreach my $entry (reverse @$quorum_setup) {
|
||||||
|
my ($time, $members, $node_info) = @$entry;
|
||||||
|
|
||||||
|
if ($cur_time >= $time) {
|
||||||
|
return $node_info;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
die "unbale to get node info";
|
||||||
|
}
|
||||||
|
|
||||||
sub loop_start_hook {
|
sub loop_start_hook {
|
||||||
my ($self) = @_;
|
my ($self) = @_;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user