From 8eb665246eb2ee8d68757fa0f86b1a0090ab9ff5 Mon Sep 17 00:00:00 2001 From: kishan Date: Thu, 24 Feb 2011 20:08:12 +0530 Subject: [PATCH] bug 7935: Included hypervisor type to vm usage records status 7935: resolved fixed --- core/src/com/cloud/event/UsageEventVO.java | 18 ++++++++++++++++++ .../com/cloud/event/dao/UsageEventDaoImpl.java | 8 ++++---- .../com/cloud/storage/StorageManagerImpl.java | 4 ++-- .../cloud/template/TemplateManagerImpl.java | 2 +- .../src/com/cloud/user/AccountManagerImpl.java | 5 +++-- server/src/com/cloud/vm/UserVmManagerImpl.java | 16 ++++++++-------- setup/db/create-schema.sql | 1 + 7 files changed, 37 insertions(+), 17 deletions(-) diff --git a/core/src/com/cloud/event/UsageEventVO.java b/core/src/com/cloud/event/UsageEventVO.java index 6d9ff6e3291..b98a0cf9b82 100644 --- a/core/src/com/cloud/event/UsageEventVO.java +++ b/core/src/com/cloud/event/UsageEventVO.java @@ -64,6 +64,9 @@ public class UsageEventVO implements UsageEvent { @Column(name="size") private Long size; + @Column(name="resource_type") + private String resourceType; + @Column(name="processed") boolean processed; @@ -99,6 +102,17 @@ public class UsageEventVO implements UsageEvent { this.size = size; } + public UsageEventVO(String usageType, long accountId, long zoneId, long resourceId, String resourceName, Long offeringId, Long templateId, String resourceType) { + this.type = usageType; + this.accountId = accountId; + this.zoneId = zoneId; + this.resourceId = resourceId; + this.resourceName = resourceName; + this.offeringId = offeringId; + this.templateId = templateId; + this.resourceType = resourceType; + } + @Override public long getId() { return id; @@ -182,5 +196,9 @@ public class UsageEventVO implements UsageEvent { public void setProcessed(boolean processed) { this.processed = processed; } + + public String getResourceType() { + return resourceType; + } } diff --git a/core/src/com/cloud/event/dao/UsageEventDaoImpl.java b/core/src/com/cloud/event/dao/UsageEventDaoImpl.java index 70dce7d6dcb..f0eb5db8dd2 100644 --- a/core/src/com/cloud/event/dao/UsageEventDaoImpl.java +++ b/core/src/com/cloud/event/dao/UsageEventDaoImpl.java @@ -42,10 +42,10 @@ public class UsageEventDaoImpl extends GenericDaoBase implem public static final Logger s_logger = Logger.getLogger(UsageEventDaoImpl.class.getName()); private final SearchBuilder latestEventsSearch; - private static final String COPY_EVENTS = "INSERT INTO cloud_usage.usage_event (id, type, account_id, created, zone_id, resource_id, resource_name, offering_id, template_id, size) " + - "SELECT id, type, account_id, created, zone_id, resource_id, resource_name, offering_id, template_id, size FROM cloud.usage_event vmevt WHERE vmevt.id > ? and vmevt.created <= ? "; - private static final String COPY_ALL_EVENTS = "INSERT INTO cloud_usage.usage_event (id, type, account_id, created, zone_id, resource_id, resource_name, offering_id, template_id, size) " + - "SELECT id, type, account_id, created, zone_id, resource_id, resource_name, offering_id, template_id, size FROM cloud.usage_event where id <= ? "; + private static final String COPY_EVENTS = "INSERT INTO cloud_usage.usage_event (id, type, account_id, created, zone_id, resource_id, resource_name, offering_id, template_id, size, resource_type) " + + "SELECT id, type, account_id, created, zone_id, resource_id, resource_name, offering_id, template_id, size, resource_type FROM cloud.usage_event vmevt WHERE vmevt.id > ? and vmevt.created <= ? "; + private static final String COPY_ALL_EVENTS = "INSERT INTO cloud_usage.usage_event (id, type, account_id, created, zone_id, resource_id, resource_name, offering_id, template_id, size, resource_type) " + + "SELECT id, type, account_id, created, zone_id, resource_id, resource_name, offering_id, template_id, size, resource_type FROM cloud.usage_event where id <= ? "; public UsageEventDaoImpl () { diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index 766dc5e40e0..7402a8d2438 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -2253,7 +2253,7 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag if (volume.getState() != Volume.State.Destroy) { destroyVolume(volume); UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_DELETE, volume.getAccountId(), volume.getDataCenterId(), volumeId, - volume.getName(), null, null, null); + volume.getName()); _usageEventDao.persist(usageEvent); } @@ -2632,7 +2632,7 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag VMInstanceVO vm = _vmInstanceDao.findById(vmId); if(vm.getType() == VirtualMachine.Type.User){ UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_DELETE, vol.getAccountId(), vol.getDataCenterId(), vol.getId(), - vol.getName(), null, null, null); + vol.getName()); _usageEventDao.persist(usageEvent); } } diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java index 8c2db9bc5e7..6e0a160ecda 100755 --- a/server/src/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/com/cloud/template/TemplateManagerImpl.java @@ -933,7 +933,7 @@ public class TemplateManagerImpl implements TemplateManager, Manager, TemplateSe _tmpltZoneDao.remove(templateZone.getId()); } - UsageEventVO usageEvent = new UsageEventVO(eventType, account.getId(), sZoneId, templateId, null, null, null, null); + UsageEventVO usageEvent = new UsageEventVO(eventType, account.getId(), sZoneId, templateId, null); _usageEventDao.persist(usageEvent); } finally { if (lock != null) { diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index fbcb10d8ecb..082f1af32a8 100755 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -869,7 +869,8 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag s_logger.error("Unable to destroy vm: " + vm.getId()); accountCleanupNeeded = true; } - UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_DESTROY, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), vm.getName(), vm.getServiceOfferingId(), vm.getTemplateId(), null); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_DESTROY, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), vm.getName(), + vm.getServiceOfferingId(), vm.getTemplateId(), vm.getHypervisorType().toString()); _usageEventDao.persist(usageEvent); } @@ -880,7 +881,7 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag _storageMgr.destroyVolume(volume); if(volume.getPoolId() != null){ UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_DELETE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), - volume.getName(), null, null, null); + volume.getName()); _usageEventDao.persist(usageEvent); } } diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index d8a991a47ef..c1702e85a01 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -1031,7 +1031,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager _accountMgr.incrementResourceCount(account.getId(), ResourceType.volume, new Long(volumes.size())); - UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_CREATE, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), vm.getName(), vm.getServiceOfferingId(), vm.getTemplateId(), null); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_CREATE, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), vm.getName(), vm.getServiceOfferingId(), vm.getTemplateId(), vm.getHypervisorType().toString()); _usageEventDao.persist(usageEvent); txn.commit(); @@ -1501,7 +1501,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager _storageMgr.destroyVolume(volume); if ((volume.getStatus() == AsyncInstanceCreateStatus.Created) && (volume.getVolumeType().equals(VolumeType.ROOT))) { UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_DELETE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), - volume.getName(), null, null, null); + volume.getName()); _usageEventDao.persist(usageEvent); } } catch (ConcurrentOperationException e) { @@ -2111,7 +2111,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager s_logger.debug("Successfully allocated DB entry for " + vm); } UserContext.current().setEventDetails("Vm Id: "+vm.getId()); - UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_CREATE, accountId, dc.getId(), vm.getId(), vm.getName(), offering.getId(), template.getId(), null); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_CREATE, accountId, dc.getId(), vm.getId(), vm.getName(), offering.getId(), template.getId(), hypervisorType.toString()); _usageEventDao.persist(usageEvent); _accountMgr.incrementResourceCount(accountId, ResourceType.user_vm); @@ -2255,7 +2255,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager @Override public boolean finalizeStart(VirtualMachineProfile profile, long hostId, Commands cmds, ReservationContext context) { UserVmVO vm = profile.getVirtualMachine(); - UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_START, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), vm.getName(), vm.getServiceOfferingId(), vm.getTemplateId(), null); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_START, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), vm.getName(), vm.getServiceOfferingId(), vm.getTemplateId(), vm.getHypervisorType().toString()); _usageEventDao.persist(usageEvent); List nics = _nicDao.listByVmId(vm.getId()); @@ -2325,13 +2325,13 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager @Override public void finalizeStop(VirtualMachineProfile profile, StopAnswer answer) { VMInstanceVO vm = profile.getVirtualMachine(); - UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_STOP, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), vm.getName(), vm.getServiceOfferingId(), vm.getTemplateId(), null); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_STOP, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), vm.getName()); _usageEventDao.persist(usageEvent); List nics = _nicDao.listByVmId(vm.getId()); for (NicVO nic : nics) { NetworkVO network = _networkDao.findById(nic.getNetworkId()); - usageEvent = new UsageEventVO(EventTypes.EVENT_NETWORK_OFFERING_DELETE, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), null, network.getNetworkOfferingId(), null, null); + usageEvent = new UsageEventVO(EventTypes.EVENT_NETWORK_OFFERING_DELETE, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), null, network.getNetworkOfferingId(), null, 0L); _usageEventDao.persist(usageEvent); } } @@ -2389,11 +2389,11 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager for (VolumeVO volume : volumes) { if (volume.getVolumeType().equals(VolumeType.ROOT)) { UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_DELETE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), - volume.getName(), null, null, null); + volume.getName()); _usageEventDao.persist(usageEvent); } } - UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_DESTROY, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), vm.getName(), vm.getServiceOfferingId(), vm.getTemplateId(), null); + UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VM_DESTROY, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), vm.getName()); _usageEventDao.persist(usageEvent); _accountMgr.decrementResourceCount(vm.getAccountId(), ResourceType.user_vm); return _vmDao.findById(vmId); diff --git a/setup/db/create-schema.sql b/setup/db/create-schema.sql index f98e152339d..3e72be0c475 100755 --- a/setup/db/create-schema.sql +++ b/setup/db/create-schema.sql @@ -1363,6 +1363,7 @@ CREATE TABLE `cloud`.`usage_event` ( `offering_id` bigint unsigned, `template_id` bigint unsigned, `size` bigint unsigned, + `resource_type` varchar(32), `processed` tinyint NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;