CLOUDSTACK-5329: fix NPE, in case of zone wide primary storage

Conflicts:

        api/src/com/cloud/storage/StoragePool.java
        server/src/com/cloud/vm/UserVmManagerImpl.java


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

Branch: refs/heads/4.4
Commit: 24d1f161b8da4cd3dc24693c12eae3f150f79291
Parents: a3736f2
Author: Edison Su <[email protected]>
Authored: Thu Mar 27 15:53:27 2014 -0700
Committer: Edison Su <[email protected]>
Committed: Thu Mar 27 17:38:38 2014 -0700

----------------------------------------------------------------------
 api/src/com/cloud/storage/StoragePool.java     | 14 +++++++++-----
 server/src/com/cloud/vm/UserVmManagerImpl.java |  8 +++++++-
 2 files changed, 16 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/24d1f161/api/src/com/cloud/storage/StoragePool.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/storage/StoragePool.java 
b/api/src/com/cloud/storage/StoragePool.java
index 6ede960..7d54162 100644
--- a/api/src/com/cloud/storage/StoragePool.java
+++ b/api/src/com/cloud/storage/StoragePool.java
@@ -18,6 +18,7 @@ package com.cloud.storage;
 
 import java.util.Date;
 
+import com.cloud.hypervisor.Hypervisor;
 import org.apache.cloudstack.api.Identity;
 import org.apache.cloudstack.api.InternalIdentity;
 
@@ -98,10 +99,13 @@ public interface StoragePool extends Identity, 
InternalIdentity {
 
     Long getPodId();
 
-    /**
-     * @return
-     */
-    String getStorageProviderName();
+       /**
+        * @return
+        */
+       String getStorageProviderName();
+       
+       boolean isInMaintenance();
+
+    Hypervisor.HypervisorType getHypervisor();
 
-    boolean isInMaintenance();
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/24d1f161/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java 
b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 62f4a53..28f23e0 100755
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -35,6 +35,7 @@ import javax.ejb.Local;
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
+
 import org.apache.commons.codec.binary.Base64;
 import org.apache.log4j.Logger;
 
@@ -3720,7 +3721,12 @@ public class UserVmManagerImpl extends ManagerBase 
implements UserVmManager, Vir
             throw new InvalidParameterValueException("Data disks attached to 
the vm, can not migrate. Need to dettach data disks at first");
         }
 
-        HypervisorType destHypervisorType = 
_clusterDao.findById(destPool.getClusterId()).getHypervisorType();
+        HypervisorType destHypervisorType = destPool.getHypervisor();
+        if (destHypervisorType == null) {
+            destHypervisorType = _clusterDao.findById(
+                destPool.getClusterId()).getHypervisorType();
+        }
+
         if (vm.getHypervisorType() != destHypervisorType) {
             throw new InvalidParameterValueException("hypervisor is not 
compatible: dest: " + destHypervisorType.toString() + ", vm: " + 
vm.getHypervisorType().toString());
         }

Reply via email to