1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-22 18:50:08 +03:00

F #4913: Speed up monitorization

This commit is contained in:
Jaime Melis 2017-07-17 17:06:20 +02:00
parent 33b9d899b1
commit 91a8831912
3 changed files with 24 additions and 12 deletions

View File

@ -430,6 +430,8 @@ class ClusterComputeResource
get_resource_pool_list if !@rp_list
vm_pool = VCenterDriver::VIHelper.one_pool(OpenNebula::VirtualMachinePool)
vms.each do |vm_ref,info|
begin
vm = VCenterDriver::VirtualMachine.new_from_ref(vm_ref, @vi_client)
@ -466,14 +468,18 @@ class ClusterComputeResource
one_vm = VCenterDriver::VIHelper.find_by_ref(OpenNebula::VirtualMachinePool,
"DEPLOY_ID",
vm_ref,
vc_uuid)
vc_uuid,
vm_pool)
number = one_vm["ID"] if one_vm
end
if number != -1
next if @monitored_vms.include? number
@monitored_vms << number
vm.one_item if vm.get_vm_id
if vm.get_vm_id(vm_pool)
vm.one_item
end
end
vm.monitor(stats)

View File

@ -45,7 +45,7 @@ class VIHelper
def self.find_by_name(the_class, name, pool = nil, raise_if_fail = true)
pool = one_pool(the_class, raise_if_fail) if pool.nil?
element = pool.select{|e| e['NAME'] == "#{name}" }.first rescue nil
element = pool.find{|e| e['NAME'] == "#{name}" }
if element.nil? && raise_if_fail
raise "Could not find element '#{name}' in pool '#{the_class}'"
else
@ -55,28 +55,28 @@ class VIHelper
def self.find_by_ref(the_class, attribute, ref, vcenter_uuid, pool = nil)
pool = one_pool(the_class, false) if pool.nil?
element = pool.select{|e|
element = pool.find{|e|
e["#{attribute}"] == ref &&
(!e["TEMPLATE/OPENNEBULA_MANAGED"] || e["TEMPLATE/OPENNEBULA_MANAGED"] != "NO") &&
(e["TEMPLATE/VCENTER_INSTANCE_ID"] == vcenter_uuid ||
e["USER_TEMPLATE/VCENTER_INSTANCE_ID"] == vcenter_uuid)}.first rescue nil
e["USER_TEMPLATE/VCENTER_INSTANCE_ID"] == vcenter_uuid)}
return element
end
def self.find_image_by_path(the_class, path, ds_id, pool = nil)
pool = one_pool(the_class, false) if pool.nil?
element = pool.select{|e|
element = pool.find{|e|
e["PATH"] == path &&
e["DATASTORE_ID"] == ds_id}.first rescue nil
e["DATASTORE_ID"] == ds_id}
return element
end
def self.find_persistent_image_by_source(source, pool)
element = pool.select{|e|
element = pool.find{|e|
e["SOURCE"] == source &&
e["PERSISTENT"] == "1"
}.first rescue nil
}
return element
end

View File

@ -919,7 +919,11 @@ class VirtualMachine < Template
end
# @return String the vm_id stored in vCenter
def get_vm_id
def get_vm_id(vm_pool = nil)
if defined?(@one_item_id) && @one_item_id
return @one_item_id
end
vm_ref = self['_ref']
return nil if !vm_ref
@ -928,10 +932,12 @@ class VirtualMachine < Template
one_vm = VCenterDriver::VIHelper.find_by_ref(OpenNebula::VirtualMachinePool,
"DEPLOY_ID",
vm_ref,
vc_uuid)
vc_uuid,
vm_pool)
return nil if !one_vm
return one_vm["ID"]
@one_item_id = one_vm["ID"]
return @one_item_id
end
def get_vcenter_instance_uuid