From af599e55ccf46d44590ee18172f1e1ad2fc5e596 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Thu, 9 Oct 2014 11:29:43 +0200 Subject: [PATCH] bug #3212: Update monitor state reporting from KVM, Xen, ESX and vCenter drivers --- src/vmm_mad/remotes/poll_xen_kvm.rb | 25 ++++++++++++++----- src/vmm_mad/remotes/vcenter/vcenter_driver.rb | 20 +++++++++------ src/vmm_mad/remotes/vmware/vi_driver.rb | 8 +++++- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/src/vmm_mad/remotes/poll_xen_kvm.rb b/src/vmm_mad/remotes/poll_xen_kvm.rb index cd35f4fb23..386686e30c 100755 --- a/src/vmm_mad/remotes/poll_xen_kvm.rb +++ b/src/vmm_mad/remotes/poll_xen_kvm.rb @@ -259,12 +259,19 @@ module KVM # Translate libvirt state to Opennebula monitor state # @param state [String] libvirt state # @return [String] OpenNebula state + # + # Libvirt states for the guest are + # * 'running' state refers to guests which are currently active on a CPU. + # * 'blocked' not running or runnable (waiting on I/O or in a sleep mode). + # * 'paused' after virsh suspend. + # * 'shutdown' guest in the process of shutting down. + # * 'dying' the domain has not completely shutdown or crashed. + # * 'crashed' guests have failed while running and are no longer running. + # def self.get_state(state) case state.gsub('-', '') - when *%w{running blocked shutdown dying idle} + when *%w{running blocked shutdown dying idle paused} 'a' - when 'paused' - 'd' when 'crashed' 'e' else @@ -349,12 +356,18 @@ module XEN # Returns an OpenNebula state from the Xen status # @param state [String] with the Xen status # @return [String] OpenNebula monitor state + # + # Xentop states are: + # 'd' – domain is dying + # 's' – domain shutting down + # 'b' – blocked domain + # 'c' – domain crashed + # 'p' – domain paused + # 'r' – domain is actively ruining on one of the CPU def self.get_state(state) case state.gsub('-', '')[-1..-1] - when *%w{r b s d} + when *%w{r b s d p} 'a' - when 'p' - 'd' when 'c' 'e' else diff --git a/src/vmm_mad/remotes/vcenter/vcenter_driver.rb b/src/vmm_mad/remotes/vcenter/vcenter_driver.rb index 84d3446029..d409a3a738 100644 --- a/src/vmm_mad/remotes/vcenter/vcenter_driver.rb +++ b/src/vmm_mad/remotes/vcenter/vcenter_driver.rb @@ -646,7 +646,7 @@ class VCenterVm @guest_state = @vm.guest.guestState @vmware_tools = @vm.guest.toolsRunningStatus @vmtools_ver = @vm.guest.toolsVersion - @vmtools_verst = @vm.guest.toolsVersionStatus + @vmtools_verst = @vm.guest.toolsVersionStatus end @@ -697,7 +697,11 @@ class VCenterVm private ######################################################################## - # Converts the VI string state to OpenNebula state convention + # Converts the VI string state to OpenNebula state convention + # Guest states are: + # - poweredOff The virtual machine is currently powered off. + # - poweredOn The virtual machine is currently powered on. + # - suspended The virtual machine is currently suspended. ######################################################################## def state_to_c(state) case state @@ -705,14 +709,16 @@ private 'a' when 'suspended' 'p' - else + when 'poweredOff' 'd' + else + '-' end end ######################################################################## # Clone a vCenter VM Template and leaves it powered on - ######################################################################## + ######################################################################## def self.clone_vm(xml_text) xml = REXML::Document.new xml_text @@ -770,8 +776,8 @@ private end if vnc_port - spec = RbVmomi::VIM.VirtualMachineConfigSpec(:extraConfig => - [{:key=>"remotedisplay.vnc.enabled", :value=>"TRUE"}, + spec = RbVmomi::VIM.VirtualMachineConfigSpec(:extraConfig => + [{:key=>"remotedisplay.vnc.enabled", :value=>"TRUE"}, {:key=>"remotedisplay.vnc.port", :value=>vnc_port.text}, {:key=>"remotedisplay.vnc.ip", :value=>vnc_listen}]) rc.ReconfigVM_Task(:spec => spec).wait_for_completion @@ -780,4 +786,4 @@ private return vm_uuid end end -end \ No newline at end of file +end diff --git a/src/vmm_mad/remotes/vmware/vi_driver.rb b/src/vmm_mad/remotes/vmware/vi_driver.rb index 4668f0c808..381919f47d 100644 --- a/src/vmm_mad/remotes/vmware/vi_driver.rb +++ b/src/vmm_mad/remotes/vmware/vi_driver.rb @@ -299,6 +299,10 @@ private ######################################################################## # Converts the VI string state to OpenNebula state convention + # Guest states are: + # - poweredOff The virtual machine is currently powered off. + # - poweredOn The virtual machine is currently powered on. + # - suspended The virtual machine is currently suspended. ######################################################################## def state_to_c(state) case state @@ -306,8 +310,10 @@ private 'a' when 'suspended' 'p' - else + when 'poweredOff' 'd' + else + '-' end end end