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

B#1951 vCenter morefs (Managed Object References) are not correctly checked (#2115)

This commit is contained in:
Christian González 2018-05-23 10:55:39 +02:00 committed by Tino Vázquez
parent 0c2ca58795
commit 3be8e267db
5 changed files with 33 additions and 29 deletions

View File

@ -481,10 +481,8 @@ class Datacenter
DPG_CREATE_TIMEOUT = 240
def initialize(item, vi_client=nil)
if !item.instance_of? RbVmomi::VIM::Datacenter
raise "Expecting type 'RbVmomi::VIM::Datacenter'. " <<
"Got '#{item.class} instead."
end
check_item(item, RbVmomi::VIM::Datacenter)
@vi_client = vi_client
@item = item

View File

@ -268,10 +268,8 @@ end # class Storage
class StoragePod < Storage
def initialize(item, vi_client=nil)
if !item.instance_of? RbVmomi::VIM::StoragePod
raise "Expecting type 'RbVmomi::VIM::StoragePod'. " <<
"Got '#{item.class} instead."
end
check_item(item, RbVmomi::VIM::StoragePod)
@item = item
end
@ -287,11 +285,7 @@ class Datastore < Storage
attr_accessor :one_item
def initialize(item, vi_client=nil)
if !item.instance_of? RbVmomi::VIM::Datastore
raise "Expecting type 'RbVmomi::VIM::Datastore'. " <<
"Got '#{item.class} instead."
end
check_item(item, RbVmomi::VIM::Datastore)
@vi_client = vi_client
@item = item
@one_item = {}

View File

@ -51,10 +51,10 @@ class Network
include Memoize
def initialize(item, vi_client=nil)
if !item.instance_of?(RbVmomi::VIM::Network) &&
!item.instance_of?(RbVmomi::VIM::DistributedVirtualPortgroup )
raise "Expecting type 'RbVmomi::VIM::Network'. " <<
"Got '#{item.class} instead."
begin
check_item(item, RbVmomi::VIM::Network)
rescue
check_item(item, RbVmomi::VIM::DistributedVirtualPortgroup)
end
@vi_client = vi_client
@ -218,10 +218,8 @@ end # class Network
class PortGroup < Network
def initialize(item, vi_client=nil)
if !item.instance_of?(RbVmomi::VIM::Network)
raise "Expecting type 'RbVmomi::VIM::Network'. " <<
"Got '#{item.class} instead."
end
check_item(item, RbVmomi::VIM::Network)
@vi_client = vi_client
@item = item
@ -246,10 +244,8 @@ end # class PortGroup
class DistributedPortGroup < Network
def initialize(item, vi_client=nil)
if !item.instance_of?(RbVmomi::VIM::DistributedVirtualPortgroup )
raise "Expecting type 'RbVmomi::VIM::DistributedVirtualPortgroup'. " <<
"Got '#{item.class} instead."
end
check_item(item, RbVmomi::VIM::DistributedVirtualPortgroup)
@vi_client = vi_client
@item = item
@ -274,10 +270,8 @@ end # class DistributedPortGroup
class DistributedVirtualSwitch < Network
def initialize(item, vi_client=nil)
if !item.instance_of?(RbVmomi::VIM::VmwareDistributedVirtualSwitch )
raise "Expecting type 'RbVmomi::VIM::VmwareDistributedVirtualSwitch'. " <<
"Got '#{item.class} instead."
end
check_item(item, RbVmomi::VIM::VmwareDistributedVirtualSwitch)
@vi_client = vi_client
@item = item

View File

@ -6,6 +6,7 @@ class VirtualMachineFolder
def initialize(item)
@item = item
check_item(@item, nil)
@items = {}
end
@ -53,6 +54,7 @@ class Template
def initialize(item=nil, vi_client=nil)
@item = item
check_item(@item, nil) if (@item)
@vi_client = vi_client
@locking = true
end
@ -1097,6 +1099,7 @@ class VirtualMachine < Template
def initialize(vi_client, ref, one_id)
if (ref)
@item = RbVmomi::VIM::VirtualMachine.new(vi_client.vim, ref)
check_item(@item, RbVmomi::VIM::VirtualMachine)
end
@vi_client = vi_client

View File

@ -60,6 +60,7 @@ require 'network'
require 'file_helper'
require 'importer'
CHECK_REFS = true
# ---------------------------------------------------------------------------- #
# Helper functions #
# ---------------------------------------------------------------------------- #
@ -78,3 +79,17 @@ def check_valid(parameter, label)
exit -1
end
end
def check_item(item, target_class)
begin
item.name if CHECK_REFS
if target_class
if !item.instance_of?(target_class)
raise "Expecting type 'RbVmomi::VIM::#{target_class}'. " <<
"Got '#{item.class} instead."
end
end
rescue RbVmomi::Fault => e
raise "Reference \"#{item._ref}\" error. The reference does not exist"
end
end