From e51dc79000ff6122a826bafad4c9b4e14dbaaba0 Mon Sep 17 00:00:00 2001 From: kishan Date: Fri, 24 Dec 2010 19:38:28 +0530 Subject: [PATCH] bug 7504: Events refactoring status 7504: resolved fixed --- .../cloud/api/commands/DeleteAccountCmd.java | 2 +- .../ConfigurationManagerImpl.java | 6 +- .../com/cloud/network/NetworkManagerImpl.java | 11 +- .../lb/LoadBalancingRulesManagerImpl.java | 2 - .../cloud/server/ManagementServerImpl.java | 13 ++- .../com/cloud/storage/StorageManagerImpl.java | 108 ++---------------- .../SecondaryStorageManagerImpl.java | 57 +++------ .../storage/snapshot/SnapshotManager.java | 6 +- .../storage/snapshot/SnapshotManagerImpl.java | 75 ++++-------- server/src/com/cloud/user/AccountManager.java | 2 +- .../com/cloud/user/AccountManagerImpl.java | 19 ++- .../src/com/cloud/vm/UserVmManagerImpl.java | 33 +----- 12 files changed, 81 insertions(+), 253 deletions(-) diff --git a/api/src/com/cloud/api/commands/DeleteAccountCmd.java b/api/src/com/cloud/api/commands/DeleteAccountCmd.java index 52c20535f50..31909f1696a 100644 --- a/api/src/com/cloud/api/commands/DeleteAccountCmd.java +++ b/api/src/com/cloud/api/commands/DeleteAccountCmd.java @@ -85,7 +85,7 @@ public class DeleteAccountCmd extends BaseAsyncCmd { @Override public String getEventDescription() { User user = _responseGenerator.findUserById(getId()); - return (user != null ? ("User " + user.getUsername() + " (id: " + user.getId() + ") and accountId = " + user.getAccountId()) : "user delete, but this user does not exist in the system"); + return (user != null ? ("deleting User " + user.getUsername() + " (id: " + user.getId() + ") and accountId = " + user.getAccountId()) : "user delete, but this user does not exist in the system"); } @Override diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index 38ad6053e40..ca72f13db00 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -1939,21 +1939,19 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura return; } - String params = "\nsourceNat=" + false + "\ndcId=" + zoneId; - // Associate the IP's to DomR boolean success = _networkMgr.associateIP(router,ipAddrsList, true, 0); String errorMsg = "Unable to assign public IP address pool"; if (!success) { s_logger.debug(errorMsg); for(String ip : ipAddrsList){ - EventUtils.saveEvent(userId, accountId, EventVO.LEVEL_ERROR, EventTypes.EVENT_NET_IP_ASSIGN, "Unable to assign public IP " +ip, params); + EventUtils.saveEvent(userId, accountId, EventVO.LEVEL_ERROR, EventTypes.EVENT_NET_IP_ASSIGN, "Unable to assign public IP " +ip); } throw new CloudRuntimeException(errorMsg); } txn.commit(); for(String ip : ipAddrsList){ - EventUtils.saveEvent(userId, accountId, EventVO.LEVEL_INFO, EventTypes.EVENT_NET_IP_ASSIGN, "Successfully assigned account IP " +ip, params); + EventUtils.saveEvent(userId, accountId, EventVO.LEVEL_INFO, EventTypes.EVENT_NET_IP_ASSIGN, "Successfully assigned account IP " +ip); } } } catch (CloudRuntimeException iee) { diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 3f5e3a552d8..55b3b264a2a 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -313,7 +313,6 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag // Increment the number of public IPs for this accountId in the database _accountMgr.incrementResourceCount(ownerId, ResourceType.public_ip); - event.setParameters("address=" + ip.getAddress() + "\nsourceNat=true\ndcId="+dcId); event.setDescription("Acquired a public ip: " + ip.getAddress()); _eventDao.persist(event); } else { @@ -351,7 +350,6 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag if (ip == null) { txn.rollback(); event.setLevel(EventVO.LEVEL_ERROR); - event.setParameters("dcId=" + dcId); event.setDescription("Failed to acquire a public ip."); _eventDao.persist(event); s_logger.error("Unable to get source nat ip address for account " + ownerId); @@ -681,13 +679,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } } - final EventVO event = new EventVO(); - event.setUserId(userId); - event.setAccountId(ip.getAllocatedToAccountId()); - event.setType(EventTypes.EVENT_NET_IP_RELEASE); - event.setParameters("address=" + ipAddress + "\nsourceNat="+ip.isSourceNat()); - event.setDescription("released a public ip: " + ipAddress); - _eventDao.persist(event); + + EventUtils.saveEvent(userId, ip.getAllocatedToAccountId(), EventTypes.EVENT_NET_IP_RELEASE, "released a public ip: " + ipAddress); return success; } diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index cfbfc581bb9..1811264b40b 100644 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -377,8 +377,6 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager, } else { event.setDescription("Successfully created load balancer " + lb.getName() + " on ip address " + srcIp + "[" + srcPortStart + "->" + defPortStart + "]"); - String params = "id=" + newRule.getId() + "\ndcId=" + ipAddr.getDataCenterId(); - event.setParameters(params); event.setLevel(EventVO.LEVEL_INFO); UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_LOAD_BALANCER_CREATE, ipAddr.getAllocatedToAccountId(), ipAddr.getDataCenterId(), newRule.getId(), null); _usageEventDao.persist(usageEvent); diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 4d7b328e105..ca72c07898e 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -3207,17 +3207,13 @@ public class ManagementServerImpl implements ManagementServer { if ((cleanup != null) && cleanup.booleanValue()) { boolean success = cleanupDomain(domainId, ownerId); if (!success) { - EventUtils.saveEvent(new Long(1), ownerId, EventVO.LEVEL_ERROR, EventTypes.EVENT_DOMAIN_DELETE, "Failed to clean up domain resources and sub domains, domain with id " + domainId + " was not deleted."); s_logger.error("Failed to clean up domain resources and sub domains, delete failed on domain " + domain.getName() + " (id: " + domainId + ")."); return false; } } else { if (!_domainDao.remove(domainId)) { - EventUtils.saveEvent(new Long(1), ownerId, EventVO.LEVEL_ERROR, EventTypes.EVENT_DOMAIN_DELETE, "Domain with id " + domainId + " was not deleted"); s_logger.error("Delete failed on domain " + domain.getName() + " (id: " + domainId + "); please make sure all users and sub domains have been removed from the domain before deleting"); return false; - } else { - EventUtils.saveEvent(new Long(1), ownerId, EventVO.LEVEL_INFO, EventTypes.EVENT_DOMAIN_DELETE, "Domain with id " + domainId + " was deleted"); } } } else { @@ -3251,7 +3247,14 @@ public class ManagementServerImpl implements ManagementServer { sc.addAnd("domainId", SearchCriteria.Op.EQ, domainId); List accounts = _accountDao.search(sc, null); for (AccountVO account : accounts) { - success = (success && _accountMgr.deleteAccountInternal(account.getAccountId(), 0)); + success = (success && _accountMgr.deleteAccountInternal(account.getAccountId())); + String description = "Account:" + account.getAccountId(); + if(success){ + EventUtils.saveEvent(User.UID_SYSTEM, account.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ACCOUNT_DELETE, "Successfully deleted " +description); + }else{ + EventUtils.saveEvent(User.UID_SYSTEM, account.getAccountId(), EventVO.LEVEL_ERROR, EventTypes.EVENT_ACCOUNT_DELETE, "Error deleting " +description); + } + } } diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index d279520aebd..3a08d04f039 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -91,6 +91,7 @@ import com.cloud.domain.Domain; import com.cloud.domain.dao.DomainDao; import com.cloud.event.Event; import com.cloud.event.EventTypes; +import com.cloud.event.EventUtils; import com.cloud.event.EventVO; import com.cloud.event.UsageEventVO; import com.cloud.event.dao.EventDao; @@ -139,6 +140,7 @@ import com.cloud.storage.snapshot.SnapshotScheduler; import com.cloud.template.TemplateManager; import com.cloud.user.Account; import com.cloud.user.AccountManager; +import com.cloud.user.User; import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; @@ -644,20 +646,10 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag } @DB - protected VolumeVO createVolumeFromSnapshot(VolumeVO volume, long snapshotId, long startEventId) { - EventVO event = new EventVO(); - event.setUserId(UserContext.current().getUserId()); - event.setAccountId(volume.getAccountId()); - event.setType(EventTypes.EVENT_VOLUME_CREATE); - event.setState(Event.State.Started); - event.setStartId(startEventId); - event.setDescription("Creating volume from snapshot with id: "+snapshotId); - _eventDao.persist(event); + protected VolumeVO createVolumeFromSnapshot(VolumeVO volume, long snapshotId) { // By default, assume failure. VolumeVO createdVolume = null; - String details = null; - Long volumeId = null; SnapshotVO snapshot = _snapshotDao.findById(snapshotId); // Precondition: snapshot is not null and not removed. Long origVolumeId = snapshot.getVolumeId(); VolumeVO originalVolume = _volsDao.findById(origVolumeId); // NOTE: Original volume could be destroyed and removed. @@ -666,15 +658,8 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag template = _templateDao.findById(originalVolume.getTemplateId()); } - // everything went well till now - DataCenterVO dc = _dcDao.findById(originalVolume.getDataCenterId()); - Pair volumeDetails = createVolumeFromSnapshot(volume, snapshot, template, originalVolume.getSize()); createdVolume = volumeDetails.first(); - if (createdVolume != null) { - volumeId = createdVolume.getId(); - } - details = volumeDetails.second(); Transaction txn = Transaction.currentTxn(); txn.start(); @@ -687,27 +672,10 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag diskOfferingId = originalVolume.getDiskOfferingId(); long sizeMB = createdVolume.getSize()/(1024*1024); - String poolName = _storagePoolDao.findById(createdVolume.getPoolId()).getName(); - String eventParams = "id=" + volumeId +"\ndoId="+diskOfferingId+"\ntId="+templateId+"\ndcId="+originalVolume.getDataCenterId()+"\nsize="+sizeMB; - event = new EventVO(); - event.setAccountId(volume.getAccountId()); - event.setUserId(UserContext.current().getUserId()); - event.setType(EventTypes.EVENT_VOLUME_CREATE); - event.setParameters(eventParams); - event.setStartId(startEventId); - event.setState(Event.State.Completed); if (createdVolume.getPath() != null) { - event.setDescription("Created volume: "+ createdVolume.getName() + " with size: " + sizeMB + " MB in pool: " + poolName + " from snapshot id: " + snapshotId); - event.setLevel(EventVO.LEVEL_INFO); UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_CREATE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(), diskOfferingId, templateId , sizeMB); _usageEventDao.persist(usageEvent); } - else { - details = "CreateVolume From Snapshot for snapshotId: " + snapshotId + " failed at the backend, reason " + details; - event.setDescription(details); - event.setLevel(EventVO.LEVEL_ERROR); - } - _eventDao.persist(event); txn.commit(); return createdVolume; } @@ -859,9 +827,6 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag txn.start(); if (Storage.ImageFormat.ISO == template.getFormat()) { rootVol = new VolumeVO(VolumeType.ROOT, vm.getId(), vm.getInstanceName() + "-ROOT", dc.getId(), pod.getId(), account.getId(), account.getDomainId(),(size>0)? size : diskOffering.getDiskSizeInBytes()); - - createStartedEvent(account, rootVol); - rootVol.setDiskOfferingId(diskOffering.getId()); rootVol.setSourceType(SourceType.Template); rootVol.setSourceId(template.getId()); @@ -869,9 +834,6 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag rootVol = _volsDao.persist(rootVol); } else { rootVol = new VolumeVO(VolumeType.ROOT, vm.getId(), template.getId(), vm.getInstanceName() + "-ROOT", dc.getId(), pod.getId(), account.getId(), account.getDomainId(), offering.isRecreatable()); - - createStartedEvent(account, rootVol); - rootVol.setDiskOfferingId(offering.getId()); rootVol.setTemplateId(template.getId()); rootVol.setSourceId(template.getId()); @@ -881,9 +843,6 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag if ((diskOffering != null && diskOffering.getDiskSizeInBytes() > 0) || (diskOffering != null && diskOffering.isCustomized())) { dataVol = new VolumeVO(VolumeType.DATADISK, vm.getId(), vm.getInstanceName() + "-DATA", dc.getId(), pod.getId(), account.getId(), account.getDomainId(), (size>0)? size : diskOffering.getDiskSizeInBytes()); - - createStartedEvent(account, dataVol); - dataVol.setDiskOfferingId(diskOffering.getId()); dataVol.setSourceType(SourceType.DiskOffering); dataVol.setSourceId(diskOffering.getId()); @@ -924,17 +883,6 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag } } - private void createStartedEvent(Account account, VolumeVO rootVol) { - EventVO event1 = new EventVO(); - event1.setAccountId(account.getId()); - event1.setUserId(1L); - event1.setType(EventTypes.EVENT_VOLUME_CREATE); - event1.setState(Event.State.Started); - event1.setDescription("Create volume: " + rootVol.getName()+ "started"); - _eventDao.persist(event1); - } - - @Override public long createUserVM(Account account, VMInstanceVO vm, VMTemplateVO template, DataCenterVO dc, HostPodVO pod, ServiceOfferingVO offering, DiskOfferingVO diskOffering, List avoids, long size) { @@ -954,25 +902,6 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag { s_logger.warn("Error updating the attached value for volume "+v.getId()+":"+e); } - - long templateId = -1; - long doId = v.getDiskOfferingId(); - if(v.getVolumeType() == VolumeType.ROOT && Storage.ImageFormat.ISO != template.getFormat()){ - templateId = template.getId(); - doId = -1; - } - - long volumeId = v.getId(); - // Create an event - long sizeMB = v.getSize() / (1024 * 1024); - String eventParams = "id=" + volumeId + "\ndoId=" + doId + "\ntId=" + templateId + "\ndcId=" + dc.getId() + "\nsize=" + sizeMB; - EventVO event = new EventVO(); - event.setAccountId(account.getId()); - event.setUserId(1L); - event.setType(EventTypes.EVENT_VOLUME_CREATE); - event.setParameters(eventParams); - event.setDescription("Created volume: " + v.getName() + " with size: " + sizeMB + " MB"); - _eventDao.persist(event); } return volumes.get(0).getPoolId(); @@ -1853,10 +1782,9 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag public VolumeVO createVolume(CreateVolumeCmd cmd) { VolumeVO volume = _volsDao.findById(cmd.getEntityId()); // VolumeVO createdVolume = null; - Long userId = UserContext.current().getUserId(); if (cmd.getSnapshotId() != null) { - return createVolumeFromSnapshot(volume, cmd.getSnapshotId(), cmd.getStartEventId()); + return createVolumeFromSnapshot(volume, cmd.getSnapshotId()); } else { DataCenterVO dc = _dcDao.findById(cmd.getZoneId()); DiskOfferingVO diskOffering = _diskOfferingDao.findById(cmd.getDiskOfferingId()); @@ -1880,12 +1808,6 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag } */ - // Create an event - EventVO event = new EventVO(); - event.setAccountId(volume.getAccountId()); - event.setUserId(userId); - event.setType(EventTypes.EVENT_VOLUME_CREATE); - event.setStartId(cmd.getStartEventId()); /* Transaction txn = Transaction.currentTxn(); @@ -1906,14 +1828,8 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag // long sizeMB = createdVolume.getSize() / (1024 * 1024); // StoragePoolVO pool = _storagePoolDao.findById(createdVolume.getPoolId()); // String eventParams = "id=" + createdVolume.getId() + "\ndoId=" + diskOffering.getId() + "\ntId=" + -1 + "\ndcId=" + dc.getId() + "\nsize=" + sizeMB; - String eventParams = "id=" + volume.getId() + "\ndoId=" + diskOffering.getId() + "\ntId=" + -1 + "\ndcId=" + dc.getId() + "\nsize=" + sizeMB; - event.setLevel(EventVO.LEVEL_INFO); // event.setDescription("Created volume: " + createdVolume.getName() + " with size: " + sizeMB + " MB in pool: " + pool.getName()); // event.setDescription("Created volume: " + createdVolume.getName() + " with size: " + sizeMB + " MB"); - event.setDescription("Created volume: " + volume.getName() + " with size: " + sizeMB + " MB"); - event.setParameters(eventParams); - event.setState(Event.State.Completed); - _eventDao.persist(event); UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_CREATE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(), diskOffering.getId(), null , sizeMB); _usageEventDao.persist(usageEvent); /* @@ -1944,15 +1860,7 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag Long volumeId = volume.getId(); _volsDao.destroyVolume(volumeId); - String eventParams = "id=" + volumeId; - EventVO event = new EventVO(); - event.setAccountId(volume.getAccountId()); - event.setUserId(1L); - event.setType(EventTypes.EVENT_VOLUME_DELETE); - event.setParameters(eventParams); - event.setDescription("Volume " +volume.getName()+ " deleted"); - event.setLevel(EventVO.LEVEL_INFO); - _eventDao.persist(event); + EventUtils.saveEvent(User.UID_SYSTEM, volume.getAccountId(), EventTypes.EVENT_VOLUME_DELETE, "Volume " +volume.getName()+ " deleted"); UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_DELETE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(), null, null , null); _usageEventDao.persist(usageEvent); @@ -2660,6 +2568,9 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag if(vm instanceof UserVm){ long sizeMB = size / (1024 * 1024); + + EventUtils.saveEvent(User.UID_SYSTEM, vol.getAccountId(), EventTypes.EVENT_VOLUME_CREATE, "Created volume: "+ vol.getName() +" with size: " + sizeMB + " MB"); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_CREATE, vol.getAccountId(), vol.getDataCenterId(), vol.getId(), vol.getName(), offering.getId(), null , sizeMB); _usageEventDao.persist(usageEvent); } @@ -2697,6 +2608,9 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag if(vm instanceof UserVm){ long sizeMB = vol.getSize() / (1024 * 1024); + + EventUtils.saveEvent(User.UID_SYSTEM, vol.getAccountId(), EventTypes.EVENT_VOLUME_CREATE, "Created volume: "+ vol.getName() +" with size: " + sizeMB + " MB"); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_CREATE, vol.getAccountId(), vol.getDataCenterId(), vol.getId(), vol.getName(), offering.getId(), template.getId() , sizeMB); _usageEventDao.persist(usageEvent); } diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index 21d5e26b685..c96294cee09 100644 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -64,6 +64,7 @@ import com.cloud.deploy.DataCenterDeployment; import com.cloud.deploy.DeployDestination; import com.cloud.event.Event; import com.cloud.event.EventTypes; +import com.cloud.event.EventUtils; import com.cloud.event.EventVO; import com.cloud.event.dao.EventDao; import com.cloud.exception.AgentUnavailableException; @@ -123,6 +124,7 @@ import com.cloud.utils.net.NfsUtils; import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.ReservationContext; +import com.cloud.vm.SecondaryStorageVm; import com.cloud.vm.SecondaryStorageVmVO; import com.cloud.vm.State; import com.cloud.vm.VirtualMachine; @@ -227,8 +229,12 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V @Override public SecondaryStorageVmVO startSecStorageVm(long secStorageVmId) { + boolean started = false; + long startEventId = EventUtils.saveStartedEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventTypes.EVENT_SSVM_START, "Starting secondary storage Vm with Id: "+secStorageVmId); try { - return start(secStorageVmId); + SecondaryStorageVmVO ssvm = start(secStorageVmId); + started = true; + return ssvm; } catch (StorageUnavailableException e) { s_logger.warn("Exception while trying to start secondary storage vm", e); return null; @@ -240,6 +246,12 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V return null; } catch (ResourceUnavailableException e) { return null; + } finally { + if(started){ + EventUtils.saveEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventVO.LEVEL_INFO, EventTypes.EVENT_SSVM_START, "Started secondary storage Vm with Id: "+secStorageVmId, startEventId); + } else { + EventUtils.saveEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventVO.LEVEL_ERROR, EventTypes.EVENT_SSVM_START, "Failed to start secondary storage Vm with Id: "+secStorageVmId, startEventId); + } } } @@ -369,6 +381,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V s_logger.debug("Assign secondary storage vm from a newly started instance for request from data center : " + dataCenterId); } + long startEventId = EventUtils.saveStartedEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventTypes.EVENT_SSVM_CREATE, "Creating secondary storage Vm in zone : "+dataCenterId); Map context = createSecStorageVmInstance(dataCenterId); long secStorageVmId = (Long) context.get("secStorageVmId"); @@ -381,7 +394,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V if (context.get("publicIpAddress") != null) { freePublicIpAddress((String) context.get("publicIpAddress"), dataCenterId, 0); } - + EventUtils.saveEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventVO.LEVEL_ERROR, EventTypes.EVENT_SSVM_CREATE, "Failed to create secondary storage Vm in zone : "+dataCenterId, startEventId); return null; } @@ -393,6 +406,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V SecStorageVmAlertEventArgs.SSVM_CREATED, dataCenterId, secStorageVmId, secStorageVm, null) ); + EventUtils.saveEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventVO.LEVEL_INFO, EventTypes.EVENT_SSVM_CREATE, "Successfully created secondary storage Vm "+ secStorageVm.getName() +" in zone : "+dataCenterId, startEventId); return secStorageVm; } else { if (s_logger.isDebugEnabled()) { @@ -406,17 +420,16 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V dataCenterId, secStorageVmId, null, "Unable to allocate storage") ); destroySecStorageVmDBOnly(secStorageVmId); + EventUtils.saveEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventVO.LEVEL_ERROR, EventTypes.EVENT_SSVM_CREATE, "Failed to create secondary storage Vm in zone : "+dataCenterId, startEventId); } return null; } protected Map createSecStorageVmInstance(long dataCenterId) { - long startEventId = saveStartedEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventTypes.EVENT_SSVM_CREATE, "Creating secondary storage Vm in zone : "+dataCenterId, 0); HostVO secHost = _hostDao.findSecondaryStorageHost(dataCenterId); if (secHost == null) { String msg = "No secondary storage available in zone " + dataCenterId + ", cannot create secondary storage vm"; s_logger.warn(msg); - saveFailedEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventTypes.EVENT_SSVM_CREATE, msg, startEventId); throw new CloudRuntimeException(msg); } @@ -1174,13 +1187,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V } _secStorageVmDao.remove(vmId); - final EventVO event = new EventVO(); - event.setUserId(User.UID_SYSTEM); - event.setAccountId(Account.ACCOUNT_ID_SYSTEM); - event.setType(EventTypes.EVENT_SSVM_DESTROY); - event.setLevel(EventVO.LEVEL_INFO); - event.setDescription("Secondary Storage Vm destroyed - " + secStorageVm.getName()); - _eventDao.persist(event); + EventUtils.saveEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventTypes.EVENT_SSVM_DESTROY, "Secondary Storage Vm destroyed - " + secStorageVm.getName()); } txn.commit(); return true; @@ -1383,34 +1390,6 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V return "secStorageVm." + id; } - private Long saveStartedEvent(Long userId, Long accountId, String type, String description, long startEventId) { - EventVO event = new EventVO(); - event.setUserId(userId); - event.setAccountId(accountId); - event.setType(type); - event.setState(Event.State.Started); - event.setDescription(description); - event.setStartId(startEventId); - event = _eventDao.persist(event); - if(event != null) { - return event.getId(); - } - return null; - } - - private void saveFailedEvent(Long userId, Long accountId, String type, String description, long startEventId) { - EventVO event = new EventVO(); - event.setUserId(userId); - event.setAccountId(accountId); - event.setType(type); - event.setState(Event.State.Completed); - event.setLevel(EventVO.LEVEL_ERROR); - event.setDescription(description); - event.setStartId(startEventId); - _eventDao.persist(event); - return; - } - @Override public SecondaryStorageVmVO findByName(String name) { if (!VirtualMachineName.isValidSecStorageVmName(name, null)) { diff --git a/server/src/com/cloud/storage/snapshot/SnapshotManager.java b/server/src/com/cloud/storage/snapshot/SnapshotManager.java index 02e5e573e60..aec47edd75b 100755 --- a/server/src/com/cloud/storage/snapshot/SnapshotManager.java +++ b/server/src/com/cloud/storage/snapshot/SnapshotManager.java @@ -43,7 +43,7 @@ public interface SnapshotManager { * @param cmd the API command wrapping the parameters for creating the snapshot (mainly volumeId) * @return the Snapshot that was created */ - SnapshotVO createSnapshotImpl(Long volumeId, Long policyId, Long startEventId, Long snapshotId) throws ResourceAllocationException; + SnapshotVO createSnapshotImpl(Long volumeId, Long policyId, Long snapshotId) throws ResourceAllocationException; /** * After successfully creating a snapshot of a volume, copy the snapshot to the secondary storage for @@ -53,7 +53,7 @@ public interface SnapshotManager { * @param startEventId event id of the scheduled event for this snapshot * @return True if the snapshot was successfully backed up. */ - public boolean backupSnapshotToSecondaryStorage(SnapshotVO snapshot, long startEventId); + public boolean backupSnapshotToSecondaryStorage(SnapshotVO snapshot); /** * Once a snapshot has completed, @@ -120,7 +120,7 @@ public interface SnapshotManager { SnapshotPolicyVO getPolicyForVolume(long volumeId); - boolean destroySnapshotBackUp(long userId, long snapshotId, long policyId); + boolean destroySnapshotBackUp(long snapshotId, long policyId); /** * Create a snapshot of a volume diff --git a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java index f6bbdff9f02..70ba04d7301 100755 --- a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java +++ b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java @@ -327,7 +327,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma } @Override @DB - public SnapshotVO createSnapshotImpl(Long volumeId, Long policyId, Long snapshotId, Long startEventId) throws ResourceAllocationException { + public SnapshotVO createSnapshotImpl(Long volumeId, Long policyId, Long snapshotId) throws ResourceAllocationException { VolumeVO v = _volsDao.findById(volumeId); if ( v != null && _volsDao.getHypervisorType(v.getId()).equals(HypervisorType.KVM)) { /*KVM needs to lock on the vm of volume, because it takes snapshot on behalf of vm, not volume*/ @@ -373,7 +373,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma snapshot = createSnapshotOnPrimary(volume, policyId, snapshotId); if (snapshot != null && snapshot.getStatus() == Snapshot.Status.CreatedOnPrimary ) { snapshotId = snapshot.getId(); - backedUp = backupSnapshotToSecondaryStorage(snapshot, startEventId); + backedUp = backupSnapshotToSecondaryStorage(snapshot); if (!backedUp) { throw new CloudRuntimeException("Created snapshot: " + snapshotId + " on primary but failed to backup on secondary"); } @@ -394,8 +394,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma Long volumeId = cmd.getVolumeId(); Long policyId = cmd.getPolicyId(); Long snapshotId = cmd.getEntityId(); - Long startEventId = cmd.getStartEventId(); - return createSnapshotImpl(volumeId, policyId, snapshotId, startEventId); + return createSnapshotImpl(volumeId, policyId, snapshotId); } private SnapshotVO updateDBOnCreate(Long id, String snapshotPath, long preSnapshotId) { @@ -428,7 +427,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma // It has entered backupSnapshotToSecondaryStorage. // But we have no idea whether it was backed up or not. // So call backupSnapshotToSecondaryStorage again. - backupSnapshotToSecondaryStorage(snapshot, 0); + backupSnapshotToSecondaryStorage(snapshot); break; case BackedUp: // No need to do anything as snapshot has already been backed up. @@ -436,7 +435,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma } @Override @DB - public boolean backupSnapshotToSecondaryStorage(SnapshotVO ss, long startEventId) { + public boolean backupSnapshotToSecondaryStorage(SnapshotVO ss) { Long userId = getSnapshotUserId(); long snapshotId = ss.getId(); SnapshotVO snapshot = _snapshotDao.acquireInLockTable(snapshotId); @@ -454,7 +453,6 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma String primaryStoragePoolNameLabel = _storageMgr.getPrimaryStorageNameLabel(volume); Long dcId = volume.getDataCenterId(); Long accountId = volume.getAccountId(); - EventUtils.saveStartedEvent(userId, accountId, EventTypes.EVENT_SNAPSHOT_CREATE, "Start creating snapshot for volume:"+volumeId, startEventId); String secondaryStoragePoolUrl = _storageMgr.getSecondaryStorageURL(volume.getDataCenterId()); String snapshotUuid = snapshot.getPath(); @@ -511,23 +509,11 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma Transaction txn = Transaction.currentTxn(); txn.start(); - // Create an event - EventVO event = new EventVO(); - event.setUserId(userId); - event.setAccountId(volume.getAccountId()); - event.setType(EventTypes.EVENT_SNAPSHOT_CREATE); - event.setStartId(startEventId); - String snapshotName = snapshot.getName(); - if (backedUp) { snapshot.setBackupSnapshotId(backedUpSnapshotUuid); snapshot.setStatus(Snapshot.Status.BackedUp); _snapshotDao.update(snapshotId, snapshot); - String eventParams = "id=" + snapshotId + "\nssName=" + snapshotName +"\nsize=" + volume.getSize()+"\ndcId=" + volume.getDataCenterId(); - event.setDescription("Backed up snapshot id: " + snapshotId + " to secondary for volume:" + volumeId); - event.setLevel(EventVO.LEVEL_INFO); - event.setParameters(eventParams); - UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_SNAPSHOT_CREATE, snapshot.getAccountId(), volume.getDataCenterId(), snapshotId, snapshotName, null, null, volume.getSize()); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_SNAPSHOT_CREATE, snapshot.getAccountId(), volume.getDataCenterId(), snapshotId, snapshot.getName(), null, null, volume.getSize()); _usageEventDao.persist(usageEvent); } @@ -540,11 +526,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma // 3) backupSnapshotToSecondaryStorage of the next snapshot // will take care of cleaning up the state of this snapshot _snapshotDao.remove(snapshotId); - event.setLevel(EventVO.LEVEL_ERROR); - event.setDescription("Failed to backup snapshot id: " + snapshotId + " to secondary for volume:" + volumeId); } - // Save the event - _eventDao.persist(event); txn.commit(); return backedUp; @@ -601,7 +583,13 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma s_logger.debug("Max snaps: "+ policy.getMaxSnaps() + " exceeded for snapshot policy with Id: " + policyId + ". Deleting oldest snapshot: " + oldSnapId); // Excess snapshot. delete it asynchronously //destroySnapshotAsync(userId, volumeId, oldSnapId, policyId); - deleteSnapshotInternal(oldSnapId, policyId, userId); + // create the event + long startEventId = EventUtils.saveStartedEvent(userId, oldestSnapshot.getAccountId(), EventTypes.EVENT_SNAPSHOT_DELETE, "Deleting snapshot with Id:"+oldSnapId); + if(deleteSnapshotInternal(oldSnapId, policyId)){ + EventUtils.saveEvent(userId, oldestSnapshot.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_SNAPSHOT_DELETE, "Deleted snapshot with Id:"+oldSnapId, startEventId); + } else { + EventUtils.saveEvent(userId, oldestSnapshot.getAccountId(), EventVO.LEVEL_ERROR, EventTypes.EVENT_SNAPSHOT_DELETE, "Failed to delete snapshot with Id:"+oldSnapId, startEventId); + } snaps.remove(oldestSnapshot); } @@ -633,7 +621,6 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma @Override @DB public boolean deleteSnapshot(DeleteSnapshotCmd cmd) { - Long userId = getSnapshotUserId(); Long snapshotId = cmd.getId(); //Verify parameters @@ -651,7 +638,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma boolean status = true; if (Type.MANUAL.ordinal() == snapshotCheck.getSnapshotType()) { - status = deleteSnapshotInternal(snapshotId, Snapshot.MANUAL_POLICY_ID, userId); + status = deleteSnapshotInternal(snapshotId, Snapshot.MANUAL_POLICY_ID); if (!status) { s_logger.warn("Failed to delete snapshot"); @@ -661,7 +648,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma List policies = listPoliciesforVolume(snapshotCheck.getVolumeId()); for (SnapshotPolicyVO policy : policies) { - status = deleteSnapshotInternal(snapshotId, policy.getId(), userId); + status = deleteSnapshotInternal(snapshotId, policy.getId()); if (!status) { s_logger.warn("Failed to delete snapshot"); @@ -673,7 +660,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma return status; } - private boolean deleteSnapshotInternal(Long snapshotId, Long policyId, Long userId) { + private boolean deleteSnapshotInternal(Long snapshotId, Long policyId) { if (s_logger.isDebugEnabled()) { s_logger.debug("Calling deleteSnapshot for snapshotId: " + snapshotId + " and policyId " + policyId); } @@ -699,14 +686,14 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma while (lastSnapshot.getRemoved() != null) { String BackupSnapshotId = lastSnapshot.getBackupSnapshotId(); if (BackupSnapshotId != null) { - if (destroySnapshotBackUp(userId, lastId, policyId)) { + if (destroySnapshotBackUp(lastId, policyId)) { } else { s_logger.debug("Destroying snapshot backup failed " + lastSnapshot); break; } } - postDeleteSnapshot(userId, lastId, policyId); + postDeleteSnapshot(lastId, policyId); lastId = lastSnapshot.getPrevSnapshotId(); if (lastId == 0) { break; @@ -723,7 +710,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma } @Override @DB - public boolean destroySnapshotBackUp(long userId, long snapshotId, long policyId) { + public boolean destroySnapshotBackUp(long snapshotId, long policyId) { boolean success = false; String details = null; SnapshotVO snapshot = _snapshotDao.findByIdIncludingRemoved(snapshotId); @@ -762,18 +749,6 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma s_logger.error(details); } - // create the event - String eventParams = "id=" + snapshotId; - EventVO event = new EventVO(); - - event.setUserId(userId); - event.setAccountId((snapshot != null) ? snapshot.getAccountId() : 0); - event.setType(EventTypes.EVENT_SNAPSHOT_DELETE); - event.setDescription(details); - event.setParameters(eventParams); - event.setLevel(success ? EventVO.LEVEL_INFO : EventVO.LEVEL_ERROR); - _eventDao.persist(event); - if(success){ UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_SNAPSHOT_DELETE, snapshot.getAccountId(), volume.getDataCenterId(), snapshotId, snapshot.getName(), null, null, volume.getSize()); _usageEventDao.persist(usageEvent); @@ -785,7 +760,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma } @DB - protected void postDeleteSnapshot(long userId, long snapshotId, long policyId) { + protected void postDeleteSnapshot(long snapshotId, long policyId) { // Remove the snapshot from the snapshots table and the snap_policy_ref table. Transaction txn = Transaction.currentTxn(); txn.start(); @@ -957,15 +932,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma _accountMgr.decrementResourceCount(accountId, ResourceType.snapshot); //Log event after successful deletion - String eventParams = "id=" + snapshot.getId(); - EventVO event = new EventVO(); - event.setUserId(1L); - event.setAccountId(snapshot.getAccountId()); - event.setType(EventTypes.EVENT_SNAPSHOT_DELETE); - event.setDescription("Successfully deleted snapshot " + snapshot.getId() + " for volumeId: " + snapshot.getVolumeId()); - event.setParameters(eventParams); - event.setLevel(EventVO.LEVEL_INFO); - _eventDao.persist(event); + EventUtils.saveEvent(User.UID_SYSTEM, snapshot.getAccountId(), EventTypes.EVENT_SNAPSHOT_DELETE, "Successfully deleted snapshot " + snapshot.getId() + " for volumeId: " + snapshot.getVolumeId()); UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_SNAPSHOT_DELETE, snapshot.getAccountId(), volume.getDataCenterId(), snapshot.getId(), snapshot.getName(), null, null, volume.getSize()); _usageEventDao.persist(usageEvent); } diff --git a/server/src/com/cloud/user/AccountManager.java b/server/src/com/cloud/user/AccountManager.java index bb948874162..f0e408bed54 100755 --- a/server/src/com/cloud/user/AccountManager.java +++ b/server/src/com/cloud/user/AccountManager.java @@ -112,7 +112,7 @@ public interface AccountManager extends Manager { void checkAccess(Account account, ControlledEntity... entities) throws PermissionDeniedException; - boolean deleteAccountInternal(long accountId, long startEventId); + boolean deleteAccountInternal(long accountId); UserVO createUser(CreateUserCmd cmd); diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index 0872d8888cf..fc072cfb44d 100755 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -751,7 +751,7 @@ public class AccountManagerImpl implements AccountManager, AccountService { } @Override - public boolean deleteAccountInternal(long accountId, long startEventId) { + public boolean deleteAccountInternal(long accountId) { boolean result = false; try { @@ -779,13 +779,6 @@ public class AccountManagerImpl implements AccountManager, AccountService { } catch (Exception e) { s_logger.error("exception deleting account: " + accountId, e); return false; - }finally{ - String description = "Account:" + accountId ; - if(result){ - EventUtils.saveEvent(UserContext.current().getUserId(), accountId, EventVO.LEVEL_INFO, EventTypes.EVENT_ACCOUNT_DELETE, "Successfully deleted " +description, startEventId); - }else{ - EventUtils.saveEvent(UserContext.current().getUserId(), accountId, EventVO.LEVEL_ERROR, EventTypes.EVENT_ACCOUNT_DELETE, "Error deleting " +description, startEventId); - } } } @@ -1356,7 +1349,7 @@ public class AccountManagerImpl implements AccountManager, AccountService { return true; } - return deleteAccountInternal(accountId, cmd.getStartEventId()); + return deleteAccountInternal(accountId); } @@ -1500,7 +1493,13 @@ public class AccountManagerImpl implements AccountManager, AccountService { throw new InvalidParameterValueException("Account id : " + user.getAccountId() + " is a system account, delete for user associated with this account is not allowed"); } - return _userDao.remove(id); + boolean success = _userDao.remove(id); + if(success){ + EventUtils.saveEvent(new Long(1), new Long(1), EventVO.LEVEL_INFO, EventTypes.EVENT_USER_DELETE, "Deleted User, " + user.getUsername() + " for accountId = " + user.getAccountId()); + } else { + EventUtils.saveEvent(new Long(1), new Long(1), EventVO.LEVEL_ERROR, EventTypes.EVENT_USER_DELETE, "Failed to delete User, " + user.getUsername() + " for accountId = " + user.getAccountId()); + } + return success; } } diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index effbd88b81d..99da678a76f 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -712,11 +712,6 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager } } - EventVO event = new EventVO(); - event.setAccountId(volume.getAccountId()); - event.setUserId(1L); - event.setType(EventTypes.EVENT_VOLUME_DETACH); - event.setState(Event.State.Completed); if (!sendCommand || (answer != null && answer.getResult())) { // Mark the volume as detached _volsDao.detachVolume(volume.getId()); @@ -725,14 +720,6 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager _volsDao.update(volume.getId(), volume); } - if(!vm.getName().equals(vm.getDisplayName())) { - event.setDescription("Volume: " +volume.getName()+ " successfully detached from VM: "+vm.getName()+"("+vm.getDisplayName()+")"); - } else { - event.setDescription("Volume: " +volume.getName()+ " successfully detached from VM: "+vm.getName()); - } - event.setLevel(EventVO.LEVEL_INFO); - _eventDao.persist(event); - return _volsDao.findById(volumeId); } else { @@ -1002,13 +989,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager _ipAddressDao.unassignIpAddress(userVm.getGuestIpAddress()); s_logger.debug("Released guest IP address=" + userVm.getGuestIpAddress() + " vmName=" + userVm.getName() + " dcId=" + userVm.getDataCenterId()); - EventVO event = new EventVO(); - event.setUserId(User.UID_SYSTEM); - event.setAccountId(userVm.getAccountId()); - event.setType(EventTypes.EVENT_NET_IP_RELEASE); - event.setParameters("guestIPaddress=" + userVm.getGuestIpAddress() + "\nvmName=" + userVm.getName() + "\ndcId=" + userVm.getDataCenterId()); - event.setDescription("released a public ip: " + userVm.getGuestIpAddress()); - _eventDao.persist(event); + EventUtils.saveEvent(User.UID_SYSTEM, userVm.getAccountId(), EventTypes.EVENT_NET_IP_RELEASE, "released a public ip: " + userVm.getGuestIpAddress()); } else { if (_IpAllocator != null && _IpAllocator.exteralIpAddressAllocatorEnabled()) { String guestIp = userVm.getGuestIpAddress(); @@ -1151,15 +1132,11 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager } diskOfferingId = volume.getDiskOfferingId(); long sizeMB = volume.getSize()/(1024*1024); - String eventParams = "id=" + volume.getId() +"\ndoId="+diskOfferingId+"\ntId="+templateId+"\ndcId="+volume.getDataCenterId()+"\nsize="+sizeMB; - EventVO volEvent = new EventVO(); - volEvent.setAccountId(volume.getAccountId()); - volEvent.setUserId(1L); - volEvent.setType(EventTypes.EVENT_VOLUME_CREATE); - volEvent.setParameters(eventParams); StoragePoolVO pool = _storagePoolDao.findById(volume.getPoolId()); - volEvent.setDescription("Created volume: "+ volume.getName() +" with size: " + sizeMB + " MB in pool: " + pool.getName()); - _eventDao.persist(volEvent); + EventUtils.saveEvent(User.UID_SYSTEM, volume.getAccountId(), EventTypes.EVENT_VOLUME_CREATE, "Created volume: "+ volume.getName() +" with size: " + sizeMB + " MB in pool: " + pool.getName()); + + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_CREATE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(), diskOfferingId, templateId , sizeMB); + _usageEventDao.persist(usageEvent); } _accountMgr.incrementResourceCount(account.getId(), ResourceType.volume, new Long(volumes.size()));