You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ch...@apache.org on 2013/07/03 15:52:37 UTC

git commit: updated refs/heads/4.2 to 7db538e

Updated Branches:
  refs/heads/4.2 40ae16140 -> 7db538efc


CLOUDSTACK-3110: [VMWARE]NPE while adding primary storage(scope=cluster) with Invalid hostname

Description:

    When retrieving primary datastore, handle case for non-existing datastores/hosts.
    Throw exception and handle the exception in datastore mgmt layer and pass onward
    to create storage pool API.


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

Branch: refs/heads/4.2
Commit: 7db538efc6565686151282b5172b122efb2d4efb
Parents: 40ae161
Author: Vijayendra Bhamidipati <vi...@citrix.com>
Authored: Tue Jul 2 10:52:41 2013 -0700
Committer: Chip Childers <ch...@apache.org>
Committed: Wed Jul 3 09:52:06 2013 -0400

----------------------------------------------------------------------
 .../storage/datastore/DataStoreManagerImpl.java     | 16 ++++++++++------
 .../PrimaryDataStoreProviderManagerImpl.java        |  4 ++++
 2 files changed, 14 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7db538ef/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreManagerImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreManagerImpl.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreManagerImpl.java
index 71df262..2d7e99e 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreManagerImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreManagerImpl.java
@@ -40,12 +40,16 @@ public class DataStoreManagerImpl implements DataStoreManager {
 
     @Override
     public DataStore getDataStore(long storeId, DataStoreRole role) {
-        if (role == DataStoreRole.Primary) {
-            return primaryStoreMgr.getPrimaryDataStore(storeId);
-        } else if (role == DataStoreRole.Image) {
-            return imageDataStoreMgr.getImageStore(storeId);
-        } else if (role == DataStoreRole.ImageCache) {
-            return imageDataStoreMgr.getImageStore(storeId);
+        try {
+            if (role == DataStoreRole.Primary) {
+                return primaryStoreMgr.getPrimaryDataStore(storeId);
+            } else if (role == DataStoreRole.Image) {
+                return imageDataStoreMgr.getImageStore(storeId);
+            } else if (role == DataStoreRole.ImageCache) {
+                return imageDataStoreMgr.getImageStore(storeId);
+            }
+        } catch (CloudRuntimeException e) {
+            throw e;
         }
         throw new CloudRuntimeException("un recognized type" + role);
     }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7db538ef/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/manager/PrimaryDataStoreProviderManagerImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/manager/PrimaryDataStoreProviderManagerImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/manager/PrimaryDataStoreProviderManagerImpl.java
index 06b54e0..db14f6d 100644
--- a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/manager/PrimaryDataStoreProviderManagerImpl.java
+++ b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/manager/PrimaryDataStoreProviderManagerImpl.java
@@ -36,6 +36,7 @@ import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 import org.springframework.stereotype.Component;
 
 import com.cloud.storage.StorageManager;
+import com.cloud.utils.exception.CloudRuntimeException;
 
 @Component
 public class PrimaryDataStoreProviderManagerImpl implements PrimaryDataStoreProviderManager {
@@ -55,6 +56,9 @@ public class PrimaryDataStoreProviderManagerImpl implements PrimaryDataStoreProv
     @Override
     public PrimaryDataStore getPrimaryDataStore(long dataStoreId) {
         StoragePoolVO dataStoreVO = dataStoreDao.findById(dataStoreId);
+        if (dataStoreVO == null) {
+            throw new CloudRuntimeException("Unable to locate datastore with id " + dataStoreId);
+        }
         String providerName = dataStoreVO.getStorageProviderName();
         DataStoreProvider provider = providerManager.getDataStoreProvider(providerName);
         PrimaryDataStoreImpl dataStore = PrimaryDataStoreImpl.createDataStore(dataStoreVO,