]>
git.proxmox.com Git - pve-ha-manager.git/blob - PVE/HA/Env.pm
9 # abstract out the cluster environment
12 my ($this, $statusdir, $nodename) = @_;
14 my $class = ref($this) || $this;
17 statusdir
=> $statusdir,
18 nodename
=> $nodename,
27 return $self->{nodename
};
30 sub read_local_status
{
33 my $node = $self->{nodename
};
34 my $filename = "$self->{statusdir}/local_status_$node";
35 return PVE
::Tools
::file_read_firstline
($filename);
38 sub write_local_status
{
39 my ($self, $status) = @_;
41 my $node = $self->{nodename
};
42 my $filename = "$self->{statusdir}/local_status_$node";
43 PVE
::Tools
::file_set_contents
($filename, $status);
46 # manager status is stored on cluster, protected by ha_manager_lock
47 sub read_manager_status
{
55 sub write_manager_status
{
56 my ($self, $status_obj) = @_;
61 # we use this to enable/disbale ha
62 sub manager_status_exists
{
70 sub parse_service_config
{
71 my ($self, $raw) = @_;
78 sub read_service_config
{
86 # this should return a hash containing info
87 # what nodes are members and online.
93 # return { node1 => { online => 1 }, node2 => ... }
97 my ($self, $level, @args) = @_;
99 syslog
($level, @args);
102 # aquire a cluster wide lock
103 sub get_ha_manager_lock
{
109 # return true when cluster is quorate
116 # return current time
117 # overwrite that if you want to simulate
125 my ($self, $delay) = @_;
131 my ($self, $end_time) = @_;
134 my $cur_time = $self->get_time();
135 return if $cur_time >= $end_time;
136 $self->sleep($end_time - $cur_time);
140 sub loop_start_hook
{