]>
git.proxmox.com Git - pve-ha-manager.git/blob - PVE/HA/Sim/RTEnv.pm
1 package PVE
::HA
::Sim
::RTEnv
;
5 use POSIX
qw(strftime EINTR);
9 use Fcntl
qw(:DEFAULT :flock);
13 use base
qw(PVE::HA::Sim::Env);
16 my ($this, $nodename, $hardware, $log_id) = @_;
18 my $class = ref($this) || $this;
20 my $self = $class->SUPER::new
($nodename, $hardware, $log_id);
32 my ($self, $level, $msg) = @_;
36 my $time = $self->get_time();
38 printf("%-5s %10s %12s: $msg\n", $level, strftime
("%H:%M:%S", localtime($time)),
39 "$self->{nodename}/$self->{log_id}");
43 my ($self, $delay) = @_;
49 my ($self, $end_time) = @_;
52 my $cur_time = time();
54 last if $cur_time >= $end_time;
63 $self->{loop_start
} = $self->get_time();
69 my $delay = $self->get_time() - $self->{loop_start
};
71 die "loop take too long ($delay seconds)\n" if $delay > 30;
74 sub exec_resource_agent
{
75 my ($self, $sid, $cmd, @params) = @_;
77 my $hardware = $self->{hardware
};
79 my $ss = $hardware->read_service_status();
81 if ($cmd eq 'request_stop') {
84 print "WORKER status $sid: stopped\n";
87 print "WORKER status $sid: running\n";
91 } elsif ($cmd eq 'start') {
94 print "WORKER status $sid: running\n";
97 print "START WORKER $sid\n";
102 $hardware->write_service_status($ss);
104 print "END WORKER $sid\n";
108 } elsif ($cmd eq 'stop') {
111 print "WORKER status $sid: stopped\n";
114 print "STOP WORKER $sid\n";
119 $hardware->write_service_status($ss);
121 print "END WORKER $sid\n";