From 23d527bcfae18605183fac93e073d5d2d1770bc1 Mon Sep 17 00:00:00 2001 From: Sergio Semedi Barranco Date: Tue, 20 Nov 2018 09:40:05 +0100 Subject: [PATCH] B #2610: vm saveas works with CDs B #2610: save as template treats iso cds --- src/oca/ruby/opennebula/virtual_machine.rb | 27 ++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/oca/ruby/opennebula/virtual_machine.rb b/src/oca/ruby/opennebula/virtual_machine.rb index ab2f13086d..df76d7a201 100644 --- a/src/oca/ruby/opennebula/virtual_machine.rb +++ b/src/oca/ruby/opennebula/virtual_machine.rb @@ -840,17 +840,25 @@ module OpenNebula image_id = disk["IMAGE_ID"] if !image_id.nil? && !image_id.empty? - rc = disk_saveas(disk_id.to_i,"#{name}-disk-#{disk_id}","",-1) + if disk['TYPE'] == 'CDROM' + replace << "DISK = [ IMAGE_ID = #{image_id}" + if disk["OPENNEBULA_MANAGED"] + replace << ", OPENNEBULA_MANAGED=#{disk["OPENNEBULA_MANAGED"]}" + end + replace << " ]\n" + else + rc = disk_saveas(disk_id.to_i,"#{name}-disk-#{disk_id}","",-1) - raise if OpenNebula.is_error?(rc) + raise if OpenNebula.is_error?(rc) - if persistent == true - OpenNebula::Image.new_with_id(rc.to_i, @client).persistent() + if persistent == true + OpenNebula::Image.new_with_id(rc.to_i, @client).persistent() + end + + img_ids << rc.to_i + + replace << "DISK = [ IMAGE_ID = #{rc} ]\n" end - - img_ids << rc.to_i - - replace << "DISK = [ IMAGE_ID = #{rc} ]\n" else # Volatile disks cannot be saved, so the definition is copied replace << self.template_like_str( @@ -859,12 +867,13 @@ module OpenNebula end self.each('TEMPLATE/NIC') do |nic| - nic_id = nic["NIC_ID"] + if nic_id.nil? || nic_id.empty? rc = Error.new('The NIC_ID is missing from the VM template') raise end + REMOVE_VNET_ATTRS.each do |attr| nic.delete_element(attr) end