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());
}