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 <[email protected]>
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;
}