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:
parent
0c2ca58795
commit
3be8e267db
@ -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
|
||||
|
@ -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 = {}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user