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;
     }
 

Reply via email to