Updated Branches:
  refs/heads/4.2 9f84eb2f1 -> b04a2b561

CLOUDSTACK-4264

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

Branch: refs/heads/4.2
Commit: b04a2b561b96ec86ba45647f335c5916a7cc65a7
Parents: 9f84eb2
Author: Mike Tutkowski <[email protected]>
Authored: Mon Aug 12 21:57:55 2013 -0600
Committer: Mike Tutkowski <[email protected]>
Committed: Mon Aug 12 21:57:55 2013 -0600

----------------------------------------------------------------------
 .../storage/resource/VmwareStorageProcessor.java   | 10 +++++++---
 .../src/com/cloud/storage/VolumeManagerImpl.java   | 17 ++++++++++++-----
 2 files changed, 19 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b04a2b56/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
----------------------------------------------------------------------
diff --git 
a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
 
b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
index 39368cc..8fd419a 100644
--- 
a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
+++ 
b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
@@ -1174,9 +1174,13 @@ public class VmwareStorageProcessor implements 
StorageProcessor {
                     datastoreVolumePath = dsMo.getDatastorePath(dsMo.getName() 
+ ".vmdk");
                 }
             } else {
-                datastoreVolumePath = 
VmwareStorageLayoutHelper.getLegacyDatastorePathFromVmdkFileName(dsMo, 
volumeTO.getPath() + ".vmdk");
-                if(!dsMo.fileExists(datastoreVolumePath)) {
-                    datastoreVolumePath = 
VmwareStorageLayoutHelper.getVmwareDatastorePathFromVmdkFileName(dsMo, vmName, 
volumeTO.getPath() + ".vmdk");
+                if(!isManaged) {
+                    datastoreVolumePath = 
VmwareStorageLayoutHelper.getLegacyDatastorePathFromVmdkFileName(dsMo, 
volumeTO.getPath() + ".vmdk");
+                    if(!dsMo.fileExists(datastoreVolumePath)) {
+                        datastoreVolumePath = 
VmwareStorageLayoutHelper.getVmwareDatastorePathFromVmdkFileName(dsMo, vmName, 
volumeTO.getPath() + ".vmdk");
+                    }
+                } else {
+                    datastoreVolumePath = dsMo.getDatastorePath(dsMo.getName() 
+ ".vmdk");
                 }
             }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b04a2b56/server/src/com/cloud/storage/VolumeManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/VolumeManagerImpl.java 
b/server/src/com/cloud/storage/VolumeManagerImpl.java
index 48dda36..db1e5aa 100644
--- a/server/src/com/cloud/storage/VolumeManagerImpl.java
+++ b/server/src/com/cloud/storage/VolumeManagerImpl.java
@@ -1824,14 +1824,21 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
 
         HypervisorType dataDiskHyperType = _volsDao.getHypervisorType(volume
                 .getId());
-        if (dataDiskHyperType != HypervisorType.None
+
+        VolumeVO dataDiskVol = _volsDao.findById(volume.getId());
+        StoragePoolVO dataDiskStoragePool = 
_storagePoolDao.findById(dataDiskVol.getPoolId());
+
+        // managed storage can be used for different types of hypervisors
+        // only perform this check if the volume's storage pool is not null 
and not managed
+        if (dataDiskStoragePool != null && !dataDiskStoragePool.isManaged()) {
+            if (dataDiskHyperType != HypervisorType.None
                 && rootDiskHyperType != dataDiskHyperType) {
-            throw new InvalidParameterValueException(
-                    "Can't attach a volume created by: " + dataDiskHyperType
-                    + " to a " + rootDiskHyperType + " vm");
+                throw new InvalidParameterValueException(
+                        "Can't attach a volume created by: " + 
dataDiskHyperType
+                        + " to a " + rootDiskHyperType + " vm");
+            }
         }
 
-
         deviceId = getDeviceId(vmId, deviceId);
         VolumeInfo volumeOnPrimaryStorage = volume;
 

Reply via email to