]> git.proxmox.com Git - pve-ha-manager.git/blame - PVE/HA/Env/PVE2.pm
crm: allow shutdown in slave mode
[pve-ha-manager.git] / PVE / HA / Env / PVE2.pm
CommitLineData
714a4016
DM
1package PVE::HA::Env::PVE2;
2
3use strict;
4use warnings;
5
6use PVE::SafeSyslog;
7use PVE::Tools;
8
9use PVE::HA::Tools;
10use PVE::HA::Env;
11
12my $manager_status_filename = "/etc/pve/manager_status";
13
14sub new {
15 my ($this, $nodename) = @_;
16
17 die "missing nodename" if !$nodename;
18
19 my $class = ref($this) || $this;
20
21 my $self = bless {}, $class;
22
23 $self->{nodename} = $nodename;
24
25 return $self;
26}
27
28sub nodename {
29 my ($self) = @_;
30
31 return $self->{nodename};
32}
33
34sub read_manager_status {
35 my ($self) = @_;
36
37 my $filename = $manager_status_filename;
38
39 return PVE::HA::Tools::read_json_from_file($filename, {});
40}
41
42sub write_manager_status {
43 my ($self, $status_obj) = @_;
44
45 my $filename = $manager_status_filename;
46
47 PVE::HA::Tools::write_json_to_file($filename, $status_obj);
48}
49
50sub manager_status_exists {
51 my ($self) = @_;
52
53 return -f $manager_status_filename ? 1 : 0;
54}
55
56sub read_service_config {
57 my ($self) = @_;
58
59 die "implement me";
60}
61
62# this should return a hash containing info
63# what nodes are members and online.
64sub get_node_info {
65 my ($self) = @_;
66
67 die "implement me";
68}
69
70sub log {
71 my ($self, $level, $msg) = @_;
72
73 chomp $msg;
74
75 syslog($level, $msg);
76}
77
78sub get_ha_manager_lock {
79 my ($self) = @_;
80
81 die "implement me";
82}
83
84sub get_ha_agent_lock {
85 my ($self) = @_;
86
87 die "implement me";
88}
89
90sub test_ha_agent_lock {
91 my ($self, $node) = @_;
92
93 die "implement me";
94}
95
96sub quorate {
97 my ($self) = @_;
98
99 die "implement me";
100}
101
102sub get_time {
103 my ($self) = @_;
104
105 return time();
106}
107
108sub sleep {
109 my ($self, $delay) = @_;
110
111 CORE::sleep($delay);
112}
113
114sub sleep_until {
115 my ($self, $end_time) = @_;
116
117 for (;;) {
118 my $cur_time = time();
119
120 last if $cur_time >= $end_time;
121
122 $self->sleep(1);
123 }
124}
125
126sub loop_start_hook {
127 my ($self) = @_;
128
129 $self->{loop_start} = $self->get_time();
130}
131
132sub loop_end_hook {
133 my ($self) = @_;
134
135 my $delay = $self->get_time() - $self->{loop_start};
136
137 warn "loop take too long ($delay seconds)\n" if $delay > 30;
138}
139
140sub watchdog_open {
141 my ($self) = @_;
142
143 # Note: when using /dev/watchdog, make sure perl does not close
144 # the handle automatically at exit!!
145
146 die "implement me";
147}
148
149sub watchdog_update {
150 my ($self, $wfh) = @_;
151
152 die "implement me";
153}
154
155sub watchdog_close {
156 my ($self, $wfh) = @_;
157
158 die "implement me";
159}
160
1611;