incubator-cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From h...@apache.org
Subject [45/50] [abbrv] git commit: Fix "Count" for listSnapshotPoliciesCmd.
Date Mon, 21 Jan 2013 11:18:49 GMT
Fix "Count" for listSnapshotPoliciesCmd.

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

Branch: refs/heads/cloud-agent-with-openvswitch
Commit: 2955d5897644a846755ceb9e7568eb65c6f9faa8
Parents: e8c0c1a
Author: Min Chen <min.chen@citrix.com>
Authored: Fri Jan 18 13:55:11 2013 -0800
Committer: Min Chen <min.chen@citrix.com>
Committed: Fri Jan 18 13:55:11 2013 -0800

----------------------------------------------------------------------
 .../cloud/storage/snapshot/SnapshotService.java    |    2 +-
 .../user/snapshot/ListSnapshotPoliciesCmd.java     |    7 +-
 .../com/cloud/storage/dao/SnapshotPolicyDao.java   |    3 +
 .../cloud/storage/dao/SnapshotPolicyDaoImpl.java   |   30 ++++--
 .../storage/snapshot/SnapshotManagerImpl.java      |   96 ++++++++-------
 5 files changed, 79 insertions(+), 59 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2955d589/api/src/com/cloud/storage/snapshot/SnapshotService.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/storage/snapshot/SnapshotService.java b/api/src/com/cloud/storage/snapshot/SnapshotService.java
index 79041c4..18b8507 100644
--- a/api/src/com/cloud/storage/snapshot/SnapshotService.java
+++ b/api/src/com/cloud/storage/snapshot/SnapshotService.java
@@ -82,7 +82,7 @@ public interface SnapshotService {
      *            the command that specifies the volume criteria
      * @return list of snapshot policies
      */
-    List<? extends SnapshotPolicy> listPoliciesforVolume(ListSnapshotPoliciesCmd cmd);
+    Pair<List<? extends SnapshotPolicy>, Integer> listPoliciesforVolume(ListSnapshotPoliciesCmd
cmd);
 
     boolean deleteSnapshotPolicies(DeleteSnapshotPoliciesCmd cmd);
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2955d589/api/src/org/apache/cloudstack/api/command/user/snapshot/ListSnapshotPoliciesCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/user/snapshot/ListSnapshotPoliciesCmd.java
b/api/src/org/apache/cloudstack/api/command/user/snapshot/ListSnapshotPoliciesCmd.java
index 647c503..7c78bb7 100644
--- a/api/src/org/apache/cloudstack/api/command/user/snapshot/ListSnapshotPoliciesCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/snapshot/ListSnapshotPoliciesCmd.java
@@ -29,6 +29,7 @@ import org.apache.cloudstack.api.response.ListResponse;
 import org.apache.cloudstack.api.response.SnapshotPolicyResponse;
 import org.apache.cloudstack.api.response.VolumeResponse;
 import com.cloud.storage.snapshot.SnapshotPolicy;
+import com.cloud.utils.Pair;
 
 @APICommand(name = "listSnapshotPolicies", description="Lists snapshot policies.", responseObject=SnapshotPolicyResponse.class)
 public class ListSnapshotPoliciesCmd extends BaseListCmd {
@@ -63,15 +64,15 @@ public class ListSnapshotPoliciesCmd extends BaseListCmd {
 
     @Override
     public void execute(){
-        List<? extends SnapshotPolicy> result = _snapshotService.listPoliciesforVolume(this);
+        Pair<List<? extends SnapshotPolicy>, Integer> result = _snapshotService.listPoliciesforVolume(this);
         ListResponse<SnapshotPolicyResponse> response = new ListResponse<SnapshotPolicyResponse>();
         List<SnapshotPolicyResponse> policyResponses = new ArrayList<SnapshotPolicyResponse>();
-        for (SnapshotPolicy policy : result) {
+        for (SnapshotPolicy policy : result.first()) {
             SnapshotPolicyResponse policyResponse = _responseGenerator.createSnapshotPolicyResponse(policy);
             policyResponse.setObjectName("snapshotpolicy");
             policyResponses.add(policyResponse);
         }
-        response.setResponses(policyResponses);
+        response.setResponses(policyResponses, result.second());
         response.setResponseName(getCommandName());
         this.setResponseObject(response);
     }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2955d589/server/src/com/cloud/storage/dao/SnapshotPolicyDao.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/dao/SnapshotPolicyDao.java b/server/src/com/cloud/storage/dao/SnapshotPolicyDao.java
index 9f8d170..467d491 100644
--- a/server/src/com/cloud/storage/dao/SnapshotPolicyDao.java
+++ b/server/src/com/cloud/storage/dao/SnapshotPolicyDao.java
@@ -20,6 +20,7 @@ import java.util.List;
 
 import com.cloud.storage.SnapshotPolicyVO;
 import com.cloud.utils.DateUtil.IntervalType;
+import com.cloud.utils.Pair;
 import com.cloud.utils.db.Filter;
 import com.cloud.utils.db.GenericDao;
 
@@ -29,6 +30,8 @@ import com.cloud.utils.db.GenericDao;
 public interface SnapshotPolicyDao extends GenericDao<SnapshotPolicyVO, Long> {
 	List<SnapshotPolicyVO> listByVolumeId(long volumeId);
 	List<SnapshotPolicyVO> listByVolumeId(long volumeId, Filter filter);
+    Pair<List<SnapshotPolicyVO>, Integer> listAndCountByVolumeId(long volumeId);
+    Pair<List<SnapshotPolicyVO>, Integer> listAndCountByVolumeId(long volumeId,
Filter filter);
 	SnapshotPolicyVO findOneByVolumeInterval(long volumeId, IntervalType intvType);
     List<SnapshotPolicyVO> listActivePolicies();
     SnapshotPolicyVO findOneByVolume(long volumeId);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2955d589/server/src/com/cloud/storage/dao/SnapshotPolicyDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/dao/SnapshotPolicyDaoImpl.java b/server/src/com/cloud/storage/dao/SnapshotPolicyDaoImpl.java
index 10eaaea..100d53b 100644
--- a/server/src/com/cloud/storage/dao/SnapshotPolicyDaoImpl.java
+++ b/server/src/com/cloud/storage/dao/SnapshotPolicyDaoImpl.java
@@ -23,6 +23,7 @@ import javax.ejb.Local;
 
 import com.cloud.storage.SnapshotPolicyVO;
 import com.cloud.utils.DateUtil.IntervalType;
+import com.cloud.utils.Pair;
 import com.cloud.utils.db.Filter;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.SearchBuilder;
@@ -33,7 +34,7 @@ public class SnapshotPolicyDaoImpl extends GenericDaoBase<SnapshotPolicyVO,
Long
 	private final SearchBuilder<SnapshotPolicyVO> VolumeIdSearch;
 	private final SearchBuilder<SnapshotPolicyVO> VolumeIdIntervalSearch;
 	private final SearchBuilder<SnapshotPolicyVO> ActivePolicySearch;
-	
+
 	@Override
 	public SnapshotPolicyVO findOneByVolumeInterval(long volumeId, IntervalType intvType) {
 		SearchCriteria<SnapshotPolicyVO> sc = VolumeIdIntervalSearch.create();
@@ -41,7 +42,7 @@ public class SnapshotPolicyDaoImpl extends GenericDaoBase<SnapshotPolicyVO,
Long
         sc.setParameters("interval", intvType.ordinal());
 		return findOneBy(sc);
 	}
-	
+
    @Override
     public SnapshotPolicyVO findOneByVolume(long volumeId) {
         SearchCriteria<SnapshotPolicyVO> sc = VolumeIdSearch.create();
@@ -49,12 +50,12 @@ public class SnapshotPolicyDaoImpl extends GenericDaoBase<SnapshotPolicyVO,
Long
         sc.setParameters("active", true);
         return findOneBy(sc);
     }
-	
+
 	@Override
 	public List<SnapshotPolicyVO> listByVolumeId(long volumeId) {
 		return listByVolumeId(volumeId, null);
 	}
-	
+
     @Override
     public List<SnapshotPolicyVO> listByVolumeId(long volumeId, Filter filter) {
         SearchCriteria<SnapshotPolicyVO> sc = VolumeIdSearch.create();
@@ -62,18 +63,31 @@ public class SnapshotPolicyDaoImpl extends GenericDaoBase<SnapshotPolicyVO,
Long
         sc.setParameters("active", true);
         return listBy(sc, filter);
     }
-	
+
+    @Override
+    public Pair<List<SnapshotPolicyVO>, Integer> listAndCountByVolumeId(long
volumeId) {
+        return listAndCountByVolumeId(volumeId, null);
+    }
+
+    @Override
+    public Pair<List<SnapshotPolicyVO>, Integer> listAndCountByVolumeId(long
volumeId, Filter filter) {
+        SearchCriteria<SnapshotPolicyVO> sc = VolumeIdSearch.create();
+        sc.setParameters("volumeId", volumeId);
+        sc.setParameters("active", true);
+        return searchAndCount(sc, filter);
+    }
+
     protected SnapshotPolicyDaoImpl() {
         VolumeIdSearch = createSearchBuilder();
         VolumeIdSearch.and("volumeId", VolumeIdSearch.entity().getVolumeId(), SearchCriteria.Op.EQ);
         VolumeIdSearch.and("active", VolumeIdSearch.entity().isActive(), SearchCriteria.Op.EQ);
         VolumeIdSearch.done();
-        
+
         VolumeIdIntervalSearch = createSearchBuilder();
         VolumeIdIntervalSearch.and("volumeId", VolumeIdIntervalSearch.entity().getVolumeId(),
SearchCriteria.Op.EQ);
         VolumeIdIntervalSearch.and("interval", VolumeIdIntervalSearch.entity().getInterval(),
SearchCriteria.Op.EQ);
         VolumeIdIntervalSearch.done();
-        
+
         ActivePolicySearch = createSearchBuilder();
         ActivePolicySearch.and("active", ActivePolicySearch.entity().isActive(), SearchCriteria.Op.EQ);
         ActivePolicySearch.done();
@@ -84,5 +98,5 @@ public class SnapshotPolicyDaoImpl extends GenericDaoBase<SnapshotPolicyVO,
Long
         SearchCriteria<SnapshotPolicyVO> sc = ActivePolicySearch.create();
         sc.setParameters("active", true);
         return listIncludingRemovedBy(sc);
-    }	
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2955d589/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
index 6a0f71d..15d8c53 100755
--- a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
+++ b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
@@ -69,6 +69,7 @@ import com.cloud.exception.StorageUnavailableException;
 import com.cloud.host.HostVO;
 import com.cloud.host.dao.HostDao;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
+import com.cloud.network.PhysicalNetworkTrafficType;
 import com.cloud.org.Grouping;
 import com.cloud.projects.Project.ListProjectResourcesCriteria;
 import com.cloud.resource.ResourceManager;
@@ -177,7 +178,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
     private SwiftManager _swiftMgr;
     @Inject
     private S3Manager _s3Mgr;
-    @Inject 
+    @Inject
     private SecondaryStorageVmManager _ssvmMgr;
     @Inject
     private ResourceManager _resourceMgr;
@@ -187,7 +188,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
     private VolumeDao _volumeDao;
     @Inject
     private ResourceTagDao _resourceTagDao;
-    
+
     String _name;
     private int _totalRetries;
     private int _pauseInterval;
@@ -197,15 +198,15 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
     protected SearchBuilder<SnapshotVO> PolicySnapshotSearch;
     protected SearchBuilder<SnapshotPolicyVO> PoliciesForSnapSearch;
 
-    
-    
+
+
     protected Answer sendToPool(Volume vol, Command cmd) {
         StoragePool pool = _storagePoolDao.findById(vol.getPoolId());
-        
+
         long[] hostIdsToTryFirst = null;
-        
+
         Long vmHostId = getHostIdForSnapshotOperation(vol);
-                
+
         if (vmHostId != null) {
             hostIdsToTryFirst = new long[] { vmHostId };
         }
@@ -280,7 +281,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         }
 
         ManageSnapshotCommand cmd = new ManageSnapshotCommand(snapshotId, volume.getPath(),
srcPool, preSnapshotPath, snapshot.getName(), vmName);
-      
+
         ManageSnapshotAnswer answer = (ManageSnapshotAnswer) sendToPool(volume, cmd);
         // Update the snapshot in the database
         if ((answer != null) && answer.getResult()) {
@@ -298,7 +299,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
                 _snapshotDao.update(snapshotId, snapshot);
             } else {
                 long preSnapshotId = 0;
-               
+
                 if (preSnapshotVO != null && preSnapshotVO.getBackupSnapshotId()
!= null) {
                     preSnapshotId = preId;
                     // default delta snap number is 16
@@ -322,7 +323,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
                         preSnapshotId = 0;
                     }
                 }
-                
+
                 //If the volume is moved around, backup a full snapshot to secondary storage
                 if (volume.getLastPoolId() != null && !volume.getLastPoolId().equals(volume.getPoolId()))
{
                 	preSnapshotId = 0;
@@ -359,24 +360,24 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
     @DB
     @ActionEvent(eventType = EventTypes.EVENT_SNAPSHOT_CREATE, eventDescription = "creating
snapshot", async = true)
     public SnapshotVO createSnapshot(Long volumeId, Long policyId, Long snapshotId, Account
snapshotOwner) {
-        VolumeVO volume = _volsDao.findById(volumeId);   
+        VolumeVO volume = _volsDao.findById(volumeId);
         if (volume == null) {
         	throw new InvalidParameterValueException("No such volume exist");
         }
-        
+
         if (volume.getState() != Volume.State.Ready) {
         	throw new InvalidParameterValueException("Volume is not in ready state");
         }
-        
+
         SnapshotVO snapshot = null;
-     
+
         boolean backedUp = false;
         UserVmVO uservm = null;
         // does the caller have the authority to act on this volume
         _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, volume);
-        
+
         try {
-    
+
             Long poolId = volume.getPoolId();
             if (poolId == null) {
                 throw new CloudRuntimeException("You cannot take a snapshot of a volume until
it has been attached to an instance");
@@ -387,7 +388,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
             	if (uservm != null && uservm.getType() != VirtualMachine.Type.User)
{
             		throw new CloudRuntimeException("Can't take a snapshot on system vm ");
             	}
-            	
+
                 StoragePoolVO storagePool = _storagePoolDao.findById(volume.getPoolId());
                 ClusterVO cluster = _clusterDao.findById(storagePool.getClusterId());
                 List<HostVO> hosts = _resourceMgr.listAllHostsInCluster(cluster.getId());
@@ -407,7 +408,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
                         throw new CloudRuntimeException("Creating snapshot failed due to
volume:" + volumeId + " is associated with vm:" + userVm.getInstanceName() + " is in "
                                 + userVm.getState().toString() + " state");
                     }
-                    
+
                     if(userVm.getHypervisorType() == HypervisorType.VMware || userVm.getHypervisorType()
== HypervisorType.KVM) {
                         List<SnapshotVO> activeSnapshots = _snapshotDao.listByInstanceId(volume.getInstanceId(),
Snapshot.Status.Creating,  Snapshot.Status.CreatedOnPrimary,  Snapshot.Status.BackingUp);
                         if(activeSnapshots.size() > 1)
@@ -560,7 +561,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         } catch (Exception e) {
             throw new CloudRuntimeException("downloadSnapshotsFromSwift failed due to " +
e.toString());
         }
-        
+
     }
 
     private List<String> determineBackupUuids(final SnapshotVO snapshot) {
@@ -630,9 +631,9 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
 
             Long dcId = volume.getDataCenterId();
             Long accountId = volume.getAccountId();
-            
+
             HostVO secHost = getSecHost(volumeId, volume.getDataCenterId());
-            
+
             String secondaryStoragePoolUrl = secHost.getStorageUrl();
             String snapshotUuid = snapshot.getPath();
             // In order to verify that the snapshot is not empty,
@@ -647,12 +648,12 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
             S3TO s3 = _s3Mgr.getS3TO();
 
             checkObjectStorageConfiguration(swift, s3);
-            
+
             long prevSnapshotId = snapshot.getPrevSnapshotId();
             if (prevSnapshotId > 0) {
                 prevSnapshot = _snapshotDao.findByIdIncludingRemoved(prevSnapshotId);
                 if ( prevSnapshot.getBackupSnapshotId() != null && swift == null)
{
-                    if (prevSnapshot.getVersion() != null && prevSnapshot.getVersion().equals("2.2"))
{                   
+                    if (prevSnapshot.getVersion() != null && prevSnapshot.getVersion().equals("2.2"))
{
                         prevBackupUuid = prevSnapshot.getBackupSnapshotId();
                         prevSnapshotUuid = prevSnapshot.getPath();
                     }
@@ -724,7 +725,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
 
     private HostVO getSecHost(long volumeId, long dcId) {
         Long id = _snapshotDao.getSecHostId(volumeId);
-        if ( id != null) { 
+        if ( id != null) {
             return _hostDao.findById(id);
         }
         return _storageMgr.getSecondaryStorageHost(dcId);
@@ -743,7 +744,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
     public void postCreateSnapshot(Long volumeId, Long snapshotId, Long policyId, boolean
backedUp) {
         Long userId = getSnapshotUserId();
         SnapshotVO snapshot = _snapshotDao.findById(snapshotId);
-        
+
         if (snapshot != null && snapshot.isRecursive()) {
             postCreateRecurringSnapshotForPolicy(userId, volumeId, snapshotId, policyId);
         }
@@ -783,13 +784,13 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         if (snapshotCheck == null) {
             throw new InvalidParameterValueException("unable to find a snapshot with id "
+ snapshotId);
         }
-        
+
         _accountMgr.checkAccess(caller, null, true, snapshotCheck);
-        
+
         if( !Status.BackedUp.equals(snapshotCheck.getStatus() ) ) {
             throw new InvalidParameterValueException("Can't delete snapshotshot " + snapshotId
+ " due to it is not in BackedUp Status");
         }
-        
+
         return deleteSnapshotInternal(snapshotId);
     }
 
@@ -943,7 +944,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         String snapshotTypeStr = cmd.getSnapshotType();
         String intervalTypeStr = cmd.getIntervalType();
         Map<String, String> tags = cmd.getTags();
-        
+
         Account caller = UserContext.current().getCaller();
         List<Long> permittedAccounts = new ArrayList<Long>();
 
@@ -959,8 +960,8 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
        _accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(), cmd.getProjectId(),
permittedAccounts, domainIdRecursiveListProject, cmd.listAll(), false);
        Long domainId = domainIdRecursiveListProject.first();
        Boolean isRecursive = domainIdRecursiveListProject.second();
-       ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
       
-        
+       ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
+
         Filter searchFilter = new Filter(SnapshotVO.class, "created", false, cmd.getStartIndex(),
cmd.getPageSizeVal());
         SearchBuilder<SnapshotVO> sb = _snapshotDao.createSearchBuilder();
         _accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
@@ -971,7 +972,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
         sb.and("snapshotTypeEQ", sb.entity().getsnapshotType(), SearchCriteria.Op.IN);
         sb.and("snapshotTypeNEQ", sb.entity().getsnapshotType(), SearchCriteria.Op.NEQ);
-        
+
         if (tags != null && !tags.isEmpty()) {
         SearchBuilder<ResourceTagVO> tagSearch = _resourceTagDao.createSearchBuilder();
         for (int count=0; count < tags.size(); count++) {
@@ -990,7 +991,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         if (volumeId != null) {
             sc.setParameters("volumeId", volumeId);
         }
-        
+
         if (tags != null && !tags.isEmpty()) {
             int count = 0;
             sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.Snapshot.toString());
@@ -1133,9 +1134,9 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         if (volume == null) {
             throw new InvalidParameterValueException("Failed to create snapshot policy, unable
to find a volume with id " + volumeId);
         }
-        
+
         _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, volume);
-        
+
         if (volume.getState() != Volume.State.Ready) {
             throw new InvalidParameterValueException("VolumeId: " + volumeId + " is not in
" + Volume.State.Ready + " state but " + volume.getState() + ". Cannot take snapshot.");
         }
@@ -1191,7 +1192,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         	if (owner.getType() == Account.ACCOUNT_TYPE_PROJECT) {
         		message = "domain/project";
         	}
-        	
+
             throw new InvalidParameterValueException("Max number of snapshots shouldn't exceed
the " + message + " level snapshot limit");
         }
 
@@ -1227,14 +1228,15 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
     }
 
     @Override
-    public List<SnapshotPolicyVO> listPoliciesforVolume(ListSnapshotPoliciesCmd cmd)
{
+    public Pair<List<? extends SnapshotPolicy>, Integer> listPoliciesforVolume(ListSnapshotPoliciesCmd
cmd) {
         Long volumeId = cmd.getVolumeId();
         VolumeVO volume = _volsDao.findById(volumeId);
         if (volume == null) {
             throw new InvalidParameterValueException("Unable to find a volume with id " +
volumeId);
         }
         _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, volume);
-        return listPoliciesforVolume(cmd.getVolumeId());
+        Pair<List<SnapshotPolicyVO>, Integer> result = _snapshotPolicyDao.listAndCountByVolumeId(volumeId);
+        return new Pair<List<? extends SnapshotPolicy>, Integer>(result.first(),
result.second());
     }
 
     @Override
@@ -1352,7 +1354,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
     @Override
     public SnapshotVO allocSnapshot(Long volumeId, Long policyId) throws ResourceAllocationException
{
         Account caller = UserContext.current().getCaller();
-        
+
         VolumeVO volume = _volsDao.findById(volumeId);
         if (volume == null) {
             throw new InvalidParameterValueException("Creating snapshot failed due to volume:"
+ volumeId + " doesn't exist");
@@ -1361,11 +1363,11 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         if (zone == null) {
             throw new InvalidParameterValueException("Can't find zone by id " + volume.getDataCenterId());
         }
-        
+
         if (Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(caller.getType()))
{
             throw new PermissionDeniedException("Cannot perform this operation, Zone is currently
disabled: " + zone.getName());
         }
-        
+
         if (volume.getState() != Volume.State.Ready) {
             throw new InvalidParameterValueException("VolumeId: " + volumeId + " is not in
" + Volume.State.Ready + " state but " + volume.getState() + ". Cannot take snapshot.");
         }
@@ -1376,7 +1378,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
                 throw new InvalidParameterValueException("VolumeId: " + volumeId + " is for
System VM , Creating snapshot against System VM volumes is not supported");
             }
         }
-        
+
         StoragePoolVO storagePoolVO = _storagePoolDao.findById(volume.getPoolId());
         if (storagePoolVO == null) {
             throw new InvalidParameterValueException("VolumeId: " + volumeId + " please attach
this volume to a VM before create snapshot for it");
@@ -1386,7 +1388,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         if (cluster != null && cluster.getHypervisorType() == HypervisorType.Ovm)
{
         	throw new InvalidParameterValueException("Ovm won't support taking snapshot");
         }
-        
+
         // Verify permissions
         _accountMgr.checkAccess(caller, null, true, volume);
         Type snapshotType = getSnapshotType(policyId);
@@ -1397,7 +1399,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         	if (snapshotType != Type.MANUAL){
         		String msg = "Snapshot resource limit exceeded for account id : " + owner.getId()
+ ". Failed to create recurring snapshots";
         		s_logger.warn(msg);
-        		_alertMgr.sendAlert(AlertManager.ALERT_TYPE_UPDATE_RESOURCE_COUNT, 0L, 0L, msg,

+        		_alertMgr.sendAlert(AlertManager.ALERT_TYPE_UPDATE_RESOURCE_COUNT, 0L, 0L, msg,
         				"Snapshot resource limit exceeded for account id : " + owner.getId() + ". Failed
to create recurring snapshots; please use updateResourceLimit to increase the limit");
         	}
         	throw e;
@@ -1415,7 +1417,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         String snapshotName = vmDisplayName + "_" + volume.getName() + "_" + timeString;
 
         // Create the Snapshot object and save it so we can return it to the
-        // user        
+        // user
         HypervisorType hypervisorType = this._volsDao.getHypervisorType(volumeId);
         SnapshotVO snapshotVO = new SnapshotVO(volume.getDataCenterId(), volume.getAccountId(),
volume.getDomainId(), volume.getId(), volume.getDiskOfferingId(), null, snapshotName,
                 (short) snapshotType.ordinal(), snapshotType.name(), volume.getSize(), hypervisorType);
@@ -1436,7 +1438,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         if (configDao == null) {
             throw new ConfigurationException("Unable to get the configuration dao.");
         }
-        
+
         String value = configDao.getValue(Config.BackupSnapshotWait.toString());
         _backupsnapshotwait = NumbersUtil.parseInt(value, Integer.parseInt(Config.BackupSnapshotWait.getDefaultValue()));
 
@@ -1533,7 +1535,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService,
Ma
         }
         return false;
     }
-    
+
     @Override
     public boolean canOperateOnVolume(VolumeVO volume) {
     	List<SnapshotVO> snapshots = _snapshotDao.listByStatus(volume.getId(), Status.Creating,
Status.CreatedOnPrimary, Status.BackingUp);


Mime
View raw message