Updated Branches: refs/heads/4.2 422cc2a92 -> 452722736
CLOUDSTACK-3857: create VOLUME_CREATE event at CreateVolumeCmd instead of at AttachVolumeCmd. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/45272273 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/45272273 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/45272273 Branch: refs/heads/4.2 Commit: 4527227360512e3edad93117dd10f25aa2619855 Parents: 422cc2a Author: Min Chen <[email protected]> Authored: Tue Jul 30 14:24:12 2013 -0700 Committer: Min Chen <[email protected]> Committed: Tue Jul 30 14:24:12 2013 -0700 ---------------------------------------------------------------------- .../com/cloud/storage/VolumeManagerImpl.java | 52 +++++++------------- 1 file changed, 17 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/45272273/server/src/com/cloud/storage/VolumeManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/VolumeManagerImpl.java b/server/src/com/cloud/storage/VolumeManagerImpl.java index d7e4468..d8cbf11 100644 --- a/server/src/com/cloud/storage/VolumeManagerImpl.java +++ b/server/src/com/cloud/storage/VolumeManagerImpl.java @@ -104,9 +104,8 @@ import com.cloud.domain.Domain; import com.cloud.domain.dao.DomainDao; import com.cloud.event.ActionEvent; import com.cloud.event.EventTypes; -import com.cloud.event.UsageEventVO; +import com.cloud.event.UsageEventUtils; import com.cloud.event.dao.EventDao; -import com.cloud.event.dao.UsageEventDao; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientStorageCapacityException; import com.cloud.exception.InvalidParameterValueException; @@ -267,8 +266,6 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { @Inject protected ClusterDao _clusterDao; @Inject - protected UsageEventDao _usageEventDao; - @Inject protected VirtualMachineManager _vmMgr; @Inject protected DomainRouterDao _domrDao; @@ -605,13 +602,8 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { createdVolume = createVolumeFromSnapshot(volume, snapshot); - UsageEventVO usageEvent = new UsageEventVO( - EventTypes.EVENT_VOLUME_CREATE, - createdVolume.getAccountId(), - createdVolume.getDataCenterId(), createdVolume.getId(), - createdVolume.getName(), createdVolume.getDiskOfferingId(), - null, createdVolume.getSize()); - _usageEventDao.persist(usageEvent); + UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE, createdVolume.getAccountId(), createdVolume.getDataCenterId(), createdVolume.getId(), + createdVolume.getName(), createdVolume.getDiskOfferingId(), null, createdVolume.getSize(), Volume.class.getName(), createdVolume.getUuid()); return _volsDao.findById(createdVolume.getId()); } @@ -703,12 +695,6 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { throw new CloudRuntimeException("create volume failed:" + result.getResult()); } - - UsageEventVO usageEvent = new UsageEventVO( - EventTypes.EVENT_VOLUME_CREATE, volume.getAccountId(), - volume.getDataCenterId(), volume.getId(), volume.getName(), - volume.getDiskOfferingId(), null, volume.getSize()); - _usageEventDao.persist(usageEvent); return result.getVolume(); } catch (InterruptedException e) { s_logger.error("create volume failed", e); @@ -747,6 +733,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { .getDomainId()); volume.setFormat(ImageFormat.valueOf(format)); volume = _volsDao.persist(volume); + UserContext.current().setEventDetails("Volume Id: " + volume.getId()); // Increment resource count during allocation; if actual creation fails, @@ -1027,6 +1014,11 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { } volume = _volsDao.persist(volume); + if (cmd.getSnapshotId() == null) { + // for volume created from snapshot, create usage event after volume creation + UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(), diskOfferingId, + null, size, Volume.class.getName(), volume.getUuid()); + } UserContext.current().setEventDetails("Volume Id: " + volume.getId()); @@ -1259,10 +1251,8 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { } _volsDao.update(volume.getId(), volume); // Log usage event for volumes belonging user VM's only - UsageEventVO usageEvent = new UsageEventVO( - EventTypes.EVENT_VOLUME_RESIZE, volume.getAccountId(), - volume.getDataCenterId(), volume.getId(), volume.getName(), volume.getDiskOfferingId(), volume.getTemplateId(), volume.getSize()); - _usageEventDao.persist(usageEvent); + UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_RESIZE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(), + volume.getDiskOfferingId(), volume.getTemplateId(), volume.getSize(), Volume.class.getName(), volume.getUuid()); /* Update resource count for the account on primary storage resource */ if (!shrinkOk) { @@ -1341,10 +1331,8 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { } // Log usage event for volumes belonging user VM's only - UsageEventVO usageEvent = new UsageEventVO( - EventTypes.EVENT_VOLUME_DELETE, volume.getAccountId(), - volume.getDataCenterId(), volume.getId(), volume.getName()); - _usageEventDao.persist(usageEvent); + UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_DELETE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(), + Volume.class.getName(), volume.getUuid()); } } // expunge volume from primary if volume is on primary @@ -1417,11 +1405,8 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { // Save usage event and update resource count for user vm volumes if (vm instanceof UserVm) { - UsageEventVO usageEvent = new UsageEventVO( - EventTypes.EVENT_VOLUME_CREATE, vol.getAccountId(), - vol.getDataCenterId(), vol.getId(), vol.getName(), - offering.getId(), null, size); - _usageEventDao.persist(usageEvent); + UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE, vol.getAccountId(), vol.getDataCenterId(), vol.getId(), vol.getName(), offering.getId(), null, size, + Volume.class.getName(), vol.getUuid()); _resourceLimitMgr.incrementResourceCount(vm.getAccountId(), ResourceType.volume); @@ -1468,11 +1453,8 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { offeringId = offering.getId(); } - UsageEventVO usageEvent = new UsageEventVO( - EventTypes.EVENT_VOLUME_CREATE, vol.getAccountId(), - vol.getDataCenterId(), vol.getId(), vol.getName(), - offeringId, template.getId(), vol.getSize()); - _usageEventDao.persist(usageEvent); + UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE, vol.getAccountId(), vol.getDataCenterId(), vol.getId(), vol.getName(), offeringId, null, size, + Volume.class.getName(), vol.getUuid()); _resourceLimitMgr.incrementResourceCount(vm.getAccountId(), ResourceType.volume);
