Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
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;
Expand Down Expand Up @@ -246,4 +247,22 @@ private static void publishUsageEvent(String usageEventType, Long accountId, Lon

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

}
Original file line number Diff line number Diff line change
Expand Up @@ -1461,8 +1461,6 @@ public Pair<NetworkGuru, NetworkVO> implementNetwork(final long networkId, final
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;
}

Expand Down Expand Up @@ -1522,9 +1520,8 @@ public Pair<NetworkGuru, NetworkVO> implementNetwork(final long networkId, final

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());
Expand Down Expand Up @@ -3005,6 +3002,7 @@ public Network doInTransaction(final TransactionStatus status) {
if (updateResourceCount) {
_resourceLimitMgr.incrementResourceCount(owner.getId(), ResourceType.network, isDisplayNetworkEnabled);
}
UsageEventUtils.publishNetworkCreation(network);

return network;
}
Expand Down Expand Up @@ -3089,12 +3087,13 @@ public boolean shutdownNetwork(final long networkId, final ReservationContext co
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;
}
Expand Down Expand Up @@ -3141,6 +3140,9 @@ public Boolean doInTransaction(final TransactionStatus status) {
}
_networksDao.update(networkFinal.getId(), networkFinal);
_networksDao.clearCheckForGc(networkId);
if (initialState == Network.State.Implemented) {
UsageEventUtils.publishNetworkUpdate(networkFinal);
}
result = true;
} else {
try {
Expand Down Expand Up @@ -3393,8 +3395,7 @@ public List<VlanVO> doInTransaction(TransactionStatus status) {
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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -894,7 +894,7 @@ public void testShutdownNetworkInImplementingState() {
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);
}
Expand Down
10 changes: 2 additions & 8 deletions server/src/main/java/com/cloud/network/NetworkServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -1997,12 +1997,7 @@ private Network implementedNetworkInCreation(final Account caller, final DataCen
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");
Expand Down Expand Up @@ -3398,8 +3393,7 @@ public void doInTransactionWithoutResult(TransactionStatus status) {
}
}
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;
}

Expand Down