From b12cd70216eba14f122e3f71cc6e4e731008a4e0 Mon Sep 17 00:00:00 2001 From: kishan Date: Wed, 22 Dec 2010 18:03:24 +0530 Subject: [PATCH] bug 7504: Added usage events and made corresponding changes in usage server --- .../production/premium/conf/usage-components.xml | 3 ++- .../src/com/cloud/network/NetworkManagerImpl.java | 4 ++-- .../network/lb/LoadBalancingRulesManagerImpl.java | 7 +++++++ .../src/com/cloud/storage/StorageManagerImpl.java | 12 ++++++++++++ .../cloud/storage/snapshot/SnapshotManagerImpl.java | 13 +++++++++++++ .../src/com/cloud/template/TemplateManagerImpl.java | 7 ++++++- .../src/com/cloud/vm/VirtualMachineManagerImpl.java | 7 +++++-- 7 files changed, 47 insertions(+), 6 deletions(-) diff --git a/build/deploy/production/premium/conf/usage-components.xml b/build/deploy/production/premium/conf/usage-components.xml index 5e178302819..37d66abe715 100644 --- a/build/deploy/production/premium/conf/usage-components.xml +++ b/build/deploy/production/premium/conf/usage-components.xml @@ -29,7 +29,6 @@ 50 -1 - @@ -41,6 +40,8 @@ + + DAILY diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index f9d2811a5d9..fdec1d7c600 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -255,7 +255,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag throw new CloudRuntimeException("Found address to allocate but unable to update: " + addr); } if(!sourceNat){ - UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_NET_IP_ASSIGN, owner.getAccountId(), dcId, -1, addr.getAddress()); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_NET_IP_ASSIGN, owner.getAccountId(), dcId, 0, addr.getAddress()); _usageEventDao.persist(usageEvent); } @@ -673,7 +673,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag _ipAddressDao.unassignIpAddress(ipAddress); s_logger.debug("released a public ip: " + ipAddress); if(!ip.isSourceNat()){ - UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_NET_IP_RELEASE, ownerId, ip.getDataCenterId(), -1, ipAddress); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_NET_IP_RELEASE, ownerId, ip.getDataCenterId(), 0, ipAddress); _usageEventDao.persist(usageEvent); } } diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index 3bd44c1119c..82a46fff76d 100644 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -36,7 +36,9 @@ import com.cloud.dc.dao.VlanDao; import com.cloud.domain.dao.DomainDao; import com.cloud.event.EventTypes; import com.cloud.event.EventVO; +import com.cloud.event.UsageEventVO; import com.cloud.event.dao.EventDao; +import com.cloud.event.dao.UsageEventDao; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.PermissionDeniedException; @@ -105,6 +107,7 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager, @Inject AccountDao _accountDao; @Inject DomainDao _domainDao; @Inject NicDao _nicDao; + @Inject UsageEventDao _usageEventDao; @Override @DB public boolean assignToLoadBalancer(long loadBalancerId, List instanceIds) { @@ -241,6 +244,8 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager, } _rulesDao.remove(lb.getId()); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_LOAD_BALANCER_DELETE, lb.getAccountId(), 0 , lb.getId(), null); + _usageEventDao.persist(usageEvent); s_logger.debug("Load balancer with id " + lb.getId() + " is removed successfully"); return true; } @@ -327,6 +332,8 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager, 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); } _eventDao.persist(event); } diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index e7785b3aab5..a1b099906de 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -700,6 +700,8 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag 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; @@ -2684,6 +2686,11 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag vol = _volsDao.persist(vol); + if(vm instanceof UserVm){ + long sizeMB = size / (1024 * 1024); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_CREATE, vol.getAccountId(), vol.getDataCenterId(), vol.getId(), vol.getName(), offering.getId(), null , sizeMB); + _usageEventDao.persist(usageEvent); + } return toDiskProfile(vol, offering); } @@ -2716,6 +2723,11 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag vol = _volsDao.persist(vol); + if(vm instanceof UserVm){ + long sizeMB = vol.getSize() / (1024 * 1024); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_CREATE, vol.getAccountId(), vol.getDataCenterId(), vol.getId(), vol.getName(), offering.getId(), template.getId() , sizeMB); + _usageEventDao.persist(usageEvent); + } return toDiskProfile(vol, offering); } diff --git a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java index a789192c28e..f6bbdff9f02 100755 --- a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java +++ b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java @@ -59,7 +59,9 @@ import com.cloud.domain.dao.DomainDao; 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; +import com.cloud.event.dao.UsageEventDao; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.PermissionDeniedException; import com.cloud.exception.ResourceAllocationException; @@ -138,6 +140,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma @Inject protected AsyncJobManager _asyncMgr; @Inject protected AccountManager _accountMgr; @Inject protected ClusterDao _clusterDao; + @Inject private UsageEventDao _usageEventDao; String _name; private int _totalRetries; private int _pauseInterval; @@ -524,6 +527,8 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma 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()); + _usageEventDao.persist(usageEvent); } else { @@ -769,6 +774,12 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma 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); + } + + return success; } @@ -955,6 +966,8 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma event.setParameters(eventParams); event.setLevel(EventVO.LEVEL_INFO); _eventDao.persist(event); + 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/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java index 168f81d1f9f..4fac3ba883b 100755 --- a/server/src/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/com/cloud/template/TemplateManagerImpl.java @@ -129,6 +129,7 @@ import com.cloud.vm.VMInstanceVO; import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.dao.VMInstanceDao; + @Local(value={TemplateManager.class, TemplateService.class}) public class TemplateManagerImpl implements TemplateManager, Manager, TemplateService { private final static Logger s_logger = Logger.getLogger(TemplateManagerImpl.class); @@ -160,7 +161,7 @@ public class TemplateManagerImpl implements TemplateManager, Manager, TemplateSe @Inject AsyncJobManager _asyncMgr; @Inject UserVmManager _vmMgr; @Inject ConfigurationDao _configDao; - @Inject UsageEventDao _usageEventDao; + @Inject UsageEventDao _usageEventDao; protected SearchBuilder HostTemplateStatesSearch; @Override @@ -817,6 +818,8 @@ public class TemplateManagerImpl implements TemplateManager, Manager, TemplateSe _downloadMonitor.copyTemplate(vmTemplate, srcSecHost, dstSecHost); + UsageEventVO usageEvent = new UsageEventVO(copyEventType, account.getId(), destZoneId, templateId, null, null, null, srcTmpltHost.getSize()); + _usageEventDao.persist(usageEvent); saveEvent(userId, account.getId(), account.getDomainId(), copyEventType, copyEventDescription, EventVO.LEVEL_INFO, params, startEventId); return true; } @@ -963,6 +966,8 @@ public class TemplateManagerImpl implements TemplateManager, Manager, TemplateSe String zoneParams = params + "\ndcId=" + sZoneId; saveEvent(userId, account.getId(), account.getDomainId(), eventType, description + template.getName() + " succesfully deleted.", EventVO.LEVEL_INFO, zoneParams, 0); + UsageEventVO usageEvent = new UsageEventVO(eventType, account.getId(), sZoneId, templateId, null, null, null, null); + _usageEventDao.persist(usageEvent); } finally { if (lock != null) { _tmpltHostDao.releaseFromLockTable(lock.getId()); diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index 2e0aadc9130..dcbee11b561 100644 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -76,6 +76,7 @@ import com.cloud.user.Account; import com.cloud.user.User; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; +import com.cloud.uservm.UserVm; import com.cloud.utils.Journal; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; @@ -434,8 +435,10 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Cluster if (!stateTransitTo(vm, Event.OperationSucceeded, dest.getHost().getId())) { throw new CloudRuntimeException("Unable to transition to a new state."); } - UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_START, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), vm.getName(), vm.getServiceOfferingId(), vm.getTemplateId(), null); - _usageEventDao.persist(usageEvent); + if(vm instanceof UserVm){ + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_START, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), vm.getName(), vm.getServiceOfferingId(), vm.getTemplateId(), null); + _usageEventDao.persist(usageEvent); + } return vm; } s_logger.info("Unable to start VM on " + dest.getHost() + " due to " + answers[0].getDetails());