This is an automated email from the ASF dual-hosted git repository. dahn pushed a commit to branch 4.19 in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.19 by this push: new 9d263cd71b5 Network Usage event model adjustments (#10755) 9d263cd71b5 is described below commit 9d263cd71b5418fd43be6db446ba0e4d97d9ed06 Author: Fabricio Duarte <fabricio.duarte...@gmail.com> AuthorDate: Sat Apr 26 12:35:28 2025 -0300 Network Usage event model adjustments (#10755) --- .../main/java/com/cloud/event/UsageEventUtils.java | 19 +++++++++++++++++++ .../engine/orchestration/NetworkOrchestrator.java | 17 +++++++++-------- .../engine/orchestration/NetworkOrchestratorTest.java | 2 +- .../java/com/cloud/network/NetworkServiceImpl.java | 10 ++-------- 4 files changed, 31 insertions(+), 17 deletions(-) diff --git a/engine/components-api/src/main/java/com/cloud/event/UsageEventUtils.java b/engine/components-api/src/main/java/com/cloud/event/UsageEventUtils.java index 1a2fab150a7..547663fd1b9 100644 --- a/engine/components-api/src/main/java/com/cloud/event/UsageEventUtils.java +++ b/engine/components-api/src/main/java/com/cloud/event/UsageEventUtils.java @@ -25,6 +25,7 @@ import java.util.Map; import javax.annotation.PostConstruct; import javax.inject.Inject; +import com.cloud.network.Network; import org.apache.commons.collections.MapUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.NoSuchBeanDefinitionException; @@ -246,4 +247,22 @@ public class UsageEventUtils { static final String Name = "management-server"; + public static void publishNetworkCreation(Network network) { + publishUsageEvent(EventTypes.EVENT_NETWORK_CREATE, network.getAccountId(), network.getDataCenterId(), + network.getId(), network.getName(), network.getNetworkOfferingId(), null, null, null, network.getState().name(), + network.getUuid()); + } + + public static void publishNetworkUpdate(Network network) { + publishUsageEvent(EventTypes.EVENT_NETWORK_UPDATE, network.getAccountId(), network.getDataCenterId(), + network.getId(), network.getName(), network.getNetworkOfferingId(), null, network.getState().name(), + Network.class.getName(), network.getUuid(), true); + } + + public static void publishNetworkDeletion(Network network) { + publishUsageEvent(EventTypes.EVENT_NETWORK_DELETE, network.getAccountId(), network.getDataCenterId(), + network.getId(), network.getName(), network.getNetworkOfferingId(), null, null, null, + Network.class.getName(), network.getUuid()); + } + } diff --git a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java index 26b63d2d728..2ec79bc80f1 100644 --- a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java +++ b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java @@ -1461,8 +1461,6 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra if (isNetworkImplemented(network)) { s_logger.debug("Network id=" + networkId + " is already implemented"); implemented.set(guru, network); - UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_UPDATE, network.getAccountId(), network.getDataCenterId(), network.getId(), - network.getName(), network.getNetworkOfferingId(), null, network.getState().name(), Network.class.getName(), network.getUuid(), true); return implemented; } @@ -1522,9 +1520,8 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra network.setRestartRequired(false); _networksDao.update(network.getId(), network); + UsageEventUtils.publishNetworkUpdate(network); implemented.set(guru, network); - UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_CREATE, network.getAccountId(), network.getDataCenterId(), network.getId(), - network.getName(), network.getNetworkOfferingId(), null, null, null, network.getState().name(), network.getUuid()); return implemented; } catch (final NoTransitionException e) { s_logger.error(e.getMessage()); @@ -3005,6 +3002,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra if (updateResourceCount) { _resourceLimitMgr.incrementResourceCount(owner.getId(), ResourceType.network, isDisplayNetworkEnabled); } + UsageEventUtils.publishNetworkCreation(network); return network; } @@ -3089,12 +3087,13 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra s_logger.debug("Lock is acquired for network " + network + " as a part of network shutdown"); } - if (network.getState() == Network.State.Allocated) { + final Network.State initialState = network.getState(); + if (initialState == Network.State.Allocated) { s_logger.debug(String.format("Network [%s] is in Allocated state, no need to shutdown.", network)); return true; } - if (network.getState() != Network.State.Implemented && network.getState() != Network.State.Shutdown) { + if (initialState != Network.State.Implemented && initialState != Network.State.Shutdown) { s_logger.debug("Network is not implemented: " + network); return false; } @@ -3141,6 +3140,9 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra } _networksDao.update(networkFinal.getId(), networkFinal); _networksDao.clearCheckForGc(networkId); + if (initialState == Network.State.Implemented) { + UsageEventUtils.publishNetworkUpdate(networkFinal); + } result = true; } else { try { @@ -3393,8 +3395,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra final Pair<Class<?>, Long> networkMsg = new Pair<Class<?>, Long>(Network.class, networkFinal.getId()); _messageBus.publish(_name, EntityManager.MESSAGE_REMOVE_ENTITY_EVENT, PublishScope.LOCAL, networkMsg); } - UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_DELETE, network.getAccountId(), network.getDataCenterId(), network.getId(), - network.getName(), network.getNetworkOfferingId(), null, null, null, Network.class.getName(), network.getUuid()); + UsageEventUtils.publishNetworkDeletion(network); return true; } catch (final CloudRuntimeException e) { s_logger.error("Failed to delete network", e); diff --git a/engine/orchestration/src/test/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestratorTest.java b/engine/orchestration/src/test/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestratorTest.java index 2d016d03f2e..c0e1c0c6990 100644 --- a/engine/orchestration/src/test/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestratorTest.java +++ b/engine/orchestration/src/test/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestratorTest.java @@ -894,7 +894,7 @@ public class NetworkOrchestratorTest extends TestCase { boolean shutdownNetworkStatus = testOrchestrator.shutdownNetwork(networkId, reservationContext, false); Assert.assertFalse(shutdownNetworkStatus); - verify(network, times(3)).getState(); + verify(network).getState(); verify(testOrchestrator._networksDao, times(1)).acquireInLockTable(networkId, NetworkLockTimeout.value()); verify(testOrchestrator._networksDao, times(1)).releaseFromLockTable(networkId); } diff --git a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java index ddef3d406ac..0b4e2a7db13 100644 --- a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java +++ b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java @@ -2006,12 +2006,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C if (implementedNetwork == null || implementedNetwork.first() == null) { s_logger.warn("Failed to provision the network " + network); } - Network implemented = implementedNetwork.second(); - if (implemented != null) { - UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_CREATE, implemented.getAccountId(), implemented.getDataCenterId(), implemented.getId(), - implemented.getName(), implemented.getNetworkOfferingId(), null, null, null, Network.class.getName(), implemented.getUuid()); - } - return implemented; + return implementedNetwork.second(); } catch (ResourceUnavailableException ex) { s_logger.warn("Failed to implement persistent guest network " + network + "due to ", ex); CloudRuntimeException e = new CloudRuntimeException("Failed to implement persistent guest network"); @@ -3407,8 +3402,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C } } Network updatedNetwork = getNetwork(network.getId()); - UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_UPDATE, updatedNetwork.getAccountId(), updatedNetwork.getDataCenterId(), updatedNetwork.getId(), - updatedNetwork.getName(), updatedNetwork.getNetworkOfferingId(), null, updatedNetwork.getState().name(), Network.class.getName(), updatedNetwork.getUuid(), true); + UsageEventUtils.publishNetworkUpdate(updatedNetwork); return updatedNetwork; }