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

F #4913: Add error management to some pool creation actions

This commit is contained in:
mcabrerizo 2017-05-16 09:41:26 +02:00
parent 8d4cfaf16b
commit 2274a9ca72
6 changed files with 70 additions and 9 deletions

View File

@ -147,9 +147,30 @@ get '/vcenter/template/:vcenter_ref' do
template = VCenterDriver::Template.new_from_ref(ref, vcenter_client)
vc_uuid = vcenter_client.vim.serviceContent.about.instanceUuid
dpool = VCenterDriver::VIHelper.one_pool(OpenNebula::DatastorePool)
if dpool.respond_to?(:message)
msg = "Could not get OpenNebula DatastorePool: #{dpool.message}"
logger.error("[vCenter] " + msg)
error = Error.new(msg)
error 404, error.to_json
end
ipool = VCenterDriver::VIHelper.one_pool(OpenNebula::ImagePool)
if ipool.respond_to?(:message)
msg = "Could not get OpenNebula ImagePool: #{ipool.message}"
logger.error("[vCenter] " + msg)
error = Error.new(msg)
error 404, error.to_json
end
npool = VCenterDriver::VIHelper.one_pool(OpenNebula::VirtualNetworkPool)
if npool.respond_to?(:message)
msg = "Could not get OpenNebula VirtualNetworkPool: #{npool.message}"
logger.error("[vCenter] " + msg)
error = Error.new(msg)
error 404, error.to_json
end
# POST params
if @request_body && !@request_body.empty?

View File

@ -138,6 +138,9 @@ else
vcenter_uuid = vm.get_vcenter_instance_uuid
networks = {}
npool = VCenterDriver::VIHelper.one_pool(OpenNebula::VirtualNetworkPool, false)
if npool.respond_to?(:message)
raise "Could not get OpenNebula VirtualNetworkPool: #{npool.message}"
end
# Check nics in VM
vm.item["config.hardware.device"].each do |dv|

View File

@ -101,7 +101,13 @@ class Storage
end
def self.get_one_image_ds_by_ref_and_ccr(ref, ccr_ref, vcenter_uuid, pool = nil)
pool = VCenterDriver::VIHelper.one_pool(OpenNebula::DatastorePool, false) if pool.nil?
if pool.nil?
pool = VCenterDriver::VIHelper.one_pool(OpenNebula::DatastorePool, false)
if pool.respond_to?(:message)
raise "Could not get OpenNebula DatastorePool: #{pool.message}"
end
end
element = pool.select do |e|
e["TEMPLATE/TYPE"] == "IMAGE_DS" &&
e["TEMPLATE/VCENTER_DS_REF"] == ref &&
@ -131,7 +137,12 @@ class Storage
end
def self.exists_one_by_ref_ccr_and_type?(ref, ccr_ref, vcenter_uuid, type, pool = nil)
pool = VCenterDriver::VIHelper.one_pool(OpenNebula::DatastorePool, false) if pool.nil?
if pool.nil?
pool = VCenterDriver::VIHelper.one_pool(OpenNebula::DatastorePool, false)
if pool.respond_to?(:message)
raise "Could not get OpenNebula DatastorePool: #{pool.message}"
end
end
elements = pool.select do |e|
e["TEMPLATE/TYPE"] == type &&
e["TEMPLATE/VCENTER_DS_REF"] == ref &&

View File

@ -10,8 +10,17 @@ def self.import_wild(host_id, vm_ref, one_vm, template)
vc_name = vi_client.vim.host
dpool = VCenterDriver::VIHelper.one_pool(OpenNebula::DatastorePool)
if dpool.respond_to?(:message)
raise "Could not get OpenNebula DatastorePool: #{dpool.message}"
end
ipool = VCenterDriver::VIHelper.one_pool(OpenNebula::ImagePool)
if ipool.respond_to?(:message)
raise "Could not get OpenNebula ImagePool: #{ipool.message}"
end
npool = VCenterDriver::VIHelper.one_pool(OpenNebula::VirtualNetworkPool)
if npool.respond_to?(:message)
raise "Could not get OpenNebula VirtualNetworkPool: #{npool.message}"
end
vcenter_vm = VCenterDriver::VirtualMachine.new_from_ref(vm_ref, vi_client)
@ -85,7 +94,6 @@ def self.import_clusters(con_ops, options)
# OpenNebula's ClusterPool
cpool = VCenterDriver::VIHelper.one_pool(OpenNebula::ClusterPool, false)
if cpool.respond_to?(:message)
raise "Could not get OpenNebula ClusterPool: #{cpool.message}"
end
@ -97,7 +105,6 @@ def self.import_clusters(con_ops, options)
# Get OpenNebula's host pool
hpool = VCenterDriver::VIHelper.one_pool(OpenNebula::HostPool, false)
if hpool.respond_to?(:message)
raise "Could not get OpenNebula HostPool: #{hpool.message}"
end
@ -178,7 +185,6 @@ def self.import_templates(con_ops, options)
# Get OpenNebula's templates pool
tpool = VCenterDriver::VIHelper.one_pool(OpenNebula::TemplatePool, false)
if tpool.respond_to?(:message)
raise "Could not get OpenNebula TemplatePool: #{tpool.message}"
end
@ -189,8 +195,17 @@ def self.import_templates(con_ops, options)
# Create OpenNebula pools
dpool = VCenterDriver::VIHelper.one_pool(OpenNebula::DatastorePool)
if dpool.respond_to?(:message)
raise "Could not get OpenNebula DatastorePool: #{dpool.message}"
end
ipool = VCenterDriver::VIHelper.one_pool(OpenNebula::ImagePool)
if ipool.respond_to?(:message)
raise "Could not get OpenNebula ImagePool: #{ipool.message}"
end
npool = VCenterDriver::VIHelper.one_pool(OpenNebula::VirtualNetworkPool)
if npool.respond_to?(:message)
raise "Could not get OpenNebula VirtualNetworkPool: #{npool.message}"
end
# Get vcenter intance uuid as moref is unique for each vcenter
vc_uuid = vi_client.vim.serviceContent.about.instanceUuid
@ -473,7 +488,6 @@ def self.import_networks(con_ops, options)
# OpenNebula's VirtualNetworkPool
npool = VCenterDriver::VIHelper.one_pool(OpenNebula::VirtualNetworkPool, false)
if npool.respond_to?(:message)
raise "Could not get OpenNebula VirtualNetworkPool: #{npool.message}"
end
@ -659,14 +673,12 @@ def self.import_datastore(con_ops, options)
dc_folder = VCenterDriver::DatacenterFolder.new(vi_client)
dpool = VCenterDriver::VIHelper.one_pool(OpenNebula::DatastorePool, false)
if dpool.respond_to?(:message)
raise "Could not get OpenNebula DatastorePool: #{dpool.message}"
end
# Get OpenNebula's host pool
hpool = VCenterDriver::VIHelper.one_pool(OpenNebula::HostPool, false)
if hpool.respond_to?(:message)
raise "Could not get OpenNebula HostPool: #{hpool.message}"
end

View File

@ -116,7 +116,12 @@ class Network
end
def self.get_unmanaged_vnet_by_ref(ref, ccr_ref, template_ref, vcenter_uuid, pool = nil)
pool = VCenterDriver::VIHelper.one_pool(OpenNebula::VirtualNetworkPool, false) if pool.nil?
if pool.nil?
pool = VCenterDriver::VIHelper.one_pool(OpenNebula::VirtualNetworkPool, false)
if pool.respond_to?(:message)
raise "Could not get OpenNebula VirtualNetworkPool: #{pool.message}"
end
end
element = pool.select do |e|
e["TEMPLATE/VCENTER_NET_REF"] == ref &&
e["TEMPLATE/VCENTER_CCR_REF"] == ccr_ref &&
@ -142,6 +147,9 @@ class Network
networks = {}
npool = VCenterDriver::VIHelper.one_pool(OpenNebula::VirtualNetworkPool, false)
if npool.respond_to?(:message)
raise "Could not get OpenNebula VirtualNetworkPool: #{npool.message}"
end
device_change_nics.each do |nic|
if nic[:operation] == :remove

View File

@ -1985,6 +1985,9 @@ class VirtualMachine < Template
detach_disk_array = []
extra_config = []
ipool = VCenterDriver::VIHelper.one_pool(OpenNebula::ImagePool)
if ipool.respond_to?(:message)
raise "Could not get OpenNebula ImagePool: #{ipool.message}"
end
vc_disks.each do |d|
if !onevm_disks_vector.index(d[:path_wo_ds])
@ -2107,6 +2110,9 @@ class VirtualMachine < Template
spec_hash = {}
spec_hash[:deviceChange] = []
ipool = VCenterDriver::VIHelper.one_pool(OpenNebula::ImagePool)
if ipool.respond_to?(:message)
raise "Could not get OpenNebula ImagePool: #{ipool.message}"
end
vm.config.hardware.device.each do |disk|
if is_disk_or_cdrom?(disk)