[Ovirt-devel] [PATCH server] Fix bug in host-status.

Ian Main imain at redhat.com
Thu Oct 16 21:36:02 UTC 2008


This patch fixes a bug in host-status where the connection was being closed
at the end of the loop instead of after so consequent calls were failing
making it think the vm was off.

There's also a little extra debugging prints here and another small fix
to return if we can't get a domain list.

Signed-off-by: Ian Main <imain at redhat.com>
---
 src/host-status/host-status.rb |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/host-status/host-status.rb b/src/host-status/host-status.rb
index 6330d5c..3b07720 100755
--- a/src/host-status/host-status.rb
+++ b/src/host-status/host-status.rb
@@ -59,7 +59,7 @@ end
 require 'dutils'
 
 def check_state(vm, dom_info, host)
-  puts 'checking state of vm', vm.description
+  puts 'checking state of vm ' + vm.description
 
   case dom_info.state
 
@@ -149,9 +149,10 @@ def check_status(host)
   rescue
     puts "Failed to request domain list on host " + host.hostname
     conn.close
-    next
+    return
   end
 
+  puts "** Host alive, checking vms by id **"
   # Here we're going through every vm listed through libvirt.  This
   # really only lets us find ones that are started that shouldn't be.
   vm_ids.each do |vm_id|
@@ -159,7 +160,7 @@ def check_status(host)
     begin
       dom = conn.lookup_domain_by_id(vm_id)
     rescue
-      puts "Failed to find domain " + vm.description
+      puts "Failed to find domain " + vm.description + " with vm_id ", vm_id
       next
     end
 
@@ -178,25 +179,26 @@ def check_status(host)
     check_state(vm, info, host)
   end
 
+  puts "** Checking all vms as appear in the database **"
   # Now we get a list of all vms that should be on this system and see if
   # they are all running.
   Vm.find(:all, :conditions => [ "host_id = ?", host.id ]).each do |vm|
 
     begin
+      puts "Looking up domain by uuid #{vm.uuid}"
       dom = conn.lookup_domain_by_uuid(vm.uuid)
     rescue
       # OK.  We couldn't find the UUID that we thought was there.  The only
       # explanation is that the domain is dead.
-      puts "Failed to find domain " + vm.description
+      puts "Failed to find domain " + vm.description + ", marking as dead"
       kick_taskomatic(Vm::STATE_STOPPED, vm)
       next
     end
     info = dom.info
     check_state(vm, info, host)
-
-    conn.close
-
   end
+
+  conn.close
 end
 
 get_credentials
-- 
1.5.5.1




More information about the ovirt-devel mailing list