mirror of https://github.com/apache/cloudstack.git
bug CS-10789: Decrement and increment the resource count on volume correctly.
This commit is contained in:
parent
6a056ad139
commit
8de5da1c91
|
|
@ -338,14 +338,6 @@ public class DownloadListener implements Listener {
|
|||
updateBuilder.setPhysicalSize(answer.getTemplatePhySicalSize());
|
||||
|
||||
volumeHostDao.update(getVolumeHostId(), updateBuilder);
|
||||
if (answer.getDownloadStatus() == Status.DOWNLOADED){
|
||||
try {
|
||||
_storageMgr.stateTransitTo(volume, Event.UploadSucceeded);
|
||||
} catch (NoTransitionException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
/*if (answer.getCheckSum() != null) {
|
||||
VMTemplateVO templateDaoBuilder = _vmTemplateDao.createForUpdate();
|
||||
templateDaoBuilder.setChecksum(answer.getCheckSum());
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ import com.cloud.storage.StorageManager;
|
|||
import com.cloud.storage.SwiftVO;
|
||||
import com.cloud.storage.VMTemplateHostVO;
|
||||
import com.cloud.storage.VMTemplateStorageResourceAssoc;
|
||||
import com.cloud.storage.Volume;
|
||||
import com.cloud.storage.VolumeHostVO;
|
||||
import com.cloud.storage.VolumeVO;
|
||||
import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
|
||||
|
|
@ -85,6 +86,7 @@ import com.cloud.storage.swift.SwiftManager;
|
|||
import com.cloud.storage.template.TemplateConstants;
|
||||
import com.cloud.storage.template.TemplateInfo;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.ResourceLimitService;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.JoinBuilder;
|
||||
|
|
@ -98,7 +100,6 @@ import com.cloud.vm.SecondaryStorageVmVO;
|
|||
import com.cloud.vm.UserVmManager;
|
||||
import com.cloud.vm.VirtualMachine.State;
|
||||
import com.cloud.vm.dao.SecondaryStorageVmDao;
|
||||
|
||||
import edu.emory.mathcs.backport.java.util.Collections;
|
||||
|
||||
|
||||
|
|
@ -160,6 +161,8 @@ public class DownloadMonitorImpl implements DownloadMonitor {
|
|||
private ResourceManager _resourceMgr;
|
||||
@Inject
|
||||
private SwiftDao _swiftDao;
|
||||
@Inject
|
||||
protected ResourceLimitService _resourceLimitMgr;
|
||||
|
||||
private String _name;
|
||||
private Boolean _sslCopy = new Boolean(false);
|
||||
|
|
@ -539,6 +542,15 @@ public class DownloadMonitorImpl implements DownloadMonitor {
|
|||
txn.start();
|
||||
|
||||
if (dnldStatus == Status.DOWNLOADED) {
|
||||
|
||||
// Do the volume state transition
|
||||
try {
|
||||
_storageMgr.stateTransitTo(volume, Event.UploadSucceeded);
|
||||
} catch (NoTransitionException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
//Create usage event
|
||||
long size = -1;
|
||||
if(volumeHost!=null){
|
||||
size = volumeHost.getPhysicalSize();
|
||||
|
|
@ -551,6 +563,15 @@ public class DownloadMonitorImpl implements DownloadMonitor {
|
|||
UsageEventVO usageEvent = new UsageEventVO(eventType, volume.getAccountId(), host.getDataCenterId(), volume.getId(), volume.getName(), null, 0l , size);
|
||||
_usageEventDao.persist(usageEvent);
|
||||
}
|
||||
}else if (dnldStatus == Status.DOWNLOAD_ERROR){
|
||||
//Transistion the volume state
|
||||
try {
|
||||
_storageMgr.stateTransitTo(volume, Volume.Event.OperationFailed);
|
||||
} catch (NoTransitionException e) {
|
||||
throw new CloudRuntimeException("Unable to update the failure on a volume: " + volume, e);
|
||||
}
|
||||
//Decrement the volume count
|
||||
_resourceLimitMgr.decrementResourceCount(volume.getAccountId(), com.cloud.configuration.Resource.ResourceType.volume);
|
||||
}
|
||||
txn.commit();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue