cluster: STABLE3 - fence: vmware helper better handling power on/off errors

Jan Friesse honzaf@fedoraproject.org
Mon Jan 19 11:30:00 GMT 2009


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=7ae5969b6d0595378cf5ee85ee998663c17698f7
Commit:        7ae5969b6d0595378cf5ee85ee998663c17698f7
Parent:        7b5692646333ed520c369d933eb35be045dda528
Author:        Jan Friesse <jfriesse@redhat.com>
AuthorDate:    Mon Jan 19 12:26:50 2009 +0100
Committer:     Jan Friesse <jfriesse@redhat.com>
CommitterDate: Mon Jan 19 12:29:45 2009 +0100

fence: vmware helper better handling power on/off errors

Because of nature of VMware cluster, there may be situation,
when VMware cluster itself start fenced virtual machine before
our agent. Without this patch, this leads to error. Now, only
warning is produced, but return code of helper is still 0.
---
 fence/agents/vmware/fence_vmware_helper.pl |   28 ++++++++++++++++++++++++----
 1 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/fence/agents/vmware/fence_vmware_helper.pl b/fence/agents/vmware/fence_vmware_helper.pl
index e60805e..5715d55 100644
--- a/fence/agents/vmware/fence_vmware_helper.pl
+++ b/fence/agents/vmware/fence_vmware_helper.pl
@@ -139,8 +139,18 @@ foreach $vm(@$vm_views) {
     };
 
     if ($@) {
-      show_error "Cannot power on vm ".Opts::get_option('vmname')."!\nVMware error:".$@;
-      my_exit 6;
+      # If error is SoapFault with InvalidPowerState, user maybe use some auto power on tool.
+      # This is not error, warning is enought.
+      if (ref($@) eq 'SoapFault') {
+        if (ref($@->detail) eq 'InvalidPowerState') {
+          show_error "Warning: Cannot power on vm (somebody done it before???) ".Opts::get_option('vmname').
+                     "!\nVMware error:".$@."\n";
+        }
+      } else {
+        # Some other more serious problem
+        show_error "Cannot power on vm ".Opts::get_option('vmname')."!\nVMware error:".$@."\n";
+        my_exit 6;
+      }
     }
   } elsif ($operation eq 'off') {
     eval {
@@ -148,8 +158,18 @@ foreach $vm(@$vm_views) {
     };
 
     if ($@) {
-      show_error "Cannot power off vm ".Opts::get_option('vmname')."!\nVMware error:".$@;
-      my_exit 6;
+      # If error is SoapFault with InvalidPowerState, user maybe use some auto power off tool.
+      # This is not error, warning is enought.
+      if (ref($@) eq 'SoapFault') {
+        if (ref($@->detail) eq 'InvalidPowerState') {
+          show_error "Warning: Cannot power off vm (somebody done it before???) ".Opts::get_option('vmname').
+                     "!\nVMware error:".$@."\n";
+        }
+      } else {
+        # Some other more serious problem
+        show_error "Cannot power off vm ".Opts::get_option('vmname')."!\nVMware error:".$@."\n";
+        my_exit 6;
+      }
     }
   } else {
     show_error "Operation should be on, off or list!\n";



More information about the Cluster-cvs mailing list