1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-02-28 17:57:22 +03:00

F #1835: vCenter cache improvements

F #1835: Cache improvements over importer
This commit is contained in:
semedi 2018-04-17 19:45:19 +02:00
parent dfcebe882c
commit 94dc0e920e
4 changed files with 40 additions and 6 deletions

View File

@ -374,6 +374,10 @@ class NetImporter < VCenterDriver::VcImporter
def defaults
{ size: "255", type: "ether" }
end
def attr
"TEMPLATE/VCENTER_NET_REF"
end
end
end # module VCenterDriver

View File

@ -27,6 +27,10 @@ module VCenterDriver
def import(selected) raise MESS end
########################################
def attr
false
end
public
########################################
# Constructors
@ -136,6 +140,12 @@ module VCenterDriver
id = resource['ID']
@rollback << Raction.new(resource, :delete)
rc = block.call(resource, id)
# update vCenter cache (future work)
#if attr
# VCenterDriver::VIHelper.add_ref_hash(attr, resource)
# @rollback << Raction.new(VCenterDriver::VIHelper, :remove_ref_hash, [attr, resource])
#end
end
def list_empty?

View File

@ -122,11 +122,27 @@ class VIHelper
hash
end
def self.clean_ref_hash(attr = nil)
if attr.nil?
@ref_hash = {}
else
@ref_hash[attr] = {} unless @ref_hash.nil?
def self.clean_ref_hash()
@ref_hash = {}
end
def self.add_ref_hash(attr, one_object)
raise "cache is empty!" unless @ref_hash
refkey = get_ref_key(one_object, attr)
if @ref_hash[attr]
@ref_hash[attr][refkey] = one_object
end
end
def self.remove_ref_hash(attr, one_object)
raise "cache is empty!" unless @ref_hash
refkey = get_ref_key(one_object, attr)
if @ref_hash[attr]
@ref_hash[attr].delete(refkey)
end
end

View File

@ -3339,8 +3339,8 @@ class VmImporter < VCenterDriver::VcImporter
@rollback.unshift(Raction.new(n, :delete))
end
raise error if !error.empty?
working_template[:one] << template_nics
working_template[:one] << template_nics
working_template[:one] << rp_opts(opts[:type], opts[:resourcepool])
one_object.update(working_template[:one])
@ -3360,5 +3360,9 @@ class VmImporter < VCenterDriver::VcImporter
}
end
def attr
"TEMPLATE/VCENTER_TEMPLATE_REF"
end
end
end # module VCenterDriver