]> git.proxmox.com Git - pve-ha-manager.git/commitdiff
execute 'power <node> off' when fencing, improve logging
authorDietmar Maurer <dietmar@proxmox.com>
Fri, 5 Dec 2014 11:01:17 +0000 (12:01 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Fri, 5 Dec 2014 11:13:19 +0000 (12:13 +0100)
PVE/HA/Sim/Hardware.pm

index f2d01f24a5dbd2064eaa1bce53b59b2c1e79a516..66ef4d362b29a740528daea80590754476a305fe 100644 (file)
@@ -119,13 +119,15 @@ sub get_time {
 }
 
 sub log {
-    my ($self, $level, $msg) = @_;
+    my ($self, $level, $msg, $id) = @_;
 
     chomp $msg;
 
     my $time = $self->get_time();
 
-    printf("%-5s %5d %10s: $msg\n", $level, $time, 'hardware');
+    $id = 'hardware' if !$id;
+
+    printf("%-5s %5d %10s: $msg\n", $level, $time, $id);
 }
 
 sub statusdir {
@@ -214,7 +216,7 @@ sub get_node_info {
 # network <node> <on|off>
 
 sub sim_hardware_cmd {
-    my ($self, $cmdstr) = @_;
+    my ($self, $cmdstr, $logid) = @_;
 
     my $code = sub {
 
@@ -233,7 +235,7 @@ sub sim_hardware_cmd {
                if ($action eq 'on') {
                    my $server = $self->{nodes}->{$node}->{server} = PVE::HA::Server->new($haenv);
                } elsif ($self->{nodes}->{$node}->{server}) {
-                   $haenv->log('info', "server killed by poweroff");
+                   $haenv->log('info', "server killed by poweroff", $logid);
                    $self->{nodes}->{$node}->{server} = undef;
                }
            }
@@ -247,7 +249,7 @@ sub sim_hardware_cmd {
            die "sim_hardware_cmd: unknown command '$cmd'\n";
        }
 
-       $self->log('info', "execute $cmdstr");
+       $self->log('info', "execute $cmdstr", $logid);
 
        $self->write_hardware_status_nolock($cstatus);
     };
@@ -281,7 +283,9 @@ sub run {
            
            foreach my $n (@nodes) {
                if (!$self->watchdog_check($n)) {
-                   die "node '$n' fenced - implement me";
+                   $self->sim_hardware_cmd("power $n off", 'fencedev');
+                   $self->log('info', "server '$n' killed by poweroff (fencing)");
+                   $self->{nodes}->{$n}->{server} = undef;
                }
            }
        }
@@ -297,7 +301,7 @@ sub run {
            return if !$list;
 
            foreach my $cmd (@$list) {
-               $self->sim_hardware_cmd($cmd);
+               $self->sim_hardware_cmd($cmd, 'cmdlist');
            }
        }