]>
git.proxmox.com Git - pve-ha-manager.git/blob - PVE/HA/Env/PVE2.pm
1 package PVE
::HA
::Env
::PVE2
;
13 my $manager_status_filename = "/etc/pve/manager_status";
16 my ($this, $nodename) = @_;
18 die "missing nodename" if !$nodename;
20 my $class = ref($this) || $this;
22 my $self = bless {}, $class;
24 $self->{nodename
} = $nodename;
32 return $self->{nodename
};
35 sub read_manager_status
{
38 my $filename = $manager_status_filename;
40 return PVE
::HA
::Tools
::read_json_from_file
($filename, {});
43 sub write_manager_status
{
44 my ($self, $status_obj) = @_;
46 my $filename = $manager_status_filename;
48 PVE
::HA
::Tools
::write_json_to_file
($filename, $status_obj);
52 my ($self, $node) = @_;
54 $node = $self->{nodename
} if !defined($node);
56 my $filename = "/etc/pve/nodes/$node/lrm_status";
58 return PVE
::HA
::Tools
::read_json_from_file
($filename, {});
61 sub write_lrm_status
{
62 my ($self, $status_obj) = @_;
64 $node = $self->{nodename
};
66 my $filename = "/etc/pve/nodes/$node/lrm_status";
68 PVE
::HA
::Tools
::write_json_to_file
($filename, $status_obj);
71 sub manager_status_exists
{
74 return -f
$manager_status_filename ?
1 : 0;
77 sub read_service_config
{
83 # this should return a hash containing info
84 # what nodes are members and online.
92 my ($self, $level, $msg) = @_;
99 sub get_ha_manager_lock
{
102 my $lockid = "ha_manager";
104 my $lockdir = "/etc/pve/priv/lock";
105 my $filename = "$lockdir/$lockid";
113 return if ! -d
$lockdir; # pve cluster filesystem not online
121 sub get_ha_agent_lock
{
127 sub test_ha_agent_lock
{
128 my ($self, $node) = @_;
138 $quorate = PVE
::Cluster
::check_cfs_quorum
();
151 my ($self, $delay) = @_;
157 my ($self, $end_time) = @_;
160 my $cur_time = time();
162 last if $cur_time >= $end_time;
168 sub loop_start_hook
{
171 PVE
::Cluster
::cfs_update
();
173 $self->{loop_start
} = $self->get_time();
179 my $delay = $self->get_time() - $self->{loop_start
};
181 warn "loop take too long ($delay seconds)\n" if $delay > 30;
187 # Note: when using /dev/watchdog, make sure perl does not close
188 # the handle automatically at exit!!
193 sub watchdog_update
{
194 my ($self, $wfh) = @_;
200 my ($self, $wfh) = @_;
205 sub exec_resource_agent
{
206 my ($self, $sid, $cmd, @params) = @_;