DaanHoogland commented on code in PR #10712: URL: https://github.com/apache/cloudstack/pull/10712#discussion_r2071197800
########## usage/src/main/java/com/cloud/usage/UsageManagerImpl.java: ########## @@ -2162,6 +2177,13 @@ private void handleVpcEvent(UsageEventVO event) { if (EventTypes.EVENT_VPC_DELETE.equals(event.getType())) { usageVpcDao.remove(event.getResourceId(), event.getCreateDate()); } else if (EventTypes.EVENT_VPC_CREATE.equals(event.getType())) { + List<UsageVpcVO> entries = usageVpcDao.listAll(event.getResourceId()); + if (!entries.isEmpty()) { + s_logger.warn(String.format("Active helper entries already exist for VPC [%s]; therefore, we will not create a new one.", + event.getResourceId())); + return; + } + s_logger.debug(String.format("Creating a helper entry for VPC [%s].", event.getResourceId())); UsageVpcVO usageVPCVO = new UsageVpcVO(event.getResourceId(), event.getZoneId(), event.getAccountId(), domainId, Vpc.State.Enabled.name(), event.getCreateDate(), null); Review Comment: could be a new method (again, return needs to be handled with a checked exception) ########## usage/src/main/java/com/cloud/usage/UsageManagerImpl.java: ########## @@ -2142,15 +2143,29 @@ private void createBackupEvent(final UsageEventVO event) { } private void handleNetworkEvent(UsageEventVO event) { + long networkId = event.getResourceId(); Account account = _accountDao.findByIdIncludingRemoved(event.getAccountId()); long domainId = account.getDomainId(); if (EventTypes.EVENT_NETWORK_DELETE.equals(event.getType())) { - usageNetworksDao.remove(event.getResourceId(), event.getCreateDate()); + usageNetworksDao.remove(networkId, event.getCreateDate()); } else if (EventTypes.EVENT_NETWORK_CREATE.equals(event.getType())) { - UsageNetworksVO usageNetworksVO = new UsageNetworksVO(event.getResourceId(), event.getOfferingId(), event.getZoneId(), event.getAccountId(), domainId, Network.State.Allocated.name(), event.getCreateDate(), null); + List<UsageNetworksVO> entries = usageNetworksDao.listAll(networkId); + if (!entries.isEmpty()) { + s_logger.warn(String.format("Received a NETWORK.CREATE event for a network [%s] that already has helper entries; " + + "therefore, we will not create a new one.", networkId)); + return; + } + s_logger.debug(String.format("Creating a helper entry for network [%s].", networkId)); + UsageNetworksVO usageNetworksVO = new UsageNetworksVO(networkId, event.getOfferingId(), event.getZoneId(), + event.getAccountId(), domainId, Network.State.Allocated.name(), event.getCreateDate(), null); usageNetworksDao.persist(usageNetworksVO); Review Comment: could be a new method (if the return is handled with a checked exception) ########## usage/src/main/java/com/cloud/usage/UsageManagerImpl.java: ########## @@ -2142,15 +2143,29 @@ private void createBackupEvent(final UsageEventVO event) { } private void handleNetworkEvent(UsageEventVO event) { + long networkId = event.getResourceId(); Account account = _accountDao.findByIdIncludingRemoved(event.getAccountId()); long domainId = account.getDomainId(); if (EventTypes.EVENT_NETWORK_DELETE.equals(event.getType())) { - usageNetworksDao.remove(event.getResourceId(), event.getCreateDate()); + usageNetworksDao.remove(networkId, event.getCreateDate()); } else if (EventTypes.EVENT_NETWORK_CREATE.equals(event.getType())) { - UsageNetworksVO usageNetworksVO = new UsageNetworksVO(event.getResourceId(), event.getOfferingId(), event.getZoneId(), event.getAccountId(), domainId, Network.State.Allocated.name(), event.getCreateDate(), null); + List<UsageNetworksVO> entries = usageNetworksDao.listAll(networkId); + if (!entries.isEmpty()) { + s_logger.warn(String.format("Received a NETWORK.CREATE event for a network [%s] that already has helper entries; " + + "therefore, we will not create a new one.", networkId)); + return; + } + s_logger.debug(String.format("Creating a helper entry for network [%s].", networkId)); + UsageNetworksVO usageNetworksVO = new UsageNetworksVO(networkId, event.getOfferingId(), event.getZoneId(), + event.getAccountId(), domainId, Network.State.Allocated.name(), event.getCreateDate(), null); usageNetworksDao.persist(usageNetworksVO); } else if (EventTypes.EVENT_NETWORK_UPDATE.equals(event.getType())) { - usageNetworksDao.update(event.getResourceId(), event.getOfferingId(), event.getResourceType()); + s_logger.debug(String.format("Marking previous helper entries of network [%s] as removed.", networkId)); + usageNetworksDao.remove(networkId, event.getCreateDate()); + s_logger.debug(String.format("Creating an updated helper entry for network [%s].", networkId)); + UsageNetworksVO usageNetworksVO = new UsageNetworksVO(networkId, event.getOfferingId(), event.getZoneId(), + event.getAccountId(), domainId, event.getResourceType(), event.getCreateDate(), null); + usageNetworksDao.persist(usageNetworksVO); Review Comment: could be a new method -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@cloudstack.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org