Updated Branches:
  refs/heads/object_store 4cd3903c9 -> 06b309208

Remove VMTemplateHostDao reference from VolumeManagerImpl,
StorageManagerImpl and SecondaryStorageManagerImpl.

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

Branch: refs/heads/object_store
Commit: 06b30920837805053b76c84aaf817e1efd1d20f7
Parents: 4cd3903
Author: Min Chen <[email protected]>
Authored: Tue Apr 23 12:10:40 2013 -0700
Committer: Min Chen <[email protected]>
Committed: Tue Apr 23 12:10:40 2013 -0700

----------------------------------------------------------------------
 .../storage/datastore/db/TemplateDataStoreDao.java |    8 +-
 .../storage/image/db/TemplateDataStoreDaoImpl.java |   46 ++++-
 .../src/com/cloud/storage/StorageManagerImpl.java  |   25 +--
 .../src/com/cloud/storage/VolumeManagerImpl.java   |  166 ++++++--------
 .../secondary/SecondaryStorageManagerImpl.java     |   35 +---
 .../secondary/SecondaryStorageVmManager.java       |    2 +-
 6 files changed, 135 insertions(+), 147 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/06b30920/engine/api/src/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreDao.java
----------------------------------------------------------------------
diff --git 
a/engine/api/src/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreDao.java
 
b/engine/api/src/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreDao.java
index e948526..f08f76d 100644
--- 
a/engine/api/src/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreDao.java
+++ 
b/engine/api/src/org/apache/cloudstack/storage/datastore/db/TemplateDataStoreDao.java
@@ -23,7 +23,7 @@ import 
org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore;
 import 
org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine;
 
 
-import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
+import com.cloud.storage.VMTemplateStorageResourceAssoc;
 import com.cloud.utils.db.GenericDao;
 import com.cloud.utils.fsm.StateDao;
 
@@ -40,7 +40,11 @@ public interface TemplateDataStoreDao extends 
GenericDao<TemplateDataStoreVO, Lo
 
     List<TemplateDataStoreVO> listByTemplateStoreStatus(long templateId, long 
storeId, State... states);
 
-    List<TemplateDataStoreVO> listByTemplateStoreDownloadStatus(long 
templateId, long storeId, Status... status);
+    List<TemplateDataStoreVO> listByTemplateStoreDownloadStatus(long 
templateId, long storeId, VMTemplateStorageResourceAssoc.Status... status);
+
+    List<TemplateDataStoreVO> listByTemplateZoneDownloadStatus(long 
templateId, Long zoneId, VMTemplateStorageResourceAssoc.Status... status);
+
+    TemplateDataStoreVO findByTemplateZoneDownloadStatus(long templateId, Long 
zoneId, VMTemplateStorageResourceAssoc.Status... status);
 
     TemplateDataStoreVO findByStoreTemplate(long storeId, long templateId);
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/06b30920/engine/storage/src/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java
 
b/engine/storage/src/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java
index eccb02a..aa84821 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/image/db/TemplateDataStoreDaoImpl.java
@@ -15,21 +15,26 @@
 // specific language governing permissions and limitations
 // under the License.
 package org.apache.cloudstack.storage.image.db;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
 import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore;
+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.ObjectInDataStoreStateMachine.Event;
 import 
org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.State;
+import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope;
 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;
 
-import com.cloud.storage.VMTemplateHostVO;
+
 import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.SearchBuilder;
@@ -38,6 +43,8 @@ import com.cloud.utils.db.Transaction;
 import com.cloud.utils.db.SearchCriteria.Op;
 import com.cloud.utils.db.UpdateBuilder;
 
+import edu.emory.mathcs.backport.java.util.Collections;
+
 @Component
 public class TemplateDataStoreDaoImpl extends 
GenericDaoBase<TemplateDataStoreVO, Long> implements TemplateDataStoreDao {
     private static final Logger s_logger = 
Logger.getLogger(TemplateDataStoreDaoImpl.class);
@@ -49,6 +56,8 @@ public class TemplateDataStoreDaoImpl extends 
GenericDaoBase<TemplateDataStoreVO
     private SearchBuilder<TemplateDataStoreVO> 
storeTemplateDownloadStatusSearch;
 
 
+    @Inject private DataStoreManager _storeMgr;
+
     @Override
     public boolean configure(String name, Map<String, Object> params) throws 
ConfigurationException {
        super.configure(name, params);
@@ -197,6 +206,41 @@ public class TemplateDataStoreDaoImpl extends 
GenericDaoBase<TemplateDataStoreVO
         return search(sc, null);
     }
 
+
+    @Override
+    public List<TemplateDataStoreVO> listByTemplateZoneDownloadStatus(long 
templateId, Long zoneId, Status... status) {
+        // get all elgible image stores
+        List<DataStore> imgStores = this._storeMgr.getImageStoresByScope(new 
ZoneScope(zoneId));
+        if ( imgStores != null ){
+            List<TemplateDataStoreVO> result = new 
ArrayList<TemplateDataStoreVO>();
+            for (DataStore store : imgStores){
+                List<TemplateDataStoreVO> sRes = 
this.listByTemplateStoreDownloadStatus(templateId, store.getId(), status);
+                if ( sRes != null && sRes.size() > 0){
+                    result.addAll(sRes);
+                }
+            }
+            return result;
+        }
+        return null;
+    }
+
+
+    @Override
+    public TemplateDataStoreVO findByTemplateZoneDownloadStatus(long 
templateId, Long zoneId, Status... status) {
+        // get all elgible image stores
+        List<DataStore> imgStores = this._storeMgr.getImageStoresByScope(new 
ZoneScope(zoneId));
+        if ( imgStores != null ){
+            for (DataStore store : imgStores){
+                List<TemplateDataStoreVO> sRes = 
this.listByTemplateStoreDownloadStatus(templateId, store.getId(), status);
+                if ( sRes != null && sRes.size() > 0){
+                    Collections.shuffle(sRes);
+                    return sRes.get(0);
+                }
+            }
+        }
+        return null;
+    }
+
     @Override
     public TemplateDataStoreVO findByStoreTemplate(long storeId, long 
templateId) {
         SearchCriteria<TemplateDataStoreVO> sc = storeTemplateSearch.create();

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/06b30920/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 1a59f66..b91c87e 100755
--- a/server/src/com/cloud/storage/StorageManagerImpl.java
+++ b/server/src/com/cloud/storage/StorageManagerImpl.java
@@ -84,18 +84,14 @@ import org.springframework.stereotype.Component;
 
 import com.cloud.agent.AgentManager;
 import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.BackupSnapshotCommand;
 import com.cloud.agent.api.CleanupSnapshotBackupCommand;
 import com.cloud.agent.api.Command;
-import com.cloud.agent.api.ManageSnapshotCommand;
 import com.cloud.agent.api.StoragePoolInfo;
 import com.cloud.agent.api.storage.DeleteTemplateCommand;
 import com.cloud.agent.api.storage.DeleteVolumeCommand;
-import com.cloud.agent.manager.AgentAttache;
 import com.cloud.agent.manager.Commands;
 import com.cloud.alert.AlertManager;
 import com.cloud.api.ApiDBUtils;
-import com.cloud.async.AsyncJobManager;
 import com.cloud.capacity.Capacity;
 import com.cloud.capacity.CapacityManager;
 import com.cloud.capacity.CapacityState;
@@ -106,7 +102,6 @@ import com.cloud.cluster.ManagementServerHostVO;
 import com.cloud.configuration.Config;
 import com.cloud.configuration.ConfigurationManager;
 import com.cloud.configuration.dao.ConfigurationDao;
-import com.cloud.consoleproxy.ConsoleProxyManager;
 import com.cloud.dc.ClusterVO;
 import com.cloud.dc.DataCenterVO;
 import com.cloud.dc.HostPodVO;
@@ -134,12 +129,9 @@ import com.cloud.host.dao.HostDao;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.hypervisor.HypervisorGuruManager;
 import com.cloud.hypervisor.dao.HypervisorCapabilitiesDao;
-import com.cloud.network.NetworkModel;
 import com.cloud.org.Grouping;
 import com.cloud.org.Grouping.AllocationState;
-import com.cloud.resource.ResourceManager;
 import com.cloud.resource.ResourceState;
-import com.cloud.resource.ResourceStateAdapter;
 import com.cloud.server.ManagementServer;
 import com.cloud.server.StatsCollector;
 import com.cloud.service.dao.ServiceOfferingDao;
@@ -152,25 +144,20 @@ import com.cloud.storage.dao.SnapshotPolicyDao;
 import com.cloud.storage.dao.StoragePoolHostDao;
 import com.cloud.storage.dao.StoragePoolWorkDao;
 import com.cloud.storage.dao.VMTemplateDao;
-import com.cloud.storage.dao.VMTemplateHostDao;
 import com.cloud.storage.dao.VMTemplatePoolDao;
 import com.cloud.storage.dao.VMTemplateS3Dao;
 import com.cloud.storage.dao.VMTemplateSwiftDao;
 import com.cloud.storage.dao.VolumeDao;
 import com.cloud.storage.dao.VolumeHostDao;
-import com.cloud.storage.download.DownloadMonitor;
 import com.cloud.storage.listener.StoragePoolMonitor;
 import com.cloud.storage.listener.VolumeStateListener;
 import com.cloud.storage.s3.S3Manager;
 import com.cloud.storage.secondary.SecondaryStorageVmManager;
 import com.cloud.storage.snapshot.SnapshotManager;
-import com.cloud.storage.snapshot.SnapshotScheduler;
 import com.cloud.tags.dao.ResourceTagDao;
 import com.cloud.template.TemplateManager;
 import com.cloud.user.Account;
 import com.cloud.user.AccountManager;
-import com.cloud.user.AccountVO;
-import com.cloud.user.ResourceLimitService;
 import com.cloud.user.User;
 import com.cloud.user.UserContext;
 import com.cloud.user.dao.AccountDao;
@@ -191,17 +178,13 @@ import com.cloud.utils.db.SearchCriteria;
 import com.cloud.utils.db.SearchCriteria.Op;
 import com.cloud.utils.db.Transaction;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.utils.fsm.NoTransitionException;
 import com.cloud.vm.DiskProfile;
 import com.cloud.vm.UserVmManager;
 import com.cloud.vm.VMInstanceVO;
 import com.cloud.vm.VirtualMachine.State;
-import com.cloud.vm.VirtualMachineManager;
 import com.cloud.vm.VirtualMachineProfile;
 import com.cloud.vm.VirtualMachineProfileImpl;
 import com.cloud.vm.dao.ConsoleProxyDao;
-import com.cloud.vm.dao.DomainRouterDao;
-import com.cloud.vm.dao.SecondaryStorageVmDao;
 import com.cloud.vm.dao.UserVmDao;
 import com.cloud.vm.dao.VMInstanceDao;
 
@@ -238,8 +221,6 @@ public class StorageManagerImpl extends ManagerBase 
implements StorageManager, C
     @Inject
     protected AlertManager _alertMgr;
     @Inject
-    protected VMTemplateHostDao _vmTemplateHostDao = null;
-    @Inject
     protected VMTemplatePoolDao _vmTemplatePoolDao = null;
     @Inject
     protected VMTemplateSwiftDao _vmTemplateSwiftDao = null;
@@ -286,8 +267,6 @@ public class StorageManagerImpl extends ManagerBase 
implements StorageManager, C
     @Inject
     protected VMTemplateDao _templateDao;
     @Inject
-    protected VMTemplateHostDao _templateHostDao;
-    @Inject
     protected ServiceOfferingDao _offeringDao;
     @Inject
     protected DomainDao _domainDao;
@@ -1291,14 +1270,14 @@ public class StorageManagerImpl extends ManagerBase 
implements StorageManager, C
                                         + ((answer == null) ? "answer is null"
                                                 : answer.getDetails()));
                             } else {
-                                _vmTemplateHostDao
+                                _templateStoreDao
                                         
.remove(destroyedTemplateStoreVO.getId());
                                 s_logger.debug("Deleted template at: "
                                         + destroyedTemplateStoreVO
                                                 .getInstallPath());
                             }
                         } else {
-                            _vmTemplateHostDao.remove(destroyedTemplateStoreVO
+                            _templateStoreDao.remove(destroyedTemplateStoreVO
                                     .getId());
                         }
                     }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/06b30920/server/src/com/cloud/storage/VolumeManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/VolumeManagerImpl.java 
b/server/src/com/cloud/storage/VolumeManagerImpl.java
index 4a7a140..dcad55b 100644
--- a/server/src/com/cloud/storage/VolumeManagerImpl.java
+++ b/server/src/com/cloud/storage/VolumeManagerImpl.java
@@ -59,6 +59,8 @@ import 
org.apache.cloudstack.engine.subsystem.api.storage.VolumeService.VolumeAp
 import org.apache.cloudstack.framework.async.AsyncCallFuture;
 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;
 
@@ -215,7 +217,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
     @Inject
     protected AlertManager _alertMgr;
     @Inject
-    protected VMTemplateHostDao _vmTemplateHostDao = null;
+    protected TemplateDataStoreDao _vmTemplateStoreDao = null;
     @Inject
     protected VMTemplatePoolDao _vmTemplatePoolDao = null;
     @Inject
@@ -253,8 +255,6 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
     @Inject
     protected VMTemplateDao _templateDao;
     @Inject
-    protected VMTemplateHostDao _templateHostDao;
-    @Inject
     protected ServiceOfferingDao _offeringDao;
     @Inject
     protected DomainDao _domainDao;
@@ -318,12 +318,11 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
     private int _customDiskOfferingMaxSize = 1024;
     private long _maxVolumeSizeInGb;
     private boolean _recreateSystemVmEnabled;
-    protected SearchBuilder<VMTemplateHostVO> HostTemplateStatesSearch;
-    
+
     public VolumeManagerImpl() {
         _volStateMachine = Volume.State.getStateMachine();
     }
-    
+
     @Override
     public VolumeInfo moveVolume(VolumeInfo volume, long destPoolDcId,
             Long destPoolPodId, Long destPoolClusterId,
@@ -341,7 +340,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         dskCh.setHyperType(dataDiskHyperType);
         DataCenterVO destPoolDataCenter = _dcDao.findById(destPoolDcId);
         HostPodVO destPoolPod = _podDao.findById(destPoolPodId);
-        
+
         StoragePool destPool = storageMgr.findStoragePool(dskCh,
                 destPoolDataCenter, destPoolPod, destPoolClusterId, null, null,
                 new HashSet<StoragePool>());
@@ -350,7 +349,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
             throw new CloudRuntimeException(
                     "Failed to find a storage pool with enough capacity to 
move the volume to.");
         }
-        
+
         Volume newVol = migrateVolume(volume, destPool);
         return this.volFactory.getVolume(newVol.getId());
     }
@@ -373,16 +372,16 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         DataStore store = this._tmpltMgr.getImageStore(imageStoreUuid, zoneId);
 
         validateVolume(caller, ownerId, zoneId, volumeName, url, format);
-        
+
         VolumeVO volume = persistVolume(caller, ownerId, zoneId, volumeName,
                 url, cmd.getFormat());
-        
+
         VolumeInfo vol = this.volFactory.getVolume(volume.getId());
-        
+
         RegisterVolumePayload payload = new 
RegisterVolumePayload(cmd.getUrl(), cmd.getChecksum(),
                 cmd.getFormat());
         vol.addPayload(payload);
-        
+
         this.volService.registerVolume(vol, store);
         return volume;
     }
@@ -478,7 +477,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
 
         return false;
     }
-    
+
     @Override
     public VolumeVO allocateDuplicateVolume(VolumeVO oldVol, Long templateId) {
         VolumeVO newVol = new VolumeVO(oldVol.getVolumeType(),
@@ -495,7 +494,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         newVol.setRecreatable(oldVol.isRecreatable());
         return _volsDao.persist(newVol);
     }
-    
+
     @DB
     protected VolumeInfo createVolumeFromSnapshot(VolumeVO volume,
             SnapshotVO snapshot) {
@@ -522,10 +521,10 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
             while ((pool = storageMgr.findStoragePool(dskCh, dc, pod.first(), 
null, null,
                     null, poolsToAvoid)) != null) {
                 break;
-                
+
             }
         }
-        
+
         VolumeInfo vol = this.volFactory.getVolume(volume.getId());
         DataStore store = this.dataStoreMgr.getDataStore(pool.getId(), 
DataStoreRole.Primary);
         SnapshotInfo snapInfo = 
this.snapshotFactory.getSnapshot(snapshot.getId());
@@ -551,22 +550,14 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
             VMTemplateVO template, DataCenterVO dc, DiskOfferingVO 
diskOffering) {
         if (volume.getVolumeType() == Type.ROOT
                 && Storage.ImageFormat.ISO != template.getFormat()) {
-            SearchCriteria<VMTemplateHostVO> sc = HostTemplateStatesSearch
-                    .create();
-            sc.setParameters("id", template.getId());
-            sc.setParameters(
-                    "state",
-                    
com.cloud.storage.VMTemplateStorageResourceAssoc.Status.DOWNLOADED);
-            sc.setJoinParameters("host", "dcId", dc.getId());
-
-            List<VMTemplateHostVO> sss = _vmTemplateHostDao.search(sc, null);
-            if (sss.size() == 0) {
+            TemplateDataStoreVO ss = 
this._vmTemplateStoreDao.findByTemplateZoneDownloadStatus(template.getId(), 
dc.getId(),
+                    VMTemplateStorageResourceAssoc.Status.DOWNLOADED);
+            if (ss == null) {
                 throw new CloudRuntimeException("Template "
                         + template.getName()
                         + " has not been completely downloaded to zone "
                         + dc.getId());
             }
-            VMTemplateHostVO ss = sss.get(0);
 
             return new DiskProfile(volume.getId(), volume.getVolumeType(),
                     volume.getName(), diskOffering.getId(), ss.getSize(),
@@ -586,7 +577,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
 
     protected VolumeVO createVolumeFromSnapshot(VolumeVO volume, long 
snapshotId) {
         VolumeInfo createdVolume = null;
-        SnapshotVO snapshot = _snapshotDao.findById(snapshotId); 
+        SnapshotVO snapshot = _snapshotDao.findById(snapshotId);
         createdVolume = createVolumeFromSnapshot(volume,
                 snapshot);
 
@@ -624,7 +615,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
             if (result.isFailed()) {
                 s_logger.debug("copy volume failed: " + result.getResult());
                 throw new CloudRuntimeException("copy volume failed: " + 
result.getResult());
-            } 
+            }
             return result.getVolume();
         } catch (InterruptedException e) {
             s_logger.debug("Failed to copy volume: " + volume.getId(), e);
@@ -642,11 +633,11 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
             DiskOfferingVO diskOffering, List<StoragePool> avoids,
             long size, HypervisorType hyperType) {
         StoragePool pool = null;
- 
+
         if (diskOffering != null && diskOffering.isCustomized()) {
             diskOffering.setDiskSize(size);
         }
-        
+
         DiskProfile dskCh = null;
         if (volume.getVolumeType() == Type.ROOT
                 && Storage.ImageFormat.ISO != template.getFormat()) {
@@ -657,7 +648,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         }
 
         dskCh.setHyperType(hyperType);
-        
+
         final HashSet<StoragePool> avoidPools = new HashSet<StoragePool>(
                 avoids);
 
@@ -702,11 +693,11 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         }
 
     }
-    
+
     public String getRandomVolumeName() {
         return UUID.randomUUID().toString();
     }
-    
+
     private VolumeVO persistVolume(Account caller, long ownerId, Long zoneId,
             String volumeName, String url, String format) {
 
@@ -749,7 +740,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         txn.commit();
         return volume;
     }
-    
+
     @Override
     public boolean volumeOnSharedStoragePool(VolumeVO volume) {
         Long poolId = volume.getPoolId();
@@ -1034,12 +1025,12 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
             throws ResourceAllocationException {
         Long newSize = null;
         boolean shrinkOk = cmd.getShrinkOk();
-        
+
         VolumeVO volume = _volsDao.findById(cmd.getEntityId());
         if (volume == null) {
             throw new InvalidParameterValueException("No such volume");
         }
-        
+
         DiskOfferingVO diskOffering = _diskOfferingDao.findById(volume
                 .getDiskOfferingId());
         DiskOfferingVO newDiskOffering = null;
@@ -1196,9 +1187,9 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
                         "VM must be stopped or disk detached in order to 
resize with the Xen HV");
             }
         }
-        
+
         ResizeVolumePayload payload = new ResizeVolumePayload(newSize, 
shrinkOk, instanceName, hosts);
-        
+
         try {
             VolumeInfo vol = this.volFactory.getVolume(volume.getId());
             vol.addPayload(payload);
@@ -1231,7 +1222,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
 
         return null;
     }
-    
+
     @Override
     @DB
     @ActionEvent(eventType = EventTypes.EVENT_VOLUME_DELETE, eventDescription 
= "deleting volume")
@@ -1271,7 +1262,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
                 if (!this.volService.destroyVolume(volume.getId())) {
                     return false;
                 }
-                
+
                 VMInstanceVO vmInstance = 
this._vmInstanceDao.findById(instanceId);
                 if (instanceId == null
                         || 
(vmInstance.getType().equals(VirtualMachine.Type.User))) {
@@ -1297,7 +1288,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
             }
             AsyncCallFuture<VolumeApiResult> future = 
this.volService.expungeVolumeAsync(this.volFactory.getVolume(volume.getId()));
             future.get();
-            
+
         } catch (Exception e) {
             s_logger.warn("Failed to expunge volume:", e);
             return false;
@@ -1413,7 +1404,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         }
         return toDiskProfile(vol, offering);
     }
- 
+
     private String getSupportedImageFormatForCluster(Long clusterId) {
         ClusterVO cluster = ApiDBUtils.findClusterById(clusterId);
 
@@ -1429,7 +1420,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
             return null;
         }
     }
-    
+
     private VolumeInfo copyVolume(StoragePoolVO rootDiskPool
             , VolumeInfo volume, VMInstanceVO vm, VMTemplateVO rootDiskTmplt, 
DataCenterVO dcVO,
             HostPodVO pod, DiskOfferingVO diskVO, ServiceOfferingVO svo, 
HypervisorType rootDiskHyperType) throws NoTransitionException {
@@ -1495,28 +1486,28 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
     private boolean needMoveVolume(VolumeVO rootVolumeOfVm, VolumeInfo volume) 
{
         DataStore storeForRootVol = 
this.dataStoreMgr.getPrimaryDataStore(rootVolumeOfVm.getPoolId());
         DataStore storeForDataVol = 
this.dataStoreMgr.getPrimaryDataStore(volume.getPoolId());
-        
+
         Scope storeForRootStoreScope = storeForRootVol.getScope();
         if (storeForRootStoreScope == null) {
             throw new CloudRuntimeException("Can't get scope of data store: " 
+ storeForRootVol.getId());
         }
-        
+
         Scope storeForDataStoreScope = storeForDataVol.getScope();
         if (storeForDataStoreScope == null) {
             throw new CloudRuntimeException("Can't get scope of data store: " 
+ storeForDataVol.getId());
         }
-        
+
         if (storeForDataStoreScope.getScopeType() == ScopeType.ZONE) {
             return false;
         }
-        
+
         if (storeForRootStoreScope.getScopeType() != 
storeForDataStoreScope.getScopeType()) {
             throw new CloudRuntimeException("Can't move volume between scope: 
" + storeForDataStoreScope.getScopeType() + " and " + 
storeForRootStoreScope.getScopeType());
         }
-       
+
         return !storeForRootStoreScope.isSameScope(storeForDataStoreScope);
     }
-    
+
     private VolumeVO sendAttachVolumeCommand(UserVmVO vm, VolumeVO volume, 
Long deviceId) {
         String errorMsg = "Failed to attach volume: " + volume.getName()
                 + " to VM: " + vm.getHostName();
@@ -1568,7 +1559,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
             throw new CloudRuntimeException(errorMsg);
         }
     }
-    
+
     private int getMaxDataVolumesSupported(UserVmVO vm) {
         Long hostId = vm.getHostId();
         if (hostId == null) {
@@ -1590,7 +1581,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
 
         return maxDataVolumesSupported.intValue();
     }
-    
+
     @Override
     @ActionEvent(eventType = EventTypes.EVENT_VOLUME_ATTACH, eventDescription 
= "attaching volume", async = true)
     public Volume attachVolumeToVM(AttachVolumeCmd command) {
@@ -1675,9 +1666,9 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         List<VMSnapshotVO> vmSnapshots = _vmSnapshotDao.findByVm(vmId);
         if(vmSnapshots.size() > 0){
             throw new InvalidParameterValueException(
-                    "Unable to attach volume, please specify a VM that does 
not have VM snapshots");           
+                    "Unable to attach volume, please specify a VM that does 
not have VM snapshots");
         }
-        
+
         // permission check
         _accountMgr.checkAccess(caller, null, true, volume, vm);
 
@@ -1711,7 +1702,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
                     + " to a " + rootDiskHyperType + " vm");
         }
 
-       
+
         deviceId = getDeviceId(vmId, deviceId);
         VolumeInfo volumeOnPrimaryStorage = volume;
         if (volume.getState().equals(Volume.State.Allocated)
@@ -1839,7 +1830,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         List<VMSnapshotVO> vmSnapshots = _vmSnapshotDao.findByVm(vmId);
         if(vmSnapshots.size() > 0){
             throw new InvalidParameterValueException(
-                    "Unable to detach volume, the specified volume is attached 
to a VM that has VM snapshots.");           
+                    "Unable to detach volume, the specified volume is attached 
to a VM that has VM snapshots.");
         }
 
         AsyncJobExecutor asyncExecutor = BaseAsyncJobExecutor
@@ -1906,10 +1897,10 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         }
     }
 
-    
 
-    
-    
+
+
+
 
     @DB
     protected VolumeVO switchVolume(VolumeVO existingVolume,
@@ -1950,13 +1941,13 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
 
     }
 
-    
+
     @Override
     public void release(VirtualMachineProfile<? extends VMInstanceVO> profile) 
{
         // add code here
     }
 
-   
+
     @Override
     @DB
     public void cleanupVolumes(long vmId) throws ConcurrentOperationException {
@@ -2001,7 +1992,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
     public Volume migrateVolume(MigrateVolumeCmd cmd) {
         Long volumeId = cmd.getVolumeId();
         Long storagePoolId = cmd.getStoragePoolId();
-        
+
         VolumeVO vol = _volsDao.findById(volumeId);
         if (vol == null) {
             throw new InvalidParameterValueException(
@@ -2034,8 +2025,8 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         return newVol;
     }
 
-    
-    
+
+
     @DB
     protected Volume migrateVolume(Volume volume, StoragePool destPool) {
         VolumeInfo vol = this.volFactory.getVolume(volume.getId());
@@ -2093,7 +2084,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         }
         return true;
     }
-    
+
     @Override
     public void prepareForMigration(
             VirtualMachineProfile<? extends VirtualMachine> vm,
@@ -2124,7 +2115,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         }
     }
 
-   
+
 
     private static enum VolumeTaskType {
         RECREATE,
@@ -2141,7 +2132,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
              this.volume = volume;
          }
     }
-    
+
     private List<VolumeTask> getTasks(List<VolumeVO> vols, Map<Volume, 
StoragePool> destVols) throws StorageUnavailableException {
         boolean recreate = _recreateSystemVmEnabled;
         List<VolumeTask> tasks = new ArrayList<VolumeTask>();
@@ -2229,11 +2220,11 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
                 tasks.add(task);
             }
         }
-        
+
         return tasks;
     }
-    
-    private Pair<VolumeVO, DataStore> recreateVolume(VolumeVO vol, 
VirtualMachineProfile<? extends VirtualMachine> vm, 
+
+    private Pair<VolumeVO, DataStore> recreateVolume(VolumeVO vol, 
VirtualMachineProfile<? extends VirtualMachine> vm,
             DeployDestination dest) throws StorageUnavailableException {
         VolumeVO newVol;
         boolean recreate = _recreateSystemVmEnabled;
@@ -2295,15 +2286,15 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
             throw new StorageUnavailableException("Unable to create "
                     + newVol + ":" + e.toString(), destPool.getId());
         }
-        
+
         return new Pair<VolumeVO, DataStore>(newVol, destPool);
     }
-    
+
     @Override
     public void prepare(VirtualMachineProfile<? extends VirtualMachine> vm,
             DeployDestination dest) throws StorageUnavailableException,
             InsufficientStorageCapacityException, ConcurrentOperationException 
{
-        
+
         if (dest == null) {
             if (s_logger.isDebugEnabled()) {
                 s_logger.debug("DeployDestination cannot be null, cannot 
prepare Volumes for the vm: "
@@ -2338,7 +2329,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
             vm.addDisk(new VolumeTO(vol, pool));
         }
     }
-    
+
     private Long getDeviceId(long vmId, Long deviceId) {
         // allocate deviceId
         List<VolumeVO> vols = _volsDao.findByInstance(vmId);
@@ -2365,16 +2356,16 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
             }
             deviceId = Long.parseLong(devIds.iterator().next());
         }
-        
+
         return deviceId;
     }
- 
+
     private boolean stateTransitTo(Volume vol, Volume.Event event)
             throws NoTransitionException {
         return _volStateMachine.transitTo(vol, event, null, _volsDao);
     }
 
-    
+
     private String validateUrl(String url) {
         try {
             URI uri = new URI(url);
@@ -2416,7 +2407,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         }
 
     }
-    
+
     @Override
     public boolean canVmRestartOnAnotherServer(long vmId) {
         List<VolumeVO> vols = _volsDao.findCreatedByInstance(vmId);
@@ -2427,7 +2418,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         }
         return true;
     }
-    
+
     @Override
     public boolean configure(String name, Map<String, Object> params)
             throws ConfigurationException {
@@ -2448,21 +2439,6 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
         _copyvolumewait = NumbersUtil.parseInt(value,
                 Integer.parseInt(Config.CopyVolumeWait.getDefaultValue()));
 
-        HostTemplateStatesSearch = _vmTemplateHostDao.createSearchBuilder();
-        HostTemplateStatesSearch.and("id", HostTemplateStatesSearch.entity()
-                .getTemplateId(), SearchCriteria.Op.EQ);
-        HostTemplateStatesSearch.and("state", HostTemplateStatesSearch.entity()
-                .getDownloadState(), SearchCriteria.Op.EQ);
-
-        SearchBuilder<HostVO> HostSearch = _hostDao.createSearchBuilder();
-        HostSearch.and("dcId", HostSearch.entity().getDataCenterId(),
-                SearchCriteria.Op.EQ);
-
-        HostTemplateStatesSearch.join("host", HostSearch, HostSearch.entity()
-                .getId(), HostTemplateStatesSearch.entity().getHostId(),
-                JoinBuilder.JoinType.INNER);
-        HostSearch.done();
-        HostTemplateStatesSearch.done();
         return true;
     }
 
@@ -2480,7 +2456,7 @@ public class VolumeManagerImpl extends ManagerBase 
implements VolumeManager {
     public String getName() {
         return "Volume Manager";
     }
-    
+
     @Override
     public void destroyVolume(VolumeVO volume) {
         try {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/06b30920/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 7aa4efb..f19ca30 100755
--- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
+++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
@@ -31,14 +31,10 @@ 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.cloudstack.engine.subsystem.api.storage.Scope;
 import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope;
 import org.apache.cloudstack.storage.datastore.db.ImageStoreDao;
 import org.apache.cloudstack.storage.datastore.db.ImageStoreVO;
 import org.apache.log4j.Logger;
-import org.springframework.context.annotation.Primary;
-import org.springframework.stereotype.Component;
-
 import com.cloud.agent.AgentManager;
 import com.cloud.agent.api.Answer;
 import com.cloud.agent.api.Command;
@@ -101,19 +97,12 @@ import com.cloud.resource.ServerResource;
 import com.cloud.resource.UnableDeleteHostException;
 import com.cloud.service.ServiceOfferingVO;
 import com.cloud.service.dao.ServiceOfferingDao;
-import com.cloud.storage.DataStoreRole;
-import com.cloud.storage.ScopeType;
-import com.cloud.storage.SnapshotVO;
 import com.cloud.storage.Storage;
-import com.cloud.storage.VMTemplateHostVO;
 import com.cloud.storage.VMTemplateVO;
-import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
 import com.cloud.storage.dao.SnapshotDao;
 import com.cloud.storage.dao.StoragePoolHostDao;
 import com.cloud.storage.dao.VMTemplateDao;
-import com.cloud.storage.dao.VMTemplateHostDao;
 import com.cloud.storage.resource.DummySecondaryStorageResource;
-import com.cloud.storage.swift.SwiftManager;
 import com.cloud.storage.template.TemplateConstants;
 import com.cloud.template.TemplateManager;
 import com.cloud.user.Account;
@@ -194,21 +183,14 @@ public class SecondaryStorageManagerImpl extends 
ManagerBase implements Secondar
     private HostDao _hostDao;
     @Inject
     private StoragePoolHostDao _storagePoolHostDao;
-
-    @Inject
-    private VMTemplateHostDao _vmTemplateHostDao;
-
     @Inject
     private AgentManager _agentMgr;
     @Inject
-    protected SwiftManager _swiftMgr;
-    @Inject
     protected NetworkManager _networkMgr;
     @Inject
     protected NetworkModel _networkModel;
     @Inject
     protected SnapshotDao _snapshotDao;
-
     @Inject
     private ClusterManager _clusterMgr;
 
@@ -242,7 +224,7 @@ public class SecondaryStorageManagerImpl extends 
ManagerBase implements Secondar
     protected IPAddressDao _ipAddressDao = null;
     @Inject
     protected RulesManager _rulesMgr;
-    @Inject 
+    @Inject
     TemplateManager templateMgr;
 
     @Inject
@@ -367,6 +349,7 @@ public class SecondaryStorageManagerImpl extends 
ManagerBase implements Secondar
     }
 
 
+    /*
     @Override
     public boolean deleteHost(Long hostId) {
         List<SnapshotVO> snapshots = _snapshotDao.listByHostId(hostId);
@@ -387,6 +370,7 @@ public class SecondaryStorageManagerImpl extends 
ManagerBase implements Secondar
 
         return true;
     }
+    */
 
     @Override
     public boolean generateVMSetupCommand(Long ssAHostId) {
@@ -746,13 +730,13 @@ public class SecondaryStorageManagerImpl extends 
ManagerBase implements Secondar
                 s_logger.debug("No hypervisor host added  in zone " + 
dataCenterId + ", wait until it is ready to launch secondary storage vm");
                 return false;
             }
-            
+
             List<DataStore> stores = 
this._dataStoreMgr.getImageStoresByScope(new ZoneScope(dataCenterId));
             if (stores.size() < 1) {
                 s_logger.debug("No image store added  in zone " + dataCenterId 
+ ", wait until it is ready to launch secondary storage vm");
                 return false;
             }
-            
+
             DataStore store = templateMgr.getImageStore(dataCenterId, 
template.getId());
             if (store == null) {
                 if (s_logger.isDebugEnabled()) {
@@ -1390,10 +1374,11 @@ public class SecondaryStorageManagerImpl extends 
ManagerBase implements Secondar
 
        @Override
     public DeleteHostAnswer deleteHost(HostVO host, boolean isForced, boolean 
isForceDeleteStorage) throws UnableDeleteHostException {
-        if (host.getType() == Host.Type.SecondaryStorage) {
-            deleteHost(host.getId());
-            return new DeleteHostAnswer(false);
-        }
+           // Since secondary storage is moved out of host table, this class 
should not handle delete secondary storage anymore.
+        //if (host.getType() == Host.Type.SecondaryStorage) {
+        //    deleteHost(host.getId());
+        //    return new DeleteHostAnswer(false);
+        //}
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/06b30920/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 444727b..0756c72 100755
--- a/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java
+++ b/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java
@@ -47,7 +47,7 @@ public interface SecondaryStorageVmManager extends Manager {
 
        public Pair<HostVO, SecondaryStorageVmVO> assignSecStorageVm(long 
zoneId, Command cmd);
     boolean generateSetupCommand(Long hostId);
-    boolean deleteHost(Long hostId);
+    //boolean deleteHost(Long hostId);
     public HostVO findSecondaryStorageHost(long dcId);
     public List<HostVO> listSecondaryStorageHostsInAllZones();
     public List<HostVO> listSecondaryStorageHostsInOneZone(long dataCenterId);

Reply via email to