FIXED CLOUDSTACK-6669 Support volume resize in usage server
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/cc663bb7 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/cc663bb7 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/cc663bb7 Branch: refs/heads/4.4-forward Commit: cc663bb7fc515a4960cd483e8f5697bc141ce95e Parents: c5a1423 Author: Rajani Karuturi <rajanikarut...@gmail.com> Authored: Fri May 30 11:47:56 2014 +0530 Committer: Kishan Kavala <kis...@cloud.com> Committed: Fri May 30 14:50:52 2014 +0530 ---------------------------------------------------------------------- usage/src/com/cloud/usage/UsageManagerImpl.java | 21 +++++--------------- 1 file changed, 5 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cc663bb7/usage/src/com/cloud/usage/UsageManagerImpl.java ---------------------------------------------------------------------- diff --git a/usage/src/com/cloud/usage/UsageManagerImpl.java b/usage/src/com/cloud/usage/UsageManagerImpl.java index 4ceecbb..159380b 100644 --- a/usage/src/com/cloud/usage/UsageManagerImpl.java +++ b/usage/src/com/cloud/usage/UsageManagerImpl.java @@ -961,9 +961,8 @@ public class UsageManagerImpl extends ManagerBase implements UsageManager, Runna } private boolean isVolumeEvent(String eventType) { - if (eventType == null) - return false; - return (eventType.equals(EventTypes.EVENT_VOLUME_CREATE) || eventType.equals(EventTypes.EVENT_VOLUME_DELETE)); + return eventType != null && + (eventType.equals(EventTypes.EVENT_VOLUME_CREATE) || eventType.equals(EventTypes.EVENT_VOLUME_DELETE) || eventType.equals(EventTypes.EVENT_VOLUME_RESIZE)); } private boolean isTemplateEvent(String eventType) { @@ -1366,20 +1365,9 @@ public class UsageManagerImpl extends ManagerBase implements UsageManager, Runna private void createVolumeHelperEvent(UsageEventVO event) { - Long doId = -1L; - long zoneId = -1L; - Long templateId = -1L; - long size = -1L; - long volId = event.getResourceId(); - if (EventTypes.EVENT_VOLUME_CREATE.equals(event.getType())) { - doId = event.getOfferingId(); - zoneId = event.getZoneId(); - templateId = event.getTemplateId(); - size = event.getSize(); - } - if (EventTypes.EVENT_VOLUME_CREATE.equals(event.getType())) { + if (EventTypes.EVENT_VOLUME_CREATE.equals(event.getType()) || EventTypes.EVENT_VOLUME_RESIZE.equals(event.getType())) { SearchCriteria<UsageVolumeVO> sc = _usageVolumeDao.createSearchCriteria(); sc.addAnd("accountId", SearchCriteria.Op.EQ, event.getAccountId()); sc.addAnd("id", SearchCriteria.Op.EQ, volId); @@ -1389,6 +1377,7 @@ public class UsageManagerImpl extends ManagerBase implements UsageManager, Runna //This is a safeguard to avoid double counting of volumes. s_logger.error("Found duplicate usage entry for volume: " + volId + " assigned to account: " + event.getAccountId() + "; marking as deleted..."); } + //an entry exists if it is a resize volume event. marking the existing deleted and creating a new one in the case of resize. for (UsageVolumeVO volumesVO : volumesVOs) { if (s_logger.isDebugEnabled()) { s_logger.debug("deleting volume: " + volumesVO.getId() + " from account: " + volumesVO.getAccountId()); @@ -1400,7 +1389,7 @@ public class UsageManagerImpl extends ManagerBase implements UsageManager, Runna s_logger.debug("create volume with id : " + volId + " for account: " + event.getAccountId()); } Account acct = _accountDao.findByIdIncludingRemoved(event.getAccountId()); - UsageVolumeVO volumeVO = new UsageVolumeVO(volId, zoneId, event.getAccountId(), acct.getDomainId(), doId, templateId, size, event.getCreateDate(), null); + UsageVolumeVO volumeVO = new UsageVolumeVO(volId, event.getZoneId(), event.getAccountId(), acct.getDomainId(), event.getOfferingId(), event.getTemplateId(), event.getSize(), event.getCreateDate(), null); _usageVolumeDao.persist(volumeVO); } else if (EventTypes.EVENT_VOLUME_DELETE.equals(event.getType())) { SearchCriteria<UsageVolumeVO> sc = _usageVolumeDao.createSearchCriteria();