diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index cf5b6e356bc..2eff1891bda 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -2726,8 +2726,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag s_logger.warn("Only guest networks can be created using this method"); return null; } - - boolean updateResourceCount = (!ntwkOff.getSpecifyVlan() && aclType == ACLType.Account); + + boolean updateResourceCount = resourceCountNeedsUpdate(ntwkOff, aclType); //check resource limits if (updateResourceCount) { _resourceLimitMgr.checkResourceLimit(owner, ResourceType.network); @@ -3587,6 +3587,12 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag network.setState(Network.State.Destroy); _networksDao.update(network.getId(), network); _networksDao.remove(network.getId()); + + NetworkOffering ntwkOff = _configMgr.getNetworkOffering(network.getNetworkOfferingId()); + boolean updateResourceCount = resourceCountNeedsUpdate(ntwkOff, network.getAclType()); + if (updateResourceCount) { + _resourceLimitMgr.decrementResourceCount(owner.getId(), ResourceType.network); + } txn.commit(); } } @@ -3594,6 +3600,11 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag return success; } + private boolean resourceCountNeedsUpdate(NetworkOffering ntwkOff, ACLType aclType) { + boolean updateResourceCount = (!ntwkOff.getSpecifyVlan() && aclType == ACLType.Account); + return updateResourceCount; + } + protected boolean deleteVlansInNetwork(long networkId, long userId, Account callerAccount) { //cleanup Public vlans