]> git.proxmox.com Git - pve-ha-manager.git/blame - PVE/HA/Env/PVE2.pm
fix typo
[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;
abc920b4 8use PVE::Cluster qw(cfs_register_file cfs_read_file cfs_lock_file);
714a4016
DM
9
10use PVE::HA::Tools;
11use PVE::HA::Env;
abc920b4 12use PVE::HA::Groups;
714a4016
DM
13
14my $manager_status_filename = "/etc/pve/manager_status";
abc920b4
DM
15my $ha_groups_config = "ha/groups.cfg";
16
6cbcb5f7
DM
17#cfs_register_file($ha_groups_config,
18# sub { PVE::HA::Groups->parse_config(@_); },
19# sub { PVE::HA::Groups->write_config(@_); });
714a4016
DM
20
21sub new {
22 my ($this, $nodename) = @_;
23
24 die "missing nodename" if !$nodename;
25
26 my $class = ref($this) || $this;
27
28 my $self = bless {}, $class;
29
30 $self->{nodename} = $nodename;
31
32 return $self;
33}
34
35sub nodename {
36 my ($self) = @_;
37
38 return $self->{nodename};
39}
40
41sub read_manager_status {
42 my ($self) = @_;
43
44 my $filename = $manager_status_filename;
45
46 return PVE::HA::Tools::read_json_from_file($filename, {});
47}
48
49sub write_manager_status {
50 my ($self, $status_obj) = @_;
51
52 my $filename = $manager_status_filename;
53
54 PVE::HA::Tools::write_json_to_file($filename, $status_obj);
55}
56
c4a221bc
DM
57sub read_lrm_status {
58 my ($self, $node) = @_;
59
60 $node = $self->{nodename} if !defined($node);
61
62 my $filename = "/etc/pve/nodes/$node/lrm_status";
63
64 return PVE::HA::Tools::read_json_from_file($filename, {});
65}
66
67sub write_lrm_status {
68 my ($self, $status_obj) = @_;
69
6cbcb5f7 70 my $node = $self->{nodename};
c4a221bc
DM
71
72 my $filename = "/etc/pve/nodes/$node/lrm_status";
73
74 PVE::HA::Tools::write_json_to_file($filename, $status_obj);
75}
76
714a4016
DM
77sub manager_status_exists {
78 my ($self) = @_;
79
80 return -f $manager_status_filename ? 1 : 0;
81}
82
83sub read_service_config {
84 my ($self) = @_;
85
86 die "implement me";
87}
88
8456bde2
DM
89sub change_service_location {
90 my ($self, $sid, $node) = @_;
91
92 die "implement me";
93}
94
abc920b4
DM
95sub read_group_config {
96 my ($self) = @_;
97
98 return cfs_read_file($ha_groups_config);
99}
100
3b996922
DM
101sub queue_crm_commands {
102 my ($self, $cmd) = @_;
103
104 die "implement me";
105}
106
107sub read_crm_commands {
108 my ($self) = @_;
109
110 die "implement me";
111}
112
714a4016
DM
113# this should return a hash containing info
114# what nodes are members and online.
115sub get_node_info {
116 my ($self) = @_;
117
118 die "implement me";
119}
120
121sub log {
122 my ($self, $level, $msg) = @_;
123
124 chomp $msg;
125
126 syslog($level, $msg);
127}
128
129sub get_ha_manager_lock {
130 my ($self) = @_;
131
4d24e7db
DM
132 my $lockid = "ha_manager";
133
134 my $lockdir = "/etc/pve/priv/lock";
135 my $filename = "$lockdir/$lockid";
136
137 my $res = 0;
138
139 eval {
140
141 mkdir $lockdir;
142
143 return if ! -d $lockdir; # pve cluster filesystem not online
144
145 # fixme: ?
146 };
147
148 return $res;
714a4016
DM
149}
150
151sub get_ha_agent_lock {
152 my ($self) = @_;
153
154 die "implement me";
155}
156
157sub test_ha_agent_lock {
158 my ($self, $node) = @_;
159
160 die "implement me";
161}
162
163sub quorate {
164 my ($self) = @_;
165
4d24e7db
DM
166 my $quorate = 0;
167 eval {
168 $quorate = PVE::Cluster::check_cfs_quorum();
169 };
170
171 return $quorate;
714a4016
DM
172}
173
174sub get_time {
175 my ($self) = @_;
176
177 return time();
178}
179
180sub sleep {
181 my ($self, $delay) = @_;
182
183 CORE::sleep($delay);
184}
185
186sub sleep_until {
187 my ($self, $end_time) = @_;
188
189 for (;;) {
190 my $cur_time = time();
191
192 last if $cur_time >= $end_time;
193
194 $self->sleep(1);
195 }
196}
197
198sub loop_start_hook {
199 my ($self) = @_;
200
4d24e7db
DM
201 PVE::Cluster::cfs_update();
202
714a4016
DM
203 $self->{loop_start} = $self->get_time();
204}
205
206sub loop_end_hook {
207 my ($self) = @_;
208
209 my $delay = $self->get_time() - $self->{loop_start};
210
211 warn "loop take too long ($delay seconds)\n" if $delay > 30;
212}
213
214sub watchdog_open {
215 my ($self) = @_;
216
217 # Note: when using /dev/watchdog, make sure perl does not close
218 # the handle automatically at exit!!
219
220 die "implement me";
221}
222
223sub watchdog_update {
224 my ($self, $wfh) = @_;
225
226 die "implement me";
227}
228
229sub watchdog_close {
230 my ($self, $wfh) = @_;
231
232 die "implement me";
233}
234
c4a221bc
DM
235sub exec_resource_agent {
236 my ($self, $sid, $cmd, @params) = @_;
237
238 die "implement me";
239}
240
714a4016 2411;