Remove almost all VMTemplateHostDao references except S3Manager and
SwiftManager.

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

Branch: refs/heads/object_store
Commit: 0cfef3aa4e807f15408d3ed70d13bc0e96691ff0
Parents: 7543f31
Author: Min Chen <[email protected]>
Authored: Tue Apr 23 17:51:54 2013 -0700
Committer: Min Chen <[email protected]>
Committed: Tue Apr 23 17:51:54 2013 -0700

----------------------------------------------------------------------
 .../subsystem/api/storage/DataStoreManager.java    |    1 +
 .../storage/motion/AncientDataMotionStrategy.java  |   37 ++++++-------
 .../storage/datastore/DataStoreManagerImpl.java    |   13 +++++
 server/src/com/cloud/template/TemplateManager.java |    9 ---
 .../com/cloud/template/TemplateManagerImpl.java    |   42 +++------------
 5 files changed, 39 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0cfef3aa/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreManager.java
----------------------------------------------------------------------
diff --git 
a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreManager.java
 
b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreManager.java
index 096a1fd..4dca1ce 100644
--- 
a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreManager.java
+++ 
b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreManager.java
@@ -29,6 +29,7 @@ public interface DataStoreManager {
     public DataStore getPrimaryDataStore(long storeId);
     public DataStore getDataStore(String uuid, DataStoreRole role);
     public List<DataStore> getImageStoresByScope(ZoneScope scope);
+    public DataStore getImageStore(long zoneId);
     public List<DataStore> getImageStoresByProvider(String provider);
     public List<DataStore> getImageCacheStores(Scope scope);
     public DataStore registerDataStore(Map<String, String> params, String 
providerUuid);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0cfef3aa/engine/storage/datamotion/src/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/datamotion/src/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java
 
b/engine/storage/datamotion/src/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java
index b0229d8..826a3c7 100644
--- 
a/engine/storage/datamotion/src/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java
+++ 
b/engine/storage/datamotion/src/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java
@@ -27,6 +27,7 @@ import 
org.apache.cloudstack.engine.subsystem.api.storage.CopyCommandResult;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataMotionStrategy;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataObject;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectType;
+import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
 
 import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
@@ -38,6 +39,8 @@ import 
org.apache.cloudstack.framework.async.AsyncCompletionCallback;
 import org.apache.cloudstack.storage.command.CopyCommand;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
+import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
+import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
@@ -124,7 +127,7 @@ public class AncientDataMotionStrategy implements 
DataMotionStrategy {
     @Inject
     DataStoreManager dataStoreMgr;
     @Inject
-    VMTemplateHostDao templateHostDao;
+    TemplateDataStoreDao templateStoreDao;
     @Inject DiskOfferingDao diskOfferingDao;
     @Inject VMTemplatePoolDao templatePoolDao;
     @Inject
@@ -319,7 +322,7 @@ public class AncientDataMotionStrategy implements 
DataMotionStrategy {
     protected Answer cloneVolume(DataObject template, DataObject volume) {
         CopyCommand cmd = new CopyCommand(template.getTO(), volume.getTO(), 0);
         StoragePool pool = (StoragePool)volume.getDataStore();
-        
+
         try {
             Answer answer = storageMgr.sendToPool(pool, null, cmd);
             return answer;
@@ -399,7 +402,7 @@ public class AncientDataMotionStrategy implements 
DataMotionStrategy {
                answer = copyFromSnapshot(srcData, destData);
             } else if (srcData.getType() == DataObjectType.SNAPSHOT
                     && destData.getType() == DataObjectType.TEMPLATE) {
-               answer = createTemplateFromSnashot(srcData, destData);
+               answer = createTemplateFromSnapshot(srcData, destData);
             } else if (srcData.getType() == DataObjectType.VOLUME
                     && destData.getType() == DataObjectType.TEMPLATE) {
                answer = createTemplateFromVolume(srcData, destData);
@@ -425,7 +428,7 @@ public class AncientDataMotionStrategy implements 
DataMotionStrategy {
     }
 
     @DB
-    protected Answer createTemplateFromSnashot(DataObject srcData,
+    protected Answer createTemplateFromSnapshot(DataObject srcData,
             DataObject destData) {
         long snapshotId = srcData.getId();
         SnapshotVO snapshot = snapshotDao.findById(snapshotId);
@@ -434,8 +437,11 @@ public class AncientDataMotionStrategy implements 
DataMotionStrategy {
                     + srcData.getId());
         }
         Long zoneId = snapshot.getDataCenterId();
+        DataStore secStore = destData.getDataStore();
+        /*
         HostVO secondaryStorageHost = this.templateMgr
                 .getSecondaryStorageHost(zoneId);
+                */
         String secondaryStorageURL = snapshotMgr
                 .getSecondaryStorageURL(snapshot);
         VMTemplateVO template = this.templateDao.findById(destData.getId());
@@ -536,13 +542,12 @@ public class AncientDataMotionStrategy implements 
DataMotionStrategy {
                 origTemplateInstallPath, template.getId(), name,
                 _createprivatetemplatefromsnapshotwait);
 
-        return sendCommand(cmd, pool, template.getId(), dcId,
-                secondaryStorageHost.getId());
+        return sendCommand(cmd, pool, template.getId(), dcId, secStore);
     }
 
     @DB
     protected Answer sendCommand(Command cmd, StoragePool pool,
-            long templateId, long zoneId, long hostId) {
+            long templateId, long zoneId, DataStore secStore) {
 
         CreatePrivateTemplateAnswer answer = null;
         try {
@@ -573,7 +578,7 @@ public class AncientDataMotionStrategy implements 
DataMotionStrategy {
         }
 
         String checkSum = this.templateMgr
-                .getChecksum(hostId, answer.getPath());
+                .getChecksum(secStore, answer.getPath());
 
         Transaction txn = Transaction.currentTxn();
 
@@ -584,7 +589,7 @@ public class AncientDataMotionStrategy implements 
DataMotionStrategy {
 
         // add template zone ref for this template
         templateDao.addTemplateToZone(privateTemplate, zoneId);
-        VMTemplateHostVO templateHostVO = new VMTemplateHostVO(hostId,
+        TemplateDataStoreVO templateHostVO = new 
TemplateDataStoreVO(secStore.getId(),
                 privateTemplate.getId());
         templateHostVO.setDownloadPercent(100);
         templateHostVO.setDownloadState(Status.DOWNLOADED);
@@ -592,7 +597,7 @@ public class AncientDataMotionStrategy implements 
DataMotionStrategy {
         templateHostVO.setLastUpdated(new Date());
         templateHostVO.setSize(answer.getVirtualSize());
         templateHostVO.setPhysicalSize(answer.getphysicalSize());
-        templateHostDao.persist(templateHostVO);
+        templateStoreDao.persist(templateHostVO);
         txn.close();
         return answer;
     }
@@ -609,13 +614,8 @@ public class AncientDataMotionStrategy implements 
DataMotionStrategy {
 
         String vmName = this.volumeMgr.getVmNameOnVolume(volume);
         Long zoneId = volume.getDataCenterId();
-        HostVO secondaryStorageHost = this.templateMgr
-                .getSecondaryStorageHost(zoneId);
-        if (secondaryStorageHost == null) {
-            throw new CloudRuntimeException(
-                    "Can not find the secondary storage for zoneId " + zoneId);
-        }
-        String secondaryStorageURL = secondaryStorageHost.getStorageUrl();
+        DataStore secStore = destObj.getDataStore();
+        String secondaryStorageURL = secStore.getUri();
         VMTemplateVO template = this.templateDao.findById(destObj.getId());
         StoragePool pool = (StoragePool) this.dataStoreMgr.getDataStore(
                 volume.getPoolId(), DataStoreRole.Primary);
@@ -630,8 +630,7 @@ public class AncientDataMotionStrategy implements 
DataMotionStrategy {
                 template.getName(), template.getUniqueName(), volume.getPath(),
                 vmName, _createprivatetemplatefromvolumewait);
 
-        return sendCommand(cmd, pool, template.getId(), zoneId,
-                secondaryStorageHost.getId());
+        return sendCommand(cmd, pool, template.getId(), zoneId, secStore);
     }
 
     private HostVO getSecHost(long volumeId, long dcId) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0cfef3aa/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 fb14604..0ea653b 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreManagerImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreManagerImpl.java
@@ -33,6 +33,8 @@ import org.springframework.stereotype.Component;
 import com.cloud.storage.DataStoreRole;
 import com.cloud.utils.exception.CloudRuntimeException;
 
+import edu.emory.mathcs.backport.java.util.Collections;
+
 @Component
 public class DataStoreManagerImpl implements DataStoreManager {
     @Inject
@@ -74,6 +76,17 @@ public class DataStoreManagerImpl implements 
DataStoreManager {
     }
 
 
+
+    @Override
+    public DataStore getImageStore(long zoneId) {
+        List<DataStore> stores = getImageStoresByScope(new ZoneScope(zoneId));
+        if (stores == null || stores.size() == 0) {
+            return null;
+        }
+        Collections.shuffle(stores);
+        return stores.get(0);
+    }
+
     @Override
     public List<DataStore> getImageStoresByProvider(String provider) {
         return imageDataStoreMgr.listImageStoreByProvider(provider);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0cfef3aa/server/src/com/cloud/template/TemplateManager.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/TemplateManager.java 
b/server/src/com/cloud/template/TemplateManager.java
index f44c0a7..dedb0b4 100755
--- a/server/src/com/cloud/template/TemplateManager.java
+++ b/server/src/com/cloud/template/TemplateManager.java
@@ -18,8 +18,6 @@ package com.cloud.template;
 
 import java.util.List;
 
-import org.apache.cloudstack.api.command.user.iso.UpdateIsoCmd;
-import org.apache.cloudstack.api.command.user.template.UpdateTemplateCmd;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
@@ -100,13 +98,8 @@ public interface TemplateManager extends TemplateApiService{
 
     String getSecondaryStorageURL(long zoneId);
 
-    //HostVO getSecondaryStorageHost(long zoneId, long tmpltId);
-
     DataStore getImageStore(long zoneId, long tmpltId);
 
-   // VMTemplateHostVO getTemplateHostRef(long zoneId, long tmpltId,
-   //         boolean readyOnly);
-
     HostVO getSecondaryStorageHost(long zoneId);
 
     List<HostVO> getSecondaryStorageHosts(long zoneId);
@@ -115,8 +108,6 @@ public interface TemplateManager extends TemplateApiService{
 
     DataStore getImageStore(String storeUuid, Long zoneId);
 
-    String getChecksum(Long hostId, String templatePath);
-
     String getChecksum(DataStore store, String templatePath);
 
     List<DataStore> getImageStoreByTemplate(long templateId, Long zoneId);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0cfef3aa/server/src/com/cloud/template/TemplateManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java 
b/server/src/com/cloud/template/TemplateManagerImpl.java
index a9a43ba..abe467a 100755
--- a/server/src/com/cloud/template/TemplateManagerImpl.java
+++ b/server/src/com/cloud/template/TemplateManagerImpl.java
@@ -106,7 +106,6 @@ import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.exception.PermissionDeniedException;
 import com.cloud.exception.ResourceAllocationException;
 import com.cloud.exception.StorageUnavailableException;
-import com.cloud.host.Host;
 import com.cloud.host.HostVO;
 import com.cloud.host.dao.HostDao;
 import com.cloud.hypervisor.Hypervisor;
@@ -648,24 +647,6 @@ public class TemplateManagerImpl extends ManagerBase 
implements TemplateManager,
 
 
     @Override
-    public String getChecksum(Long hostId, String templatePath) {
-        HostVO ssHost = _hostDao.findById(hostId);
-        Host.Type type = ssHost.getType();
-        if (type != Host.Type.SecondaryStorage
-                && type != Host.Type.LocalSecondaryStorage) {
-            return null;
-        }
-        String secUrl = ssHost.getStorageUrl();
-        Answer answer;
-        answer = _agentMgr.sendToSecStorage(ssHost, new ComputeChecksumCommand(
-                secUrl, templatePath));
-        if (answer != null && answer.getResult()) {
-            return answer.getDetails();
-        }
-        return null;
-    }
-
-    @Override
     public String getChecksum(DataStore store, String templatePath) {
 
         String secUrl = store.getUri();
@@ -1741,35 +1722,26 @@ public class TemplateManagerImpl extends ManagerBase 
implements TemplateManager,
 
     @Override
     public String getSecondaryStorageURL(long zoneId) {
-        // Determine the secondary storage URL
-        HostVO secondaryStorageHost = getSecondaryStorageHost(zoneId);
-
-        if (secondaryStorageHost == null) {
+        DataStore secStore = this._dataStoreMgr.getImageStore(zoneId);
+        if (secStore == null) {
             return null;
         }
 
-        return secondaryStorageHost.getStorageUrl();
+        return secStore.getUri();
     }
 
     // get the image store where a template in a given zone is downloaded to, 
just pick one is enough.
     @Override
     public DataStore getImageStore(long zoneId, long tmpltId) {
-        List<DataStore> stores = this._dataStoreMgr.getImageStoresByScope(new 
ZoneScope(zoneId));
-        if (stores == null || stores.size() == 0) {
-            return null;
-        }
-        for (DataStore host : stores) {
-            List<TemplateDataStoreVO> tmpltStore = 
this._tmplStoreDao.listByTemplateStoreDownloadStatus(
-                    tmpltId, host.getId(), 
VMTemplateStorageResourceAssoc.Status.DOWNLOADED);
-            if ( tmpltStore != null && tmpltStore.size() > 0 ){
-                return host;
-            }
+        TemplateDataStoreVO tmpltStore = 
this._tmplStoreDao.findByTemplateZoneDownloadStatus(tmpltId, zoneId, 
VMTemplateStorageResourceAssoc.Status.DOWNLOADED);
+        if (tmpltStore != null){
+            return 
this._dataStoreMgr.getDataStore(tmpltStore.getDataStoreId(), 
DataStoreRole.Image);
         }
+
         return null;
     }
 
 
-
     @Override
     public HostVO getSecondaryStorageHost(long zoneId) {
         List<HostVO> hosts = _ssvmMgr

Reply via email to