Network Usage event model adjustments (#10755)

This commit is contained in:
Fabricio Duarte 2025-04-26 12:35:28 -03:00 committed by GitHub
parent 07f4fc2e51
commit 9d263cd71b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 31 additions and 17 deletions

View File

@ -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());
}
}

View File

@ -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);

View File

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

View File

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