mirror of https://github.com/apache/cloudstack.git
bug 7768,7770: Corrected VM destroy events, removed duplicate completed event, added startId and started event
status 7768,7770: resolved fixed
This commit is contained in:
parent
fa84270b3e
commit
5ad07e899b
|
|
@ -34,6 +34,7 @@ import com.cloud.event.EventVO;
|
|||
import com.cloud.serializer.GsonHelper;
|
||||
import com.cloud.storage.VolumeVO;
|
||||
import com.cloud.storage.Volume.VolumeType;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.Transaction;
|
||||
import com.cloud.vm.UserVmVO;
|
||||
|
|
@ -58,7 +59,15 @@ public class DestroyVMExecutor extends VMOperationExecutor {
|
|||
return true;
|
||||
} else {
|
||||
VMOperationParam param = gson.fromJson(job.getCmdInfo(), VMOperationParam.class);
|
||||
asyncMgr.updateAsyncJobAttachment(job.getId(), "vm_instance", param.getVmId());
|
||||
asyncMgr.updateAsyncJobAttachment(job.getId(), "vm_instance", param.getVmId());
|
||||
EventVO event = new EventVO();
|
||||
event.setUserId(param.getUserId());
|
||||
event.setAccountId(Account.ACCOUNT_ID_SYSTEM);
|
||||
event.setStartId(param.getEventId());
|
||||
event.setState(EventState.Started);
|
||||
event.setType(EventTypes.EVENT_VM_DESTROY);
|
||||
event.setDescription("Starting to destroy VM with Id: " + param.getVmId());
|
||||
asyncMgr.getExecutorContext().getEventDao().persist(event);
|
||||
return asyncMgr.getExecutorContext().getVmMgr().executeDestroyVM(this, param);
|
||||
}
|
||||
}
|
||||
|
|
@ -77,7 +86,6 @@ public class DestroyVMExecutor extends VMOperationExecutor {
|
|||
event.setUserId(param.getUserId());
|
||||
event.setAccountId(vm.getAccountId());
|
||||
event.setState(EventState.Completed);
|
||||
event.setStartId(param.getEventId());
|
||||
event.setType(EventTypes.EVENT_VM_STOP);
|
||||
event.setParameters("id="+vm.getId() + "\nvmName=" + vm.getName() + "\nsoId=" + vm.getServiceOfferingId() + "\ntId=" + vm.getTemplateId() + "\ndcId=" + vm.getDataCenterId());
|
||||
|
||||
|
|
@ -87,14 +95,15 @@ public class DestroyVMExecutor extends VMOperationExecutor {
|
|||
|
||||
try {
|
||||
if(stopped) {
|
||||
asyncMgr.getExecutorContext().getVmMgr().completeStopCommand(param.getUserId(), vm, Event.OperationSucceeded, param.getEventId());
|
||||
asyncMgr.getExecutorContext().getVmMgr().completeStopCommand(param.getUserId(), vm, Event.OperationSucceeded, 0);
|
||||
// completeStopCommand will log the stop event, if we log it here we will end up with duplicated stop event
|
||||
Transaction txn = Transaction.currentTxn();
|
||||
txn.start();
|
||||
|
||||
event = new EventVO();
|
||||
event.setUserId(param.getUserId());
|
||||
event.setAccountId(vm.getAccountId());
|
||||
event.setAccountId(vm.getAccountId());
|
||||
event.setStartId(param.getEventId());
|
||||
event.setType(EventTypes.EVENT_VM_DESTROY);
|
||||
event.setParameters("id="+vm.getId() + "\nvmName=" + vm.getName() + "\nsoId=" + vm.getServiceOfferingId() + "\ntId=" + vm.getTemplateId() + "\ndcId=" + vm.getDataCenterId());
|
||||
event.setDescription("successfully destroyed VM instance : " + vm.getName());
|
||||
|
|
@ -167,7 +176,8 @@ public class DestroyVMExecutor extends VMOperationExecutor {
|
|||
EventVO event = new EventVO();
|
||||
event.setUserId(param.getUserId());
|
||||
event.setAccountId(vm.getAccountId());
|
||||
event.setType(EventTypes.EVENT_VM_DESTROY);
|
||||
event.setType(EventTypes.EVENT_VM_DESTROY);
|
||||
event.setStartId(param.getEventId());
|
||||
event.setParameters("id="+vm.getId() + "\nvmName=" + vm.getName() + "\nsoId=" + vm.getServiceOfferingId() + "\ntId=" + vm.getTemplateId() + "\ndcId=" + vm.getDataCenterId());
|
||||
event.setDescription("failed to stop VM instance : " + vm.getName() + " due to " + resultMessage);
|
||||
event.setLevel(EventVO.LEVEL_ERROR);
|
||||
|
|
|
|||
|
|
@ -1479,18 +1479,6 @@ public class UserVmManagerImpl implements UserVmManager {
|
|||
Transaction txn = Transaction.currentTxn();
|
||||
txn.start();
|
||||
|
||||
EventVO event = new EventVO();
|
||||
event.setUserId(param.getUserId());
|
||||
event.setAccountId(vm.getAccountId());
|
||||
event.setType(EventTypes.EVENT_VM_DESTROY);
|
||||
event.setStartId(param.getEventId());
|
||||
event.setParameters("id="+vm.getId() + "\nvmName=" + vm.getName() + "\nsoId=" + vm.getServiceOfferingId() + "\ntId=" + vm.getTemplateId() + "\ndcId=" + vm.getDataCenterId());
|
||||
if(!vm.getName().equals(vm.getDisplayName()))
|
||||
event.setDescription("successfully destroyed VM instance : " + vm.getName()+"("+vm.getDisplayName()+")");
|
||||
else
|
||||
event.setDescription("successfully destroyed VM instance : " + vm.getName());
|
||||
_eventDao.persist(event);
|
||||
|
||||
_accountMgr.decrementResourceCount(vm.getAccountId(), ResourceType.user_vm);
|
||||
if (!_vmDao.updateIf(vm, VirtualMachine.Event.DestroyRequested, vm.getHostId())) {
|
||||
s_logger.debug("Unable to destroy the vm because it is not in the correct state: " + vm.toString());
|
||||
|
|
|
|||
Loading…
Reference in New Issue