You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mc...@apache.org on 2013/10/29 04:53:33 UTC

[43/50] [abbrv] git commit: updated refs/heads/object_store_migration to 5ec2a44

ResourceDetails - added createDetail to ResourceDetailDao interface to provide generic way of creating resourceDetail DB objects


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

Branch: refs/heads/object_store_migration
Commit: e86b6127500d448ca72fa0dd6ffc76e42192632b
Parents: d0090a0
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Mon Oct 28 12:53:00 2013 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Mon Oct 28 12:53:53 2013 -0700

----------------------------------------------------------------------
 .../cloud/dc/dao/DataCenterDetailsDaoImpl.java  |  8 ++--
 .../src/com/cloud/dc/dao/ResourceDetailDao.java |  2 +
 .../network/dao/NetworkDetailsDaoImpl.java      |  5 ++
 .../dao/ServiceOfferingDetailsDaoImpl.java      |  7 ++-
 .../storage/dao/StoragePoolDetailsDaoImpl.java  |  5 ++
 .../storage/dao/VMTemplateDetailsDaoImpl.java   |  7 +--
 .../cloud/storage/dao/VolumeDetailsDaoImpl.java |  7 ++-
 .../src/com/cloud/vm/dao/NicDetailDaoImpl.java  |  6 ++-
 .../com/cloud/vm/dao/UserVmDetailsDaoImpl.java  |  7 ++-
 .../db/PrimaryDataStoreDetailsDaoImpl.java      |  8 ++--
 .../metadata/ResourceMetaDataManagerImpl.java   | 50 ++++++--------------
 11 files changed, 59 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e86b6127/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
index eb9176d..bc0621d 100644
--- a/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
@@ -28,9 +28,6 @@ import com.cloud.dc.DataCenterDetailVO;
 @Local(value=DataCenterDetailsDao.class)
 public class DataCenterDetailsDaoImpl extends ResourceDetailDaoBase<DataCenterDetailVO> implements DataCenterDetailsDao, ScopedConfigStorage {
     
-    public DataCenterDetailsDaoImpl() {
-    }
-    
     @Override
     public Scope getScope() {
         return ConfigKey.Scope.Zone;
@@ -42,4 +39,9 @@ public class DataCenterDetailsDaoImpl extends ResourceDetailDaoBase<DataCenterDe
         return vo == null ? null : vo.getValue();
     }
 
+    @Override
+    public DataCenterDetailVO createDetail(long resourceId, String key, String value) {
+        return new DataCenterDetailVO(resourceId, key, value);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e86b6127/engine/schema/src/com/cloud/dc/dao/ResourceDetailDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/dc/dao/ResourceDetailDao.java b/engine/schema/src/com/cloud/dc/dao/ResourceDetailDao.java
index 85d2c78..e47e6f3 100644
--- a/engine/schema/src/com/cloud/dc/dao/ResourceDetailDao.java
+++ b/engine/schema/src/com/cloud/dc/dao/ResourceDetailDao.java
@@ -37,4 +37,6 @@ public interface ResourceDetailDao<R extends ResourceDetail> extends GenericDao<
     public void addDetails(List<R> details);
     
     public void addDetail(R detail);
+    
+    public R createDetail(long resourceId, String key, String value);
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e86b6127/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
index 915e184..7f43f44 100644
--- a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
@@ -26,4 +26,9 @@ import com.cloud.dc.dao.ResourceDetailDaoBase;
 @Local(value=NetworkDetailsDao.class)
 public class NetworkDetailsDaoImpl extends ResourceDetailDaoBase<NetworkDetailVO> implements NetworkDetailsDao {
 
+    @Override
+    public NetworkDetailVO createDetail(long resourceId, String key, String value) {
+        return new NetworkDetailVO(resourceId, key, value);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e86b6127/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
index 6cac9da..96f1085 100644
--- a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
@@ -27,7 +27,10 @@ import com.cloud.service.ServiceOfferingDetailsVO;
 @Local(value=ServiceOfferingDetailsDao.class)
 public class ServiceOfferingDetailsDaoImpl extends ResourceDetailDaoBase<ServiceOfferingDetailsVO>
         implements ServiceOfferingDetailsDao {
-    public ServiceOfferingDetailsDaoImpl() {
-        
+
+    @Override
+    public ServiceOfferingDetailsVO createDetail(long resourceId, String key, String value) {
+        return new ServiceOfferingDetailsVO(resourceId, key, value);
     }
+    
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e86b6127/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
index 6d7991f..521f325 100644
--- a/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
@@ -42,4 +42,9 @@ public class StoragePoolDetailsDaoImpl extends ResourceDetailDaoBase<StoragePool
         StoragePoolDetailVO vo = findDetail(id, key.key());
         return vo == null ? null : vo.getValue();
     }
+
+    @Override
+    public StoragePoolDetailVO createDetail(long resourceId, String key, String value) {
+        return new StoragePoolDetailVO(resourceId, key, value);
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e86b6127/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
index 384b2d6..ad3f1d5 100644
--- a/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
@@ -26,8 +26,9 @@ import com.cloud.storage.VMTemplateDetailVO;
 @Component
 @Local(value = VMTemplateDetailsDao.class)
 public class VMTemplateDetailsDaoImpl extends ResourceDetailDaoBase<VMTemplateDetailVO> implements VMTemplateDetailsDao {
-    public VMTemplateDetailsDaoImpl(){
-        
+
+    @Override
+    public VMTemplateDetailVO createDetail(long resourceId, String key, String value) {
+        return new VMTemplateDetailVO(resourceId, key, value);
     }
-    
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e86b6127/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
index c62b66a..26fdd2f 100644
--- a/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
@@ -26,7 +26,10 @@ import com.cloud.storage.VolumeDetailVO;
 @Component
 @Local(value=VolumeDetailsDao.class)
 public class VolumeDetailsDaoImpl extends ResourceDetailDaoBase<VolumeDetailVO> implements VolumeDetailsDao {
-    public VolumeDetailsDaoImpl() {
-        
+
+    @Override
+    public VolumeDetailVO createDetail(long resourceId, String key, String value) {
+        return new VolumeDetailVO(resourceId, key, value);
     }
+    
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e86b6127/engine/schema/src/com/cloud/vm/dao/NicDetailDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/dao/NicDetailDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/NicDetailDaoImpl.java
index a009025..afab4fd 100644
--- a/engine/schema/src/com/cloud/vm/dao/NicDetailDaoImpl.java
+++ b/engine/schema/src/com/cloud/vm/dao/NicDetailDaoImpl.java
@@ -26,7 +26,9 @@ import com.cloud.vm.NicDetailVO;
 @Component
 @Local (value={NicDetailDao.class})
 public class NicDetailDaoImpl extends ResourceDetailDaoBase<NicDetailVO> implements NicDetailDao {
-    public NicDetailDaoImpl() {
-        
+
+    @Override
+    public NicDetailVO createDetail(long resourceId, String key, String value) {
+        return new NicDetailVO(resourceId, key, value);
     }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e86b6127/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
index ba72f25..2829192 100644
--- a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
@@ -26,7 +26,10 @@ import com.cloud.vm.UserVmDetailVO;
 @Component
 @Local(value=UserVmDetailsDao.class)
 public class UserVmDetailsDaoImpl extends ResourceDetailDaoBase<UserVmDetailVO> implements UserVmDetailsDao {
-    public UserVmDetailsDaoImpl() {
-        
+
+    @Override
+    public UserVmDetailVO createDetail(long resourceId, String key, String value) {
+        return new UserVmDetailVO(resourceId, key, value);
     }
+    
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e86b6127/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java b/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
index 13b19d0..a1470a3 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
@@ -25,8 +25,10 @@ import com.cloud.dc.dao.ResourceDetailDaoBase;
 @Component
 public class PrimaryDataStoreDetailsDaoImpl extends ResourceDetailDaoBase<PrimaryDataStoreDetailVO> implements
         PrimaryDataStoreDetailsDao {
-    
-    public PrimaryDataStoreDetailsDaoImpl() {
-        
+
+    @Override
+    public PrimaryDataStoreDetailVO createDetail(long resourceId, String key, String value) {
+        return new PrimaryDataStoreDetailVO(resourceId, key, value);
     }
+    
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e86b6127/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java b/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
index c94f32f..9a61a67 100644
--- a/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
+++ b/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
@@ -26,26 +26,20 @@ import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
 import org.apache.cloudstack.api.ResourceDetail;
-import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
-import com.cloud.dc.DataCenterDetailVO;
 import com.cloud.dc.dao.DataCenterDetailsDao;
 import com.cloud.dc.dao.ResourceDetailDao;
 import com.cloud.event.ActionEvent;
 import com.cloud.event.EventTypes;
 import com.cloud.exception.InvalidParameterValueException;
-import com.cloud.network.dao.NetworkDetailVO;
 import com.cloud.network.dao.NetworkDetailsDao;
 import com.cloud.server.ResourceMetaDataService;
 import com.cloud.server.ResourceTag.ResourceObjectType;
 import com.cloud.server.TaggedResourceService;
-import com.cloud.service.ServiceOfferingDetailsVO;
 import com.cloud.service.dao.ServiceOfferingDetailsDao;
-import com.cloud.storage.VMTemplateDetailVO;
-import com.cloud.storage.VolumeDetailVO;
 import com.cloud.storage.dao.VMTemplateDetailsDao;
 import com.cloud.storage.dao.VolumeDetailsDao;
 import com.cloud.utils.component.ManagerBase;
@@ -53,8 +47,6 @@ import com.cloud.utils.db.DB;
 import com.cloud.utils.db.Transaction;
 import com.cloud.utils.db.TransactionCallback;
 import com.cloud.utils.db.TransactionStatus;
-import com.cloud.vm.NicDetailVO;
-import com.cloud.vm.UserVmDetailVO;
 import com.cloud.vm.dao.NicDetailDao;
 import com.cloud.vm.dao.UserVmDetailsDao;
 
@@ -119,7 +111,6 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
             @Override
             public Boolean doInTransaction(TransactionStatus status) {
                 for (String key : details.keySet()) {
-                    long id = _taggedResourceMgr.getResourceId(resourceId, resourceType);
                     String value = details.get(key);
 
                     if (value == null || value.isEmpty()) {
@@ -127,33 +118,16 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
                     }
 
                     DetailDaoHelper newDetailDaoHelper = new DetailDaoHelper(resourceType);
-                    ResourceDetail detail = null;
+                    ResourceDetail detail = newDetailDaoHelper.createDetail( _taggedResourceMgr.getResourceId(resourceId, resourceType), key, value);
                     
-                    // TODO - Have a better design here for getting the DAO.
-                    if(resourceType == ResourceObjectType.Volume){
-                        detail = new VolumeDetailVO(id, key, value);
-                    } else if (resourceType == ResourceObjectType.Nic){
-                        detail = new NicDetailVO(id, key, value);
-                    } else if (resourceType == ResourceObjectType.Zone){
-                        detail = new DataCenterDetailVO(id, key, value);
-                    } else if (resourceType == ResourceObjectType.Network){
-                        detail = new NetworkDetailVO(id, key, value);
-                    } else if (resourceType == ResourceObjectType.UserVm) {
-                        detail = new UserVmDetailVO(id, key, value);
-                    } else if (resourceType == ResourceObjectType.Template) {
-                        detail = new VMTemplateDetailVO(id, key, value);
-                    } else if (resourceType == ResourceObjectType.ServiceOffering) {
-                        detail = new ServiceOfferingDetailsVO(id, key, value);
-                    } else if (resourceType == ResourceObjectType.Storage) {
-                        detail = new StoragePoolDetailVO(id, key, value);
-                    } else {
+                    if (detail == null) {
                         throw new UnsupportedOperationException("ResourceType " + resourceType + " doesn't support metadata");
+
                     }
                     newDetailDaoHelper.addDetail(detail);
                         
                 }
                 
-                
                 return true;
             }
         });
@@ -174,38 +148,42 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
 
     private class DetailDaoHelper {
         private ResourceObjectType resourceType;
+        private ResourceDetailDao<? super ResourceDetail> dao;
         
         private DetailDaoHelper(ResourceObjectType resourceType) {
             if (!resourceType.resourceMetadataSupport()) {
                 throw new UnsupportedOperationException("ResourceType " + resourceType + " doesn't support metadata");
             }
             this.resourceType = resourceType;
-        }
-        
-        private void addDetail(ResourceDetail detail) {
-            ResourceDetailDao<ResourceDetail> dao = (ResourceDetailDao<ResourceDetail>)_daoMap.get(resourceType);
+            ResourceDetailDao<?> dao = _daoMap.get(resourceType);
             if (dao == null) {
                 throw new UnsupportedOperationException("ResourceType " + resourceType + " doesn't support metadata");
             }
+            this.dao = (ResourceDetailDao)_daoMap.get(resourceType);
+        }
+        
+        private void addDetail(ResourceDetail detail) {
             dao.addDetail(detail);   
         }
         
         private void removeDetail(long resourceId, String key) {
-            ResourceDetailDao<? extends ResourceDetail> dao = _daoMap.get(resourceType);
             dao.removeDetail(resourceId, key);
         }
         
         private List<? extends ResourceDetail> getDetails(long resourceId) {
-            ResourceDetailDao<? extends ResourceDetail> dao = _daoMap.get(resourceType);
             List<? extends ResourceDetail> detailList = new ArrayList<ResourceDetail>();        
             detailList = dao.findDetailsList(resourceId);
             return detailList;
         }
         
         private ResourceDetail getDetail(long resourceId, String key) {
-            ResourceDetailDao<? extends ResourceDetail> dao = _daoMap.get(resourceType);
             return dao.findDetail(resourceId, key);
         }
+        
+        private ResourceDetail createDetail(long resourceId, String key, String value) {
+            return dao.createDetail(resourceId, key, value);
+        }
+        
     }
     
     @Override