Populate system vm template to template_store_ref in adding an image
store.

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

Branch: refs/heads/object_store
Commit: 3c6b7c2a016fc9cf25dfae2cd2e74fab33244423
Parents: 881165e
Author: Min Chen <[email protected]>
Authored: Wed May 1 12:10:24 2013 -0700
Committer: Min Chen <[email protected]>
Committed: Wed May 1 12:10:24 2013 -0700

----------------------------------------------------------------------
 .../subsystem/api/storage/TemplateService.java     |    1 +
 .../storage/datastore/db/ImageStoreVO.java         |    4 +-
 .../storage/datastore/db/TemplateDataStoreVO.java  |   20 ++++++
 .../storage/image/TemplateServiceImpl.java         |   18 +++++
 .../storage/image/datastore/ImageStoreHelper.java  |    1 +
 .../vmware/manager/VmwareManagerImpl.java          |   10 ++-
 .../src/com/cloud/api/query/QueryManagerImpl.java  |    4 +-
 .../src/com/cloud/storage/StorageManagerImpl.java  |   21 ++++--
 server/src/com/cloud/storage/s3/S3ManagerImpl.java |   16 +++--
 .../secondary/SecondaryStorageManagerImpl.java     |   49 ++------------
 .../secondary/SecondaryStorageVmManager.java       |    7 --
 .../cloud/template/HypervisorTemplateAdapter.java  |   39 ++++--------
 12 files changed, 94 insertions(+), 96 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c6b7c2a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/TemplateService.java
----------------------------------------------------------------------
diff --git 
a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/TemplateService.java
 
b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/TemplateService.java
index dd017a1..b0f9f37 100644
--- 
a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/TemplateService.java
+++ 
b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/TemplateService.java
@@ -50,4 +50,5 @@ public interface TemplateService {
     void handleSysTemplateDownload(HypervisorType hostHyper, Long dcId);
     void handleTemplateSync(DataStore store);
     void downloadBootstrapSysTemplate(DataStore store);
+    void addSystemVMTemplatesToSecondary(DataStore store);
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c6b7c2a/engine/api/src/org/apache/cloudstack/storage/datastore/db/ImageStoreVO.java
----------------------------------------------------------------------
diff --git 
a/engine/api/src/org/apache/cloudstack/storage/datastore/db/ImageStoreVO.java 
b/engine/api/src/org/apache/cloudstack/storage/datastore/db/ImageStoreVO.java
index 676004b..8e6c6a8 100644
--- 
a/engine/api/src/org/apache/cloudstack/storage/datastore/db/ImageStoreVO.java
+++ 
b/engine/api/src/org/apache/cloudstack/storage/datastore/db/ImageStoreVO.java
@@ -60,7 +60,7 @@ public class ImageStoreVO implements ImageStore {
     private String providerName;
 
     @Column(name = "data_center_id")
-    private long dcId;
+    private Long dcId;
 
     @Column(name = "scope")
     @Enumerated(value = EnumType.STRING)
@@ -117,7 +117,7 @@ public class ImageStoreVO implements ImageStore {
         return this.protocol;
     }
 
-    public void setDataCenterId(long dcId) {
+    public void setDataCenterId(Long dcId) {
         this.dcId = dcId;
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c6b7c2a/engine/api/src/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreVO.java
----------------------------------------------------------------------
diff --git 
a/engine/api/src/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreVO.java
 
b/engine/api/src/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreVO.java
index 7d64544..6347e61 100755
--- 
a/engine/api/src/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreVO.java
+++ 
b/engine/api/src/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreVO.java
@@ -190,6 +190,26 @@ public class TemplateDataStoreVO implements 
StateObject<ObjectInDataStoreStateMa
                this.jobId = jobId;
                this.installPath = installPath;
                this.setDownloadUrl(downloadUrl);
+        switch (downloadState) {
+        case DOWNLOADED:
+            this.state = ObjectInDataStoreStateMachine.State.Ready;
+            break;
+        case CREATING:
+        case DOWNLOAD_IN_PROGRESS:
+        case UPLOAD_IN_PROGRESS:
+            this.state = ObjectInDataStoreStateMachine.State.Creating2;
+            break;
+        case DOWNLOAD_ERROR:
+        case UPLOAD_ERROR:
+            this.state = ObjectInDataStoreStateMachine.State.Failed;
+            break;
+        case ABANDONED:
+            this.state = ObjectInDataStoreStateMachine.State.Destroyed;
+            break;
+        default:
+            this.state = ObjectInDataStoreStateMachine.State.Allocated;
+            break;
+        }
        }
 
        public TemplateDataStoreVO() {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c6b7c2a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
 
b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
index cc9ad43..79555d4 100644
--- 
a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
+++ 
b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
@@ -18,8 +18,10 @@
  */
 package org.apache.cloudstack.storage.image;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -55,6 +57,7 @@ import 
org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
 import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreDao;
 import org.apache.cloudstack.storage.image.store.TemplateObject;
+import com.cloud.storage.template.TemplateConstants;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
@@ -549,4 +552,19 @@ public class TemplateServiceImpl implements 
TemplateService {
         return null;
     }
 
+
+    @Override
+    public void addSystemVMTemplatesToSecondary(DataStore store){
+        long storeId = store.getId();
+        List<VMTemplateVO> rtngTmplts = 
_templateDao.listAllSystemVMTemplates();
+        for ( VMTemplateVO tmplt : rtngTmplts ) {
+            TemplateDataStoreVO tmpltStore = 
this._vmTemplateStoreDao.findByStoreTemplate(storeId, tmplt.getId());
+            if ( tmpltStore == null ) {
+                tmpltStore = new TemplateDataStoreVO(storeId, tmplt.getId(), 
new Date(), 100, Status.DOWNLOADED, null, null, null, 
TemplateConstants.DEFAULT_SYSTEM_VM_TEMPLATE_PATH + tmplt.getId() + 
File.separator, tmplt.getUrl());
+                tmpltStore.setSize(0);
+                tmpltStore.setPhysicalSize(0); // no size information for 
pre-seeded system vm templates
+                _vmTemplateStoreDao.persist(tmpltStore);
+            }
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c6b7c2a/engine/storage/src/org/apache/cloudstack/storage/image/datastore/ImageStoreHelper.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/datastore/ImageStoreHelper.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/datastore/ImageStoreHelper.java
index 1d24f12..f43bc40 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/image/datastore/ImageStoreHelper.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/datastore/ImageStoreHelper.java
@@ -68,6 +68,7 @@ public class ImageStoreHelper {
         store.setProtocol((String)params.get("protocol"));
         store.setProviderName((String)params.get("providerName"));
         store.setScope((ScopeType)params.get("scope"));
+        store.setDataCenterId((Long)params.get("zoneId"));
         store.setUuid((String)params.get("uuid"));
         store.setUrl((String)params.get("url"));
         store.setRole((DataStoreRole)params.get("role"));

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c6b7c2a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
 
b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
index 4ae0d17..97f87b7 100755
--- 
a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
+++ 
b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
@@ -35,6 +35,8 @@ import javax.ejb.Local;
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
+import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
+import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.AgentManager;
@@ -97,6 +99,7 @@ import com.google.gson.Gson;
 import com.vmware.vim25.AboutInfo;
 import com.vmware.vim25.HostConnectSpec;
 import com.vmware.vim25.ManagedObjectReference;
+import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope;;
 
 
 @Local(value = {VmwareManager.class})
@@ -120,6 +123,7 @@ public class VmwareManagerImpl extends ManagerBase 
implements VmwareManager, Vmw
     @Inject CommandExecLogDao _cmdExecLogDao;
     @Inject ClusterManager _clusterMgr;
     @Inject SecondaryStorageVmManager _ssvmMgr;
+    @Inject DataStoreManager _dataStoreMgr;
     @Inject CiscoNexusVSMDeviceDao _nexusDao;
     @Inject ClusterVSMMapDao _vsmMapDao;
     @Inject ConfigurationDao _configDao;
@@ -426,9 +430,9 @@ public class VmwareManagerImpl extends ManagerBase 
implements VmwareManager, Vmw
     @Override
     public String getSecondaryStorageStoreUrl(long dcId) {
 
-        List<HostVO> secStorageHosts = 
_ssvmMgr.listSecondaryStorageHostsInOneZone(dcId);
-        if(secStorageHosts.size() > 0)
-            return secStorageHosts.get(0).getStorageUrl();
+        DataStore secStore = this._dataStoreMgr.getImageStore(dcId);
+        if(secStore != null)
+            return secStore.getUri();
 
         return null;
     }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c6b7c2a/server/src/com/cloud/api/query/QueryManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java 
b/server/src/com/cloud/api/query/QueryManagerImpl.java
index 4328e2a..234d410 100644
--- a/server/src/com/cloud/api/query/QueryManagerImpl.java
+++ b/server/src/com/cloud/api/query/QueryManagerImpl.java
@@ -2665,7 +2665,7 @@ public class QueryManagerImpl extends ManagerBase 
implements QueryService {
             }
 
             if (onlyReady){
-                sc.addAnd("downlaadState", SearchCriteria.Op.EQ, 
Status.DOWNLOADED);
+                sc.addAnd("downloadState", SearchCriteria.Op.EQ, 
Status.DOWNLOADED);
                 sc.addAnd("destroyed",  SearchCriteria.Op.EQ, false);
             }
 
@@ -2675,7 +2675,7 @@ public class QueryManagerImpl extends ManagerBase 
implements QueryService {
 
             if (!showDomr){
                 // excluding system template
-                sc.addAnd("type", SearchCriteria.Op.NEQ, 
Storage.TemplateType.SYSTEM);
+                sc.addAnd("templateType", SearchCriteria.Op.NEQ, 
Storage.TemplateType.SYSTEM);
             }
 
             // search unique templates and find details by Ids

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c6b7c2a/server/src/com/cloud/storage/StorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java 
b/server/src/com/cloud/storage/StorageManagerImpl.java
index 2eb9370..798ee56 100755
--- a/server/src/com/cloud/storage/StorageManagerImpl.java
+++ b/server/src/com/cloud/storage/StorageManagerImpl.java
@@ -1521,18 +1521,22 @@ public class StorageManagerImpl extends ManagerBase 
implements StorageManager, C
             sc.addAnd("dataCenterId", SearchCriteria.Op.EQ, zoneId);
         }
 
-        List<HostVO> hosts = new ArrayList<HostVO>();
+        List<Long> hosts = new ArrayList<Long>();
         if (hostId != null) {
-            hosts.add(ApiDBUtils.findHostById(hostId));
+            hosts.add(hostId);
         } else {
-            hosts = _ssvmMgr.listSecondaryStorageHostsInOneZone(zoneId);
-        }
+            List<DataStore> stores = 
this._dataStoreMgr.getImageStoresByScope(new ZoneScope(zoneId));
+            if (stores != null){
+                for (DataStore store : stores){
+                    hosts.add(store.getId());
+                }
+            }
+         }
 
         CapacityVO capacity = new CapacityVO(hostId, zoneId, null, null, 0, 0,
                 CapacityVO.CAPACITY_TYPE_SECONDARY_STORAGE);
-        for (HostVO host : hosts) {
-            StorageStats stats = ApiDBUtils.getSecondaryStorageStatistics(host
-                    .getId());
+        for (Long id : hosts) {
+            StorageStats stats = ApiDBUtils.getSecondaryStorageStatistics(id);
             if (stats == null) {
                 continue;
             }
@@ -1916,6 +1920,9 @@ public class StorageManagerImpl extends ManagerBase 
implements StorageManager, C
         if (((ImageStoreProvider) storeProvider).needDownloadSysTemplate()) {
             // trigger system vm template download
             this._imageSrv.downloadBootstrapSysTemplate(store);
+        } else {
+            // populate template_store_ref table
+            this._imageSrv.addSystemVMTemplatesToSecondary(store);
         }
 
         return (ImageStore) _dataStoreMgr.getDataStore(store.getId(), 
DataStoreRole.Image);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c6b7c2a/server/src/com/cloud/storage/s3/S3ManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/s3/S3ManagerImpl.java 
b/server/src/com/cloud/storage/s3/S3ManagerImpl.java
index cf236b8..1e8ad4f 100644
--- a/server/src/com/cloud/storage/s3/S3ManagerImpl.java
+++ b/server/src/com/cloud/storage/s3/S3ManagerImpl.java
@@ -48,6 +48,8 @@ import javax.naming.ConfigurationException;
 import org.apache.cloudstack.api.ApiConstants;
 import org.apache.cloudstack.api.command.admin.storage.AddS3Cmd;
 import org.apache.cloudstack.api.command.admin.storage.ListS3sCmd;
+import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
+import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
@@ -116,8 +118,9 @@ public class S3ManagerImpl extends ManagerBase implements 
S3Manager {
     @Inject
     private HostDao hostDao;
 
+
     @Inject
-    private SecondaryStorageVmManager secondaryStorageVMManager;
+    private DataStoreManager dataStoreManager;
 
     public S3ManagerImpl() {
     }
@@ -319,11 +322,10 @@ public class S3ManagerImpl extends ManagerBase implements 
S3Manager {
             return errorMessage;
         }
 
-        final HostVO secondaryStorageHost = secondaryStorageVMManager
-                .findSecondaryStorageHost(dataCenterId);
-        if (secondaryStorageHost == null) {
+        final DataStore secondaryStore = 
this.dataStoreManager.getImageStore(dataCenterId);
+        if (secondaryStore == null) {
             final String errorMessage = format(
-                    "Unable to find secondary storage host for zone id %1$s.",
+                    "Unable to find secondary storage for zone id %1$s.",
                     dataCenterId);
             LOGGER.error(errorMessage);
             throw new CloudRuntimeException(errorMessage);
@@ -331,7 +333,7 @@ public class S3ManagerImpl extends ManagerBase implements 
S3Manager {
 
         final long accountId = template.getAccountId();
         final DownloadTemplateFromS3ToSecondaryStorageCommand cmd = new 
DownloadTemplateFromS3ToSecondaryStorageCommand(
-                s3, accountId, templateId, secondaryStorageHost.getName(),
+                s3, accountId, templateId, secondaryStore.getName(),
                 primaryStorageDownloadWait);
 
         try {
@@ -358,7 +360,7 @@ public class S3ManagerImpl extends ManagerBase implements 
S3Manager {
                             asList("template", "tmpl", accountId,
                                     templateId), File.separator);
                     final VMTemplateHostVO tmpltHost = new VMTemplateHostVO(
-                            secondaryStorageHost.getId(), templateId,
+                            secondaryStore.getId(), templateId,
                             now(), 100, Status.DOWNLOADED, null, null,
                             null, installPath, template.getUrl());
                     tmpltHost.setSize(templateS3VO.getSize());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c6b7c2a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java 
b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
index c4fd848..a751746 100755
--- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
+++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
@@ -508,8 +508,8 @@ public class SecondaryStorageManagerImpl extends 
ManagerBase implements Secondar
     }
 
     protected Map<String, Object> createSecStorageVmInstance(long 
dataCenterId, SecondaryStorageVm.Role role) {
-        HostVO secHost = findSecondaryStorageHost(dataCenterId);
-        if (secHost == null) {
+        DataStore secStore = this._dataStoreMgr.getImageStore(dataCenterId);
+        if (secStore == null) {
             String msg = "No secondary storage available in zone " + 
dataCenterId + ", cannot create secondary storage vm";
             s_logger.warn(msg);
             throw new CloudRuntimeException(msg);
@@ -1019,8 +1019,8 @@ public class SecondaryStorageManagerImpl extends 
ManagerBase implements Secondar
         Map<String, String> details = _vmDetailsDao.findDetails(vm.getId());
         vm.setDetails(details);
 
-        HostVO secHost = 
_ssvmMgr.findSecondaryStorageHost(dest.getDataCenter().getId());
-        assert (secHost != null);
+        DataStore secStore = 
this._dataStoreMgr.getImageStore(dest.getDataCenter().getId());
+        assert (secStore != null);
 
         StringBuilder buf = profile.getBootArgsBuilder();
         buf.append(" template=domP type=secstorage");
@@ -1265,9 +1265,9 @@ public class SecondaryStorageManagerImpl extends 
ManagerBase implements Secondar
         List<SecondaryStorageVmVO> ssVms = 
_secStorageVmDao.getSecStorageVmListInStates(SecondaryStorageVm.Role.templateProcessor,
 dataCenterId, State.Running, State.Migrating,
                 State.Starting,  State.Stopped, State.Stopping );
         int vmSize = (ssVms == null)? 0 : ssVms.size();
-        List<HostVO> ssHosts = 
_ssvmMgr.listSecondaryStorageHostsInOneZone(dataCenterId);
-        int hostSize = (ssHosts == null)? 0 : ssHosts.size();
-        if ( hostSize > vmSize ) {
+        List<DataStore> ssStores = 
this._dataStoreMgr.getImageStoresByScope(new ZoneScope(dataCenterId));
+        int storeSize = (ssStores == null)? 0 : ssStores.size();
+        if ( storeSize > vmSize ) {
             s_logger.info("No secondary storage vms found in datacenter id=" + 
dataCenterId + ", starting a new one");
             return new Pair<AfterScanAction, Object>(AfterScanAction.expand, 
SecondaryStorageVm.Role.templateProcessor);
         }
@@ -1356,19 +1356,6 @@ public class SecondaryStorageManagerImpl extends 
ManagerBase implements Secondar
         return null;
     }
 
-       @Override
-    public HostVO findSecondaryStorageHost(long dcId) {
-               SearchCriteriaService<HostVO, HostVO> sc = 
SearchCriteria2.create(HostVO.class);
-           sc.addAnd(sc.getEntity().getType(), Op.EQ, 
Host.Type.SecondaryStorage);
-           sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId);
-           List<HostVO> storageHosts = sc.list();
-           if (storageHosts == null || storageHosts.size() < 1) {
-            return null;
-        } else {
-            Collections.shuffle(storageHosts);
-            return storageHosts.get(0);
-        }
-    }
 
        @Override
     public List<HostVO> listSecondaryStorageHostsInAllZones() {
@@ -1377,29 +1364,7 @@ public class SecondaryStorageManagerImpl extends 
ManagerBase implements Secondar
            return sc.list();
     }
 
-       @Override
-    public List<HostVO> listSecondaryStorageHostsInOneZone(long dataCenterId) {
-               SearchCriteriaService<HostVO, HostVO> sc = 
SearchCriteria2.create(HostVO.class);
-               sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, 
dataCenterId);
-               sc.addAnd(sc.getEntity().getType(), Op.EQ, 
Host.Type.SecondaryStorage);
-           return sc.list();
-    }
-
-       @Override
-    public List<HostVO> listLocalSecondaryStorageHostsInOneZone(long 
dataCenterId) {
-               SearchCriteriaService<HostVO, HostVO> sc = 
SearchCriteria2.create(HostVO.class);
-               sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, 
dataCenterId);
-               sc.addAnd(sc.getEntity().getType(), Op.EQ, 
Host.Type.LocalSecondaryStorage);
-           return sc.list();
-    }
 
-       @Override
-    public List<HostVO> listAllTypesSecondaryStorageHostsInOneZone(long 
dataCenterId) {
-               SearchCriteriaService<HostVO, HostVO> sc = 
SearchCriteria2.create(HostVO.class);
-               sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, 
dataCenterId);
-               sc.addAnd(sc.getEntity().getType(), Op.IN, 
Host.Type.LocalSecondaryStorage, Host.Type.SecondaryStorage);
-           return sc.list();
-    }
 
        @Override
     public List<HostVO> listUpAndConnectingSecondaryStorageVmHost(Long dcId) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c6b7c2a/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java
----------------------------------------------------------------------
diff --git 
a/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java 
b/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java
index 0756c72..e4651df 100755
--- a/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java
+++ b/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java
@@ -18,8 +18,6 @@ package com.cloud.storage.secondary;
 
 import java.util.List;
 
-import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
-
 import com.cloud.agent.api.Command;
 import com.cloud.agent.api.StartupCommand;
 import com.cloud.host.HostVO;
@@ -47,12 +45,7 @@ public interface SecondaryStorageVmManager extends Manager {
 
        public Pair<HostVO, SecondaryStorageVmVO> assignSecStorageVm(long 
zoneId, Command cmd);
     boolean generateSetupCommand(Long hostId);
-    //boolean deleteHost(Long hostId);
-    public HostVO findSecondaryStorageHost(long dcId);
     public List<HostVO> listSecondaryStorageHostsInAllZones();
-    public List<HostVO> listSecondaryStorageHostsInOneZone(long dataCenterId);
-    public List<HostVO> listLocalSecondaryStorageHostsInOneZone(long 
dataCenterId);
-    public List<HostVO> listAllTypesSecondaryStorageHostsInOneZone(long 
dataCenterId);
     public List<HostVO> listUpAndConnectingSecondaryStorageVmHost(Long dcId);
     public HostVO pickSsvmHost(HostVO ssHost);
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c6b7c2a/server/src/com/cloud/template/HypervisorTemplateAdapter.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/HypervisorTemplateAdapter.java 
b/server/src/com/cloud/template/HypervisorTemplateAdapter.java
index cb0bee9..ae1e178 100755
--- a/server/src/com/cloud/template/HypervisorTemplateAdapter.java
+++ b/server/src/com/cloud/template/HypervisorTemplateAdapter.java
@@ -31,7 +31,6 @@ import 
org.apache.cloudstack.api.command.user.iso.DeleteIsoCmd;
 import org.apache.cloudstack.api.command.user.iso.RegisterIsoCmd;
 import org.apache.cloudstack.api.command.user.template.DeleteTemplateCmd;
 import org.apache.cloudstack.api.command.user.template.RegisterTemplateCmd;
-import org.apache.cloudstack.engine.subsystem.api.storage.CommandResult;
 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.TemplateDataFactory;
@@ -47,38 +46,24 @@ import 
org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
 import org.apache.log4j.Logger;
 
 import com.cloud.agent.AgentManager;
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.storage.DeleteTemplateCommand;
 import com.cloud.alert.AlertManager;
 import com.cloud.configuration.Resource.ResourceType;
-import com.cloud.dc.DataCenterVO;
-import com.cloud.event.EventTypes;
-import com.cloud.event.UsageEventUtils;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.exception.ResourceAllocationException;
-import com.cloud.host.HostVO;
-import com.cloud.storage.ScopeType;
-import com.cloud.storage.Storage.ImageFormat;
 import com.cloud.storage.Storage.TemplateType;
-import com.cloud.storage.DataStoreRole;
 import com.cloud.storage.TemplateProfile;
-import com.cloud.storage.VMTemplateHostVO;
 import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
 import com.cloud.storage.VMTemplateVO;
-import com.cloud.storage.VMTemplateZoneVO;
 import com.cloud.storage.download.DownloadMonitor;
-import com.cloud.storage.secondary.SecondaryStorageVmManager;
 import com.cloud.user.Account;
 import com.cloud.utils.UriUtils;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.vm.UserVmVO;
 
 @Local(value=TemplateAdapter.class)
 public class HypervisorTemplateAdapter extends TemplateAdapterBase implements 
TemplateAdapter {
        private final static Logger s_logger = 
Logger.getLogger(HypervisorTemplateAdapter.class);
        @Inject DownloadMonitor _downloadMonitor;
-       @Inject SecondaryStorageVmManager _ssvmMgr;
        @Inject AgentManager _agentMgr;
 
     @Inject DataStoreManager storeMgr;
@@ -196,10 +181,10 @@ public class HypervisorTemplateAdapter extends 
TemplateAdapterBase implements Te
                     .createTemplateAsync(tmpl, imageStore, caller);
         }
         _resourceLimitMgr.incrementResourceCount(profile.getAccountId(), 
ResourceType.template);
-       
+
         return template;
     }
-       
+
        private class CreateTemplateContext<T> extends AsyncRpcConext<T> {
                final TemplateInfo template;
                public CreateTemplateContext(AsyncCompletionCallback<T> 
callback, TemplateInfo template) {
@@ -207,15 +192,15 @@ public class HypervisorTemplateAdapter extends 
TemplateAdapterBase implements Te
                        this.template = template;
                }
        }
-       
-       protected Void 
createTemplateAsyncCallBack(AsyncCallbackDispatcher<HypervisorTemplateAdapter, 
+
+       protected Void 
createTemplateAsyncCallBack(AsyncCallbackDispatcher<HypervisorTemplateAdapter,
                        TemplateApiResult> callback, 
CreateTemplateContext<TemplateApiResult> context) {
                TemplateInfo template = context.template;
                VMTemplateVO tmplt = this._tmpltDao.findById(template.getId());
                long accountId = tmplt.getAccountId();
                _resourceLimitMgr.incrementResourceCount(accountId, 
ResourceType.secondary_storage,
                                template.getSize());
-               
+
                return null;
        }
 
@@ -280,7 +265,8 @@ public class HypervisorTemplateAdapter extends 
TemplateAdapterBase implements Te
 
        }
 
-       public TemplateProfile prepareDelete(DeleteTemplateCmd cmd) {
+       @Override
+    public TemplateProfile prepareDelete(DeleteTemplateCmd cmd) {
                TemplateProfile profile = super.prepareDelete(cmd);
                VMTemplateVO template = (VMTemplateVO)profile.getTemplate();
                Long zoneId = profile.getZoneId();
@@ -289,19 +275,20 @@ public class HypervisorTemplateAdapter extends 
TemplateAdapterBase implements Te
                        throw new InvalidParameterValueException("The DomR 
template cannot be deleted.");
                }
 
-               if (zoneId != null && 
(_ssvmMgr.findSecondaryStorageHost(zoneId) == null)) {
-                       throw new InvalidParameterValueException("Failed to 
find a secondary storage host in the specified zone.");
+               if (zoneId != null && (this.storeMgr.getImageStore(zoneId) == 
null)) {
+                       throw new InvalidParameterValueException("Failed to 
find a secondary storage in the specified zone.");
                }
 
                return profile;
        }
 
-       public TemplateProfile prepareDelete(DeleteIsoCmd cmd) {
+       @Override
+    public TemplateProfile prepareDelete(DeleteIsoCmd cmd) {
                TemplateProfile profile = super.prepareDelete(cmd);
                Long zoneId = profile.getZoneId();
 
-               if (zoneId != null && 
(_ssvmMgr.findSecondaryStorageHost(zoneId) == null)) {
-               throw new InvalidParameterValueException("Failed to find a 
secondary storage host in the specified zone.");
+               if (zoneId != null && (this.storeMgr.getImageStore(zoneId) == 
null)) {
+               throw new InvalidParameterValueException("Failed to find a 
secondary storage in the specified zone.");
        }
 
                return profile;

Reply via email to