From bcbcbceb06f41e4d68c53838e1ef82ba82a2f2e5 Mon Sep 17 00:00:00 2001 From: Tino Vazquez Date: Mon, 18 May 2020 02:31:43 +0200 Subject: [PATCH] M #-: Check for known and calculated path To avoid issues monitoring wild VMs. Also make actual_path monitoring more robust. --- .../remotes/lib/vcenter_driver/virtual_machine.rb | 9 ++++++--- .../vcenter_driver/virtual_machine_monitor/vm_monitor.rb | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) 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 0a65744142..23ba3519dd 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb @@ -686,7 +686,6 @@ module VCenterDriver # @return [vCenter_disk] the proper disk def query_disk(one_disk, keys, vc_disks) index = one_disk['DISK_ID'] - cloned = one_disk["CLONE"].nil? || one_disk["CLONE"] == "YES" unmanaged = "opennebula.disk.#{index}" managed = "opennebula.mdisk.#{index}" @@ -706,8 +705,12 @@ module VCenterDriver end # Try to find the disk using the path known by OpenNebula - path = !cloned ? one_disk['SOURCE'] : disk_real_path(one_disk, index) - query = vc_disks.select {|dev| path == dev[:path_wo_ds]} + source_path = one_disk['SOURCE'] + calculated_path = disk_real_path(one_disk, index) + query = vc_disks.select { |dev| + source_path == dev[:path_wo_ds] || + calculated_path == dev[:path_wo_ds] + } end return nil if query.size != 1 diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_monitor/vm_monitor.rb b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_monitor/vm_monitor.rb index 0bfdddc136..b96e0cb350 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_monitor/vm_monitor.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_monitor/vm_monitor.rb @@ -463,6 +463,7 @@ module VirtualMachineMonitor str_info << 'VCENTER_RP_NAME="' << rp_name << '" ' << "\n" info_disks.each do |disk| + next if disk[1].no_exists? str_info << "DISK_#{disk[0]}_ACTUAL_PATH=\"[" << disk[1].ds.name << '] ' << disk[1].path << '" ' << "\n" end