bug 7653: Remove created snapshot event after backing up already removed snapshot. Instead add Event when this snapshot is duplicated

status 7653: resolved fixed
This commit is contained in:
kishan 2010-12-29 12:13:10 +05:30
parent 4a91643e1d
commit ae87c21491
1 changed files with 24 additions and 20 deletions

View File

@ -20,10 +20,8 @@ package com.cloud.storage.snapshot;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.ejb.Local;
import javax.naming.ConfigurationException;
@ -34,8 +32,6 @@ import com.cloud.agent.AgentManager;
import com.cloud.agent.api.Answer;
import com.cloud.agent.api.BackupSnapshotAnswer;
import com.cloud.agent.api.BackupSnapshotCommand;
import com.cloud.agent.api.CreateVolumeFromSnapshotAnswer;
import com.cloud.agent.api.CreateVolumeFromSnapshotCommand;
import com.cloud.agent.api.DeleteSnapshotBackupCommand;
import com.cloud.agent.api.DeleteSnapshotsDirCommand;
import com.cloud.agent.api.ManageSnapshotAnswer;
@ -45,7 +41,6 @@ import com.cloud.agent.api.ValidateSnapshotCommand;
import com.cloud.api.BaseCmd;
import com.cloud.api.commands.CreateSnapshotCmd;
import com.cloud.api.commands.CreateVolumeCmd;
import com.cloud.async.AsyncInstanceCreateStatus;
import com.cloud.async.AsyncJobExecutor;
import com.cloud.async.AsyncJobManager;
import com.cloud.async.AsyncJobVO;
@ -53,8 +48,6 @@ import com.cloud.async.BaseAsyncJobExecutor;
import com.cloud.async.executor.SnapshotOperationParam;
import com.cloud.configuration.ResourceCount.ResourceType;
import com.cloud.configuration.dao.ConfigurationDao;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.HostPodVO;
import com.cloud.dc.dao.DataCenterDao;
import com.cloud.event.EventState;
import com.cloud.event.EventTypes;
@ -63,30 +56,21 @@ import com.cloud.event.dao.EventDao;
import com.cloud.exception.InternalErrorException;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.ResourceAllocationException;
import com.cloud.host.HostVO;
import com.cloud.host.dao.DetailsDao;
import com.cloud.host.dao.HostDao;
import com.cloud.serializer.GsonHelper;
import com.cloud.storage.DiskOfferingVO;
import com.cloud.storage.Snapshot;
import com.cloud.storage.SnapshotPolicyRefVO;
import com.cloud.storage.SnapshotPolicyVO;
import com.cloud.storage.SnapshotScheduleVO;
import com.cloud.storage.SnapshotVO;
import com.cloud.storage.StorageManager;
import com.cloud.storage.StoragePool;
import com.cloud.storage.StoragePoolVO;
import com.cloud.storage.VMTemplateHostVO;
import com.cloud.storage.VMTemplateStoragePoolVO;
import com.cloud.storage.VMTemplateStorageResourceAssoc;
import com.cloud.storage.VMTemplateVO;
import com.cloud.storage.Volume;
import com.cloud.storage.VolumeVO;
import com.cloud.storage.Snapshot.SnapshotType;
import com.cloud.storage.Snapshot.Status;
import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.Volume.MirrorState;
import com.cloud.storage.Volume.StorageResourceType;
import com.cloud.storage.Volume.VolumeType;
import com.cloud.storage.dao.DiskOfferingDao;
import com.cloud.storage.dao.SnapshotDao;
@ -98,15 +82,13 @@ import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.storage.dao.VMTemplateHostDao;
import com.cloud.storage.dao.VMTemplatePoolDao;
import com.cloud.storage.dao.VolumeDao;
import com.cloud.user.Account;
import com.cloud.user.AccountManager;
import com.cloud.user.AccountVO;
import com.cloud.user.UserVO;
import com.cloud.user.User;
import com.cloud.user.dao.AccountDao;
import com.cloud.user.dao.UserDao;
import com.cloud.utils.DateUtil;
import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Pair;
import com.cloud.utils.component.ComponentLocator;
import com.cloud.utils.component.Inject;
import com.cloud.utils.db.DB;
@ -451,6 +433,21 @@ public class SnapshotManagerImpl implements SnapshotManager {
createdSnapshot.setStatus(Snapshot.Status.BackedUp);
createdSnapshot.setPrevSnapshotId(_snapshotDao.getLastSnapshot(volumeId, id));
_snapshotDao.update(id, createdSnapshot);
VolumeVO volume = _volsDao.findById(volumeId);
// Create an event
EventVO event = new EventVO();
event.setUserId(User.UID_SYSTEM);
event.setAccountId(createdSnapshot.getAccountId());
event.setType(EventTypes.EVENT_SNAPSHOT_CREATE);
String snapshotName = createdSnapshot.getName();
String eventParams = "id=" + id + "\nssName=" + snapshotName +"\nsize=" + volume.getSize()+"\ndcId=" + volume.getDataCenterId();
event.setDescription("Backed up snapshot id: " + id + " to secondary for volume " + volumeId);
event.setLevel(EventVO.LEVEL_INFO);
event.setParameters(eventParams);
// Save the event
_eventDao.persist(event);
return createdSnapshot;
}
@ -685,6 +682,11 @@ public class SnapshotManagerImpl implements SnapshotManager {
_volsDao.update(volumeId, volume);
}
boolean alreadyRemoved = false;
if(snapshotVO.getRemoved() != null){
alreadyRemoved = true;
}
// Create an event
EventVO event = new EventVO();
event.setUserId(userId);
@ -713,7 +715,9 @@ public class SnapshotManagerImpl implements SnapshotManager {
event.setDescription("Failed to backup snapshot id: " + id + " to secondary for volume " + volumeId);
}
// Save the event
_eventDao.persist(event);
if(!alreadyRemoved){
_eventDao.persist(event);
}
txn.commit();
return backedUp;