public static void saveUsageEvent(String usageType, long accountId, long zoneId, long resourceId, String resourceName, Long offeringId, Long templateId, String resourceType) { s_usageEventDao.persist(new UsageEventVO(usageType, accountId, zoneId, resourceId, resourceName, offeringId, templateId, resourceType)); }
long zoneId = -1L; long snapId = event.getResourceId(); if (EventTypes.EVENT_SNAPSHOT_CREATE.equals(event.getType())) { if (usageSnapshotSelection){ snapSize = event.getVirtualSize(); }else { snapSize = event.getSize(); zoneId = event.getZoneId(); if (EventTypes.EVENT_SNAPSHOT_CREATE.equals(event.getType())) { if (s_logger.isDebugEnabled()) { s_logger.debug("create snapshot with id : " + snapId + " for account: " + event.getAccountId()); Account acct = _accountDao.findByIdIncludingRemoved(event.getAccountId()); UsageStorageVO storageVO = new UsageStorageVO(snapId, zoneId, event.getAccountId(), acct.getDomainId(), StorageTypes.SNAPSHOT, null, snapSize, event.getCreateDate(), null); _usageStorageDao.persist(storageVO); } else if (EventTypes.EVENT_SNAPSHOT_DELETE.equals(event.getType())) { List<UsageStorageVO> storageVOs = _usageStorageDao.listById(event.getAccountId(), snapId, StorageTypes.SNAPSHOT); if (storageVOs.size() > 1) { s_logger.warn("More that one usage entry for storage: " + snapId + " assigned to account: " + event.getAccountId() + "; marking them all as deleted..."); s_logger.debug("deleting snapshot: " + storageVO.getId() + " from account: " + storageVO.getAccountId()); storageVO.setDeleted(event.getCreateDate()); // there really shouldn't be more than one _usageStorageDao.update(storageVO);
private static void saveUsageEvent(String usageType, long accountId, long zoneId, long resourceId, String resourceName, Long offeringId, Long templateId, String resourceType, Map<String, String> details) { UsageEventVO usageEvent = new UsageEventVO(usageType, accountId, zoneId, resourceId, resourceName, offeringId, templateId, resourceType); s_usageEventDao.persist(usageEvent); s_usageEventDao.saveDetails(usageEvent.getId(), details); }
private void createVMSnapshotEvent(UsageEventVO event) { Long vmId = event.getResourceId(); Long volumeId = event.getTemplateId(); Long offeringId = event.getOfferingId(); Long zoneId = event.getZoneId(); Long accountId = event.getAccountId(); //Size could be null for VM snapshot delete events long size = (event.getSize() == null) ? 0 : event.getSize(); Date created = event.getCreateDate(); Account acct = _accountDao.findByIdIncludingRemoved(event.getAccountId()); Long domainId = acct.getDomainId(); UsageVMSnapshotVO vsVO = new UsageVMSnapshotVO(volumeId, zoneId, accountId, domainId, vmId, offeringId, size, created, null); _usageVMSnapshotDao.persist(vsVO); }
usageEvent.setCreatedDate(event.getCreateDate()); if (usageEvent.getZoneId() == -1) { usageEvent.setZoneId(0); + " usage_event.offering_id, usage_event.template_id, usage_event.size) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"); ) { pstmt.setString(1, usageEvent.getType()); pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), usageEvent.getCreateDate())); pstmt.setLong(3, usageEvent.getAccountId()); pstmt.setLong(4, usageEvent.getZoneId()); pstmt.setLong(5, usageEvent.getResourceId()); pstmt.setString(6, usageEvent.getResourceName()); if (usageEvent.getOfferingId() != null) { pstmt.setLong(7, usageEvent.getOfferingId()); } else { pstmt.setNull(7, Types.BIGINT); if (usageEvent.getTemplateId() != null) { pstmt.setLong(8, usageEvent.getTemplateId()); } else { pstmt.setNull(8, Types.BIGINT); if (usageEvent.getSize() != null) { pstmt.setLong(9, usageEvent.getSize()); } else { pstmt.setNull(9, Types.BIGINT);
long vmId = event.getResourceId(); Long soId = event.getOfferingId(); long zoneId = event.getZoneId(); String vmName = event.getResourceName(); if (EventTypes.EVENT_VM_START.equals(event.getType())) { s_logger.error("found entries for a vm running with id: " + vmId + ", which are not stopped. Ending them all..."); for (UsageVMInstanceVO usageInstance : usageInstances) { usageInstance.setEndDate(event.getCreateDate()); _usageInstanceDao.update(usageInstance); usageInstance.setEndDate(event.getCreateDate()); _usageInstanceDao.update(usageInstance); usageInstance.setServiceOfferingId(soId); usageInstance.setStartDate(event.getCreateDate()); usageInstance.setEndDate(null); populateDynamicComputeOfferingDetailsAndPersist(usageInstance, event.getId()); Long templateId = event.getTemplateId(); String hypervisorType = event.getResourceType(); new UsageVMInstanceVO(UsageTypes.RUNNING_VM, zoneId, event.getAccountId(), vmId, vmName, soId, templateId, hypervisorType, event.getCreateDate(), null); populateDynamicComputeOfferingDetailsAndPersist(usageInstanceNew, event.getId()); } catch (Exception ex) { s_logger.error("Error saving usage instance for vm: " + vmId, ex);
private void createIPHelperEvent(UsageEventVO event) { String ipAddress = event.getResourceName(); if (EventTypes.EVENT_NET_IP_ASSIGN.equals(event.getType())) { if (s_logger.isDebugEnabled()) { s_logger.debug("assigning ip address: " + ipAddress + " to account: " + event.getAccountId()); Account acct = _accountDao.findByIdIncludingRemoved(event.getAccountId()); long zoneId = event.getZoneId(); long id = event.getResourceId(); long sourceNat = event.getSize(); boolean isSourceNat = (sourceNat == 1) ? true : false; boolean isSystem = (event.getTemplateId() == null || event.getTemplateId() == 0) ? false : true; UsageIPAddressVO ipAddressVO = new UsageIPAddressVO(id, event.getAccountId(), acct.getDomainId(), zoneId, ipAddress, isSourceNat, isSystem, event.getCreateDate(), null); _usageIPAddressDao.persist(ipAddressVO); } else if (EventTypes.EVENT_NET_IP_RELEASE.equals(event.getType())) { SearchCriteria<UsageIPAddressVO> sc = _usageIPAddressDao.createSearchCriteria(); sc.addAnd("accountId", SearchCriteria.Op.EQ, event.getAccountId()); sc.addAnd("address", SearchCriteria.Op.EQ, ipAddress); sc.addAnd("released", SearchCriteria.Op.NULL); List<UsageIPAddressVO> ipAddressVOs = _usageIPAddressDao.search(sc, null); if (ipAddressVOs.size() > 1) { s_logger.warn("More that one usage entry for ip address: " + ipAddress + " assigned to account: " + event.getAccountId() + "; marking them all as released..."); ipAddressVO.setReleased(event.getCreateDate()); // there really shouldn't be more than one _usageIPAddressDao.update(ipAddressVO);
long vmId = event.getResourceId(); long networkOfferingId = event.getOfferingId(); long nicId = 0; try { nicId = Long.parseLong(event.getResourceName()); } catch (Exception e) { s_logger.warn("failed to get nic id from resource name, resource name is: " + event.getResourceName()); if (EventTypes.EVENT_NETWORK_OFFERING_CREATE.equals(event.getType()) || EventTypes.EVENT_NETWORK_OFFERING_ASSIGN.equals(event.getType())) { if (s_logger.isDebugEnabled()) { s_logger.debug("Creating networking offering: " + networkOfferingId + " for Vm: " + vmId + " for account: " + event.getAccountId()); zoneId = event.getZoneId(); Account acct = _accountDao.findByIdIncludingRemoved(event.getAccountId()); boolean isDefault = (event.getSize() == 1) ? true : false; UsageNetworkOfferingVO networkOffering = new UsageNetworkOfferingVO(zoneId, event.getAccountId(), acct.getDomainId(), vmId, networkOfferingId, nicId, isDefault, event.getCreateDate(), null); _usageNetworkOfferingDao.persist(networkOffering); } else if (EventTypes.EVENT_NETWORK_OFFERING_DELETE.equals(event.getType()) || EventTypes.EVENT_NETWORK_OFFERING_REMOVE.equals(event.getType())) { SearchCriteria<UsageNetworkOfferingVO> sc = _usageNetworkOfferingDao.createSearchCriteria(); sc.addAnd("accountId", SearchCriteria.Op.EQ, event.getAccountId()); sc.addAnd("vmInstanceId", SearchCriteria.Op.EQ, vmId); sc.addAnd("nicId", SearchCriteria.Op.EQ, nicId); if (noVOs.size() > 1) { s_logger.warn("More that one usage entry for networking offering: " + networkOfferingId + " for Vm: " + vmId + " assigned to account: " + event.getAccountId() + "; marking them all as deleted..."); noVO.setDeleted(event.getCreateDate()); // there really shouldn't be more than one
private void createVPNUserEvent(UsageEventVO event) { long zoneId = 0L; long userId = event.getResourceId(); if (EventTypes.EVENT_VPN_USER_ADD.equals(event.getType())) { if (s_logger.isDebugEnabled()) { s_logger.debug("Creating VPN user: " + userId + " for account: " + event.getAccountId()); } Account acct = _accountDao.findByIdIncludingRemoved(event.getAccountId()); String userName = event.getResourceName(); UsageVPNUserVO vpnUser = new UsageVPNUserVO(zoneId, event.getAccountId(), acct.getDomainId(), userId, userName, event.getCreateDate(), null); _usageVPNUserDao.persist(vpnUser); } else if (EventTypes.EVENT_VPN_USER_REMOVE.equals(event.getType())) { SearchCriteria<UsageVPNUserVO> sc = _usageVPNUserDao.createSearchCriteria(); sc.addAnd("accountId", SearchCriteria.Op.EQ, event.getAccountId()); sc.addAnd("userId", SearchCriteria.Op.EQ, userId); sc.addAnd("deleted", SearchCriteria.Op.NULL); List<UsageVPNUserVO> vuVOs = _usageVPNUserDao.search(sc, null); if (vuVOs.size() > 1) { s_logger.warn("More that one usage entry for vpn user: " + userId + " assigned to account: " + event.getAccountId() + "; marking them all as deleted..."); } for (UsageVPNUserVO vuVO : vuVOs) { if (s_logger.isDebugEnabled()) { s_logger.debug("deleting vpn user: " + vuVO.getUserId()); } vuVO.setDeleted(event.getCreateDate()); // there really shouldn't be more than one _usageVPNUserDao.update(vuVO); } } }
public UsageEventDaoImpl() { latestEventsSearch = createSearchBuilder(); latestEventsSearch.and("processed", latestEventsSearch.entity().isProcessed(), SearchCriteria.Op.EQ); latestEventsSearch.and("enddate", latestEventsSearch.entity().getCreateDate(), SearchCriteria.Op.LTEQ); latestEventsSearch.done(); IpeventsSearch = createSearchBuilder(); IpeventsSearch.and("startdate", IpeventsSearch.entity().getCreateDate(), SearchCriteria.Op.GTEQ); IpeventsSearch.and("enddate", IpeventsSearch.entity().getCreateDate(), SearchCriteria.Op.LTEQ); IpeventsSearch.and("zoneid", IpeventsSearch.entity().getZoneId(), SearchCriteria.Op.EQ); IpeventsSearch.and("networktype", IpeventsSearch.entity().getResourceType(), SearchCriteria.Op.EQ); IpeventsSearch.and().op("assignEvent", IpeventsSearch.entity().getType(), SearchCriteria.Op.EQ); IpeventsSearch.or("releaseEvent", IpeventsSearch.entity().getType(), SearchCriteria.Op.EQ); IpeventsSearch.cp(); IpeventsSearch.done(); }
Date oldestEventDate = events.get(0).getCreateDate(); if (oldestEventDate.getTime() < startDateMillis) { startDateMillis = oldestEventDate.getTime(); event.setProcessed(true); _usageEventDao.update(event.getId(), event); createHelperRecord(event);
@DB private long getMostRecentEventId() { TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.USAGE_DB); try { List<UsageEventVO> latestEvents = getLatestEvent(); if (latestEvents != null && latestEvents.size() == 1) { UsageEventVO latestEvent = latestEvents.get(0); if (latestEvent != null) { return latestEvent.getId(); } } return 0; } catch (Exception ex) { s_logger.error("error getting most recent event id", ex); throw new CloudRuntimeException(ex.getMessage()); } finally { txn.close(); } }
private void createHelperRecord(UsageEventVO event) { String eventType = event.getType(); if (isVMEvent(eventType)) { createVMHelperEvent(event); } else if (isIPEvent(eventType)) { createIPHelperEvent(event); } else if (isVolumeEvent(eventType)) { createVolumeHelperEvent(event); } else if (isTemplateEvent(eventType)) { createTemplateHelperEvent(event); } else if (isISOEvent(eventType)) { createISOHelperEvent(event); } else if (isSnapshotEvent(eventType)) { createSnapshotHelperEvent(event); } else if (isLoadBalancerEvent(eventType)) { createLoadBalancerHelperEvent(event); } else if (isPortForwardingEvent(eventType)) { createPortForwardingHelperEvent(event); } else if (isNetworkOfferingEvent(eventType)) { createNetworkOfferingEvent(event); } else if (isVPNUserEvent(eventType)) { createVPNUserEvent(event); } else if (isSecurityGroupEvent(eventType)) { createSecurityGroupEvent(event); } else if (isVmSnapshotEvent(eventType)) { createVMSnapshotEvent(event); } else if (isVmSnapshotOnPrimaryEvent(eventType)) { createVmSnapshotOnPrimaryEvent(event); } }
long volId = event.getResourceId(); if (EventTypes.EVENT_VOLUME_CREATE.equals(event.getType())) { if (volumesVOs.size() == 1) { s_logger.debug("Setting the volume with id: " + volId + " to 'deleted' in the usage_storage table."); volumesVOs.get(0).setDeleted(event.getCreateDate()); _usageStorageDao.update(volumesVOs.get(0)); 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); sc.addAnd("deleted", SearchCriteria.Op.NULL); s_logger.error("Found duplicate usage entry for volume: " + volId + " assigned to account: " + event.getAccountId() + "; marking as deleted..."); volumesVO.setDeleted(event.getCreateDate()); _usageVolumeDao.update(volumesVO); s_logger.debug("create volume with id : " + volId + " for account: " + event.getAccountId()); Account acct = _accountDao.findByIdIncludingRemoved(event.getAccountId()); 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(); sc.addAnd("accountId", SearchCriteria.Op.EQ, event.getAccountId()); sc.addAnd("id", SearchCriteria.Op.EQ, volId);
String address = IpEvent.getResourceName(); if (EventTypes.EVENT_NET_IP_ASSIGN.equals(IpEvent.getType())) { ipAssigment.put(address, IpEvent.getCreateDate()); } else if (EventTypes.EVENT_NET_IP_RELEASE.equals(IpEvent.getType())) { if (ipAssigment.containsKey(address)) { Date assigned = ipAssigment.get(address); ipAssigment.remove(address); IpPartialUsage.add(new UsageIPAddressVO(IpEvent.getAccountId(), address, assigned, IpEvent.getCreateDate())); } else { IpPartialUsage.add(new UsageIPAddressVO(IpEvent.getAccountId(), address, lastCollection, IpEvent.getCreateDate()));
long isoId = event.getResourceId(); long zoneId = event.getZoneId(); if (EventTypes.EVENT_ISO_CREATE.equals(event.getType()) || EventTypes.EVENT_ISO_COPY.equals(event.getType())) { isoSize = event.getSize(); if (EventTypes.EVENT_ISO_CREATE.equals(event.getType()) || EventTypes.EVENT_ISO_COPY.equals(event.getType())) { if (s_logger.isDebugEnabled()) { s_logger.debug("create iso with id : " + isoId + " for account: " + event.getAccountId()); List<UsageStorageVO> storageVOs = _usageStorageDao.listByIdAndZone(event.getAccountId(), isoId, StorageTypes.ISO, zoneId); if (storageVOs.size() > 0) { s_logger.warn("Usage entry for ISO: " + isoId + " assigned to account: " + event.getAccountId() + "already exists in zone " + zoneId); return; Account acct = _accountDao.findByIdIncludingRemoved(event.getAccountId()); UsageStorageVO storageVO = new UsageStorageVO(isoId, zoneId, event.getAccountId(), acct.getDomainId(), StorageTypes.ISO, null, isoSize, isoSize, event.getCreateDate(), null); _usageStorageDao.persist(storageVO); } else if (EventTypes.EVENT_ISO_DELETE.equals(event.getType())) { List<UsageStorageVO> storageVOs; if (zoneId != -1L) { storageVOs = _usageStorageDao.listByIdAndZone(event.getAccountId(), isoId, StorageTypes.ISO, zoneId); } else { storageVOs = _usageStorageDao.listById(event.getAccountId(), isoId, StorageTypes.ISO); s_logger.warn("More that one usage entry for storage: " + isoId + " assigned to account: " + event.getAccountId() + "; marking them all as deleted..."); storageVO.setDeleted(event.getCreateDate()); // there really shouldn't be more than one _usageStorageDao.update(storageVO);
public static void saveUsageEvent(String usageType, long accountId, long zoneId, long resourceId, String resourceName, Long offeringId, Long templateId, Long size, Long virtualSize) { s_usageEventDao.persist(new UsageEventVO(usageType, accountId, zoneId, resourceId, resourceName, offeringId, templateId, size, virtualSize)); }
templateId = event.getResourceId(); zoneId = event.getZoneId(); if (EventTypes.EVENT_TEMPLATE_CREATE.equals(event.getType()) || EventTypes.EVENT_TEMPLATE_COPY.equals(event.getType())) { templateSize = event.getSize(); if (templateSize < 1) { s_logger.error("Incorrect size for template with Id " + templateId); if (EventTypes.EVENT_TEMPLATE_CREATE.equals(event.getType()) || EventTypes.EVENT_TEMPLATE_COPY.equals(event.getType())) { if (s_logger.isDebugEnabled()) { s_logger.debug("create template with id : " + templateId + " for account: " + event.getAccountId()); List<UsageStorageVO> storageVOs = _usageStorageDao.listByIdAndZone(event.getAccountId(), templateId, StorageTypes.TEMPLATE, zoneId); if (storageVOs.size() > 0) { s_logger.warn("Usage entry for Template: " + templateId + " assigned to account: " + event.getAccountId() + "already exists in zone " + zoneId); return; Account acct = _accountDao.findByIdIncludingRemoved(event.getAccountId()); UsageStorageVO storageVO = new UsageStorageVO(templateId, zoneId, event.getAccountId(), acct.getDomainId(), StorageTypes.TEMPLATE, event.getTemplateId(), templateSize, event.getVirtualSize(), event.getCreateDate(), null); _usageStorageDao.persist(storageVO); } else if (EventTypes.EVENT_TEMPLATE_DELETE.equals(event.getType())) { List<UsageStorageVO> storageVOs; if (zoneId != -1L) { storageVOs = _usageStorageDao.listByIdAndZone(event.getAccountId(), templateId, StorageTypes.TEMPLATE, zoneId); } else { storageVOs = _usageStorageDao.listById(event.getAccountId(), templateId, StorageTypes.TEMPLATE); s_logger.warn("More that one usage entry for storage: " + templateId + " assigned to account: " + event.getAccountId() +
public static void saveUsageEvent(String usageType, long accountId, long zoneId, long ipAddressId, String ipAddress, boolean isSourceNat, String guestType, boolean isSystem) { s_usageEventDao.persist(new UsageEventVO(usageType, accountId, zoneId, ipAddressId, ipAddress, isSourceNat, guestType, isSystem)); }
long vmId = event.getResourceId(); long sgId = event.getOfferingId(); if (EventTypes.EVENT_SECURITY_GROUP_ASSIGN.equals(event.getType())) { if (s_logger.isDebugEnabled()) { s_logger.debug("Assigning : security group" + sgId + " to Vm: " + vmId + " for account: " + event.getAccountId()); zoneId = event.getZoneId(); Account acct = _accountDao.findByIdIncludingRemoved(event.getAccountId()); UsageSecurityGroupVO securityGroup = new UsageSecurityGroupVO(zoneId, event.getAccountId(), acct.getDomainId(), vmId, sgId, event.getCreateDate(), null); _usageSecurityGroupDao.persist(securityGroup); } else if (EventTypes.EVENT_SECURITY_GROUP_REMOVE.equals(event.getType())) { SearchCriteria<UsageSecurityGroupVO> sc = _usageSecurityGroupDao.createSearchCriteria(); sc.addAnd("accountId", SearchCriteria.Op.EQ, event.getAccountId()); sc.addAnd("vmInstanceId", SearchCriteria.Op.EQ, vmId); sc.addAnd("securityGroupId", SearchCriteria.Op.EQ, sgId); List<UsageSecurityGroupVO> sgVOs = _usageSecurityGroupDao.search(sc, null); if (sgVOs.size() > 1) { s_logger.warn("More that one usage entry for security group: " + sgId + " for Vm: " + vmId + " assigned to account: " + event.getAccountId() + "; marking them all as deleted..."); s_logger.debug("deleting security group: " + sgVO.getSecurityGroupId() + " from Vm: " + sgVO.getVmInstanceId()); sgVO.setDeleted(event.getCreateDate()); // there really shouldn't be more than one _usageSecurityGroupDao.update(sgVO);