From 838dec61b75fb79f0df2adf657204c4f19a6f103 Mon Sep 17 00:00:00 2001 From: Sergio Semedi Barranco Date: Fri, 26 Oct 2018 11:21:12 +0200 Subject: [PATCH] vCenter, ERROR monitoring fix (#2547) (cherry picked from commit bf3938d76f334aa2b6dfc50ece5d264e9ba50e74) --- .../remotes/lib/vcenter_driver/host.rb | 32 ++++++++++++++----- .../lib/vcenter_driver/virtual_machine.rb | 2 +- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/host.rb b/src/vmm_mad/remotes/lib/vcenter_driver/host.rb index f9377c88fd..73766ea624 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/host.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/host.rb @@ -457,6 +457,7 @@ class ClusterComputeResource } vms.each do |vm_ref,info| + vm_info = "" begin esx_host = esx_hosts[info["runtime.host"]._ref] info[:esx_host_name] = esx_host[:name] @@ -492,7 +493,7 @@ class ClusterComputeResource vm.monitor(stats) vm_name = "#{info["name"]} - #{cluster_name}" - str_info << %Q{ + vm_info << %Q{ VM = [ ID="#{id}", VM_NAME="#{vm_name}", @@ -502,17 +503,16 @@ class ClusterComputeResource # if the machine does not exist in opennebula it means that is a wild: unless vm.one_exist? vm_template_64 = Base64.encode64(vm.vm_to_one(vm_name)).gsub("\n","") - str_info << "VCENTER_TEMPLATE=\"YES\"," - str_info << "IMPORT_TEMPLATE=\"#{vm_template_64}\"," + vm_info << "VCENTER_TEMPLATE=\"YES\"," + vm_info << "IMPORT_TEMPLATE=\"#{vm_template_64}\"," end - str_info << "POLL=\"#{vm.info.gsub('"', "\\\"")}\"]" - + vm_info << "POLL=\"#{vm.info.gsub('"', "\\\"")}\"]" rescue Exception => e - tmp_str = e.inspect - tmp_str << e.backtrace.join("\n") - str_info << "ERROR=\"#{Base64.encode64(tmp_str).gsub("\n","")}\"]" + vm_info = error_monitoring(e, vm_ref, info) end + + str_info << vm_info end view.DestroyView # Destroy the view @@ -520,6 +520,22 @@ class ClusterComputeResource return str_info, last_mon_time end + def error_monitoring(e, vm_ref, info = {}) + error_info = '' + vm_name = info['name'] || nil + tmp_str = e.inspect + tmp_str << e.backtrace.join("\n") + + error_info << %Q{ + VM = [ + VM_NAME="#{vm_name}", + DEPLOY_ID="#{vm_ref}", + } + + error_info << "ERROR=\"#{Base64.encode64(tmp_str).gsub("\n","")}\"]" + + end + def monitor_customizations customizations = self['_connection'].serviceContent.customizationSpecManager.info diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb index e72a738dc5..8a62a7d7ff 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb @@ -3344,7 +3344,7 @@ class VirtualMachine < Template matches = opts[:name].match(/^one-(\d*)(-(.*))?$/) if matches id = matches[1] - one_vm = VCenterDriver::VIHelper.one_item(OpenNebula::VirtualMachine, id) + one_vm = VCenterDriver::VIHelper.one_item(OpenNebula::VirtualMachine, id, false) end end