Delete network as a part of account cleanup

This commit is contained in:
alena 2010-12-13 10:46:15 -08:00
parent fbd2e32882
commit c7a9267225
6 changed files with 24 additions and 4 deletions

View File

@ -60,7 +60,7 @@ public class DeleteNetworkCmd extends BaseCmd{
@Override
public void execute(){
boolean result = _networkService.deleteNetwork(this);
boolean result = _networkService.deleteNetwork(id);
if (result) {
SuccessResponse response = new SuccessResponse(getCommandName());
this.setResponseObject(response);

View File

@ -85,6 +85,6 @@ public interface NetworkService {
Network createNetwork(CreateNetworkCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;
List<? extends Network> searchForNetworks(ListNetworksCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;
boolean deleteNetwork(DeleteNetworkCmd cmd) throws InvalidParameterValueException, PermissionDeniedException;
boolean deleteNetwork(long networkId) throws InvalidParameterValueException, PermissionDeniedException;
}

View File

@ -1896,8 +1896,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
}
@Override @DB
public boolean deleteNetwork(DeleteNetworkCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{
Long networkId = cmd.getId();
public boolean deleteNetwork(long networkId) throws InvalidParameterValueException, PermissionDeniedException{
Long userId = UserContext.current().getUserId();
Account account = UserContext.current().getAccount();
@ -1941,6 +1940,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
//remove all the vlans associated with the network
Transaction txn = Transaction.currentTxn();
try {
txn.start();
//remove corresponding vlans
List<VlanVO> vlans = _vlanDao.listVlansByNetworkId(networkId);
for (VlanVO vlan : vlans) {

View File

@ -27,6 +27,7 @@ import com.cloud.utils.db.SearchBuilder;
public interface NetworkDao extends GenericDao<NetworkVO, Long> {
List<NetworkVO> listBy(long accountId);
List<NetworkVO> listByOwner(long ownerId);
List<NetworkVO> listBy(long accountId, long offeringId, long dataCenterId);
List<NetworkVO> listBy(long accountId, long dataCenterId, GuestIpType type);
NetworkVO persist(NetworkVO network, boolean gc);

View File

@ -236,4 +236,11 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N
public void clearCheckForGc(long networkId) {
_opDao.clearCheckForGc(networkId);
}
@Override
public List<NetworkVO> listByOwner(long ownerId) {
SearchCriteria<NetworkVO> sc = AllFieldsSearch.create();
sc.setParameters("account", ownerId);
return listBy(sc);
}
}

View File

@ -63,7 +63,9 @@ import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.PermissionDeniedException;
import com.cloud.network.IPAddressVO;
import com.cloud.network.NetworkManager;
import com.cloud.network.NetworkVO;
import com.cloud.network.dao.IPAddressDao;
import com.cloud.network.dao.NetworkDao;
import com.cloud.network.router.DomainRouterManager;
import com.cloud.network.security.NetworkGroupManager;
import com.cloud.server.Criteria;
@ -112,6 +114,7 @@ public class AccountManagerImpl implements AccountManager, AccountService {
@Inject private DomainRouterDao _routerDao;
@Inject private VMTemplateDao _templateDao;
@Inject private PodVlanMapDao _podVlanMapDao;
@Inject private NetworkDao _networkDao;
@Inject private NetworkGroupManager _networkGroupMgr;
@ -890,6 +893,7 @@ public class AccountManagerImpl implements AccountManager, AccountService {
decrementResourceCount(accountId, ResourceType.public_ip);
}
}
} else {
accountCleanupNeeded = true;
}
@ -905,6 +909,14 @@ public class AccountManagerImpl implements AccountManager, AccountService {
allVlansDeleted = false;
}
}
//delete networks
s_logger.debug("Deleting networks for account " + account.getId());
List<NetworkVO> networks = _networkDao.listByOwner(accountId);
for (NetworkVO network : networks) {
_networkMgr.deleteNetwork(network.getId());
s_logger.debug("Network " + network.getId() + " successfully deleted.");
}
if (!allVlansDeleted) {
accountCleanupNeeded = true;