CLOUDSTACK-4423: Do not always append .qcow2 to volume names when copying

Disk images are not always in the QCOW2 format, so don't assume that the
filename will always and in .qcow2
(cherry picked from commit 93b40b0ca6a796ffbacd80c40897f6ada6284bc4)

Signed-off-by: animesh <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/bba9801c
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/bba9801c
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/bba9801c

Branch: refs/heads/4.2
Commit: bba9801cf7ef1eb65a730b45140bf5af0d978741
Parents: 7678ab4
Author: Wido den Hollander <[email protected]>
Authored: Tue Aug 27 18:33:46 2013 +0200
Committer: animesh <[email protected]>
Committed: Tue Aug 27 12:55:51 2013 -0700

----------------------------------------------------------------------
 .../cloud/hypervisor/kvm/storage/KVMStorageProcessor.java    | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bba9801c/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
----------------------------------------------------------------------
diff --git 
a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
 
b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
index fd5c9d9..8482a8d 100644
--- 
a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
+++ 
b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
@@ -319,6 +319,8 @@ public class KVMStorageProcessor implements 
StorageProcessor {
         DataTO destData = cmd.getDestTO();
         DataStoreTO srcStore = srcData.getDataStore();
         DataStoreTO destStore = destData.getDataStore();
+        VolumeObjectTO srcVol = (VolumeObjectTO) srcData;
+        ImageFormat srcFormat = srcVol.getFormat();
         PrimaryDataStoreTO primaryStore = (PrimaryDataStoreTO) destStore;
         if (!(srcStore instanceof NfsTO)) {
             return new CopyCmdAnswer("can only handle nfs storage");
@@ -352,14 +354,16 @@ public class KVMStorageProcessor implements 
StorageProcessor {
             secondaryStoragePool = storagePoolMgr.getStoragePoolByURI(
                     secondaryStorageUrl + File.separator + volumeDir
                            );
-            if (!srcVolumeName.endsWith(".qcow2")) {
+            if (!srcVolumeName.endsWith(".qcow2") && srcFormat == 
ImageFormat.QCOW2) {
                 srcVolumeName = srcVolumeName + ".qcow2";
             }
             KVMPhysicalDisk volume = secondaryStoragePool
                     .getPhysicalDisk(srcVolumeName);
-            storagePoolMgr.copyPhysicalDisk(volume, volumeName,
+            volume.setFormat(PhysicalDiskFormat.valueOf(srcFormat.toString()));
+            KVMPhysicalDisk newDisk = storagePoolMgr.copyPhysicalDisk(volume, 
volumeName,
                     primaryPool);
             VolumeObjectTO newVol = new VolumeObjectTO();
+            
newVol.setFormat(ImageFormat.valueOf(newDisk.getFormat().toString().toUpperCase()));
             newVol.setPath(volumeName);
             return new CopyCmdAnswer(newVol);
         } catch (CloudRuntimeException e) {

Reply via email to