From bdde5335f9988e460a667da97ebe0cde2e74e7a1 Mon Sep 17 00:00:00 2001 From: Rajani Karuturi Date: Fri, 30 May 2014 11:47:56 +0530 Subject: [PATCH] FIXED CLOUDSTACK-6669 Support volume resize in usage server --- .../src/com/cloud/usage/UsageManagerImpl.java | 21 +++++-------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/usage/src/com/cloud/usage/UsageManagerImpl.java b/usage/src/com/cloud/usage/UsageManagerImpl.java index 4ceecbb9734..159380b94c6 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 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 sc = _usageVolumeDao.createSearchCriteria();