diff --git a/src/datastore_mad/remotes/vcenter/cp b/src/datastore_mad/remotes/vcenter/cp index 13ff1c9688..a207d47a69 100755 --- a/src/datastore_mad/remotes/vcenter/cp +++ b/src/datastore_mad/remotes/vcenter/cp @@ -62,8 +62,8 @@ target_path = "#{ds_image_dir}/#{id}" # or if is a zipped file it has to be unzipped in a temp folder if VCenterDriver::FileHelper.is_remote_or_needs_unpack?(img_path) - temp_folder = File.join(VAR_LOCATION, "vcenter") - temp_file = File.join(temp_folder, File.basename(target_path)) + temp_folder = File.join(VAR_LOCATION, "vcenter/#{target_path}") + temp_file = File.join(temp_folder, File.basename(img_path)) # Create tmp directory FileUtils.mkdir_p(temp_folder) @@ -120,13 +120,18 @@ files_to_upload.each_with_index do |f, index| end end - # Change path if vmdk is part of filename - # but it's not the extension' + # Change path if vmdk is part of filename but it's not the extension if /[^.]+vmdk$/.match(path) && VCenterDriver::FileHelper.is_vmdk?(f) path.gsub!(/vmdk$/,'') extension = '.vmdk' end + # Add iso extension if file is an ISO file + if VCenterDriver::FileHelper.is_iso?(f) + path = "#{File.dirname(path)}/#{File.basename(path,".*")}" + extension = '.iso' + end + if index == files_to_upload.size - 1 uploader_args = host_id + " " + ds_ref + " " + "#{path}#{extension}" + " " + f diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/file_helper.rb b/src/vmm_mad/remotes/lib/vcenter_driver/file_helper.rb index 308d114284..6eb569a729 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/file_helper.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/file_helper.rb @@ -10,13 +10,10 @@ class FileHelper return disk["SOURCE"] else disk_id = disk["DISK_ID"] - if disk["SOURCE"] - image_name = disk["SOURCE"].split(".").first - return "#{image_name}-#{vm_id}-#{disk_id}.vmdk" - else - ds_volatile_dir = disk["VCENTER_DS_VOLATILE_DIR"] || "one-volatile" - return "#{ds_volatile_dir}/#{vm_id}/one-#{vm_id}-#{disk_id}.vmdk" - end + return disk["SOURCE"] if disk["SOURCE"] + + ds_volatile_dir = disk["VCENTER_DS_VOLATILE_DIR"] || "one-volatile" + return "#{ds_volatile_dir}/#{vm_id}/one-#{vm_id}-#{disk_id}.vmdk" end end @@ -38,6 +35,12 @@ class FileHelper type.include? "VMware" end + def self.is_iso?(file) + type = %x{file #{file}} + + type.include? "ISO" + end + def self.get_type(file) type = %x{file -b --mime-type #{file}} if $?.exitstatus != 0