bug 8798: delete zone is fixed

status 8798: resolved fixed
This commit is contained in:
alena 2011-03-24 13:30:33 -07:00
parent cced97c5fb
commit dee2e59fb3
4 changed files with 36 additions and 30 deletions

View File

@ -968,9 +968,11 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
}
@Override
@DB
@Override @DB
public boolean deleteZone(DeleteZoneCmd cmd) {
Transaction txn = Transaction.currentTxn();
boolean success = false;
Long userId = UserContext.current().getCallerUserId();
Long zoneId = cmd.getId();
@ -986,35 +988,30 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
checkIfZoneIsDeletable(zoneId);
boolean success = _zoneDao.expunge(zoneId);
txn.start();
try {
// Delete vNet
_zoneDao.deleteVnet(zoneId);
//Delete networks
List<NetworkVO> networks = _networkDao.listByZone(zoneId);
if (networks != null && !networks.isEmpty()) {
for (NetworkVO network : networks) {
_networkDao.remove(network.getId());
}
}
//delete vlans for this zone
List<VlanVO> vlans = _vlanDao.listByZone(zoneId);
for(VlanVO vlan : vlans) {
_vlanDao.remove(vlan.getId());
}
} catch (Exception ex) {
s_logger.error("Failed to delete zone " + zoneId);
throw new CloudRuntimeException("Failed to delete zone " + zoneId);
}
if (success){
return true;
} else{
return false;
// Delete vNet
_zoneDao.deleteVnet(zoneId);
//delete vlans for this zone
List<VlanVO> vlans = _vlanDao.listByZone(zoneId);
for(VlanVO vlan : vlans) {
_vlanDao.remove(vlan.getId());
}
//Delete networks
List<NetworkVO> networks = _networkDao.listByZoneIncludingRemoved(zoneId);
if (networks != null && !networks.isEmpty()) {
for (NetworkVO network : networks) {
_networkDao.expunge(network.getId());
}
}
success = _zoneDao.expunge(zoneId);
txn.commit();
return success;
}

View File

@ -62,4 +62,6 @@ public interface NetworkDao extends GenericDao<NetworkVO, Long> {
void addDomainToNetwork(long networkId, long domainId);
List<NetworkVO> listNetworksBy(boolean isShared);
List<NetworkVO> listByZoneIncludingRemoved(long zoneId);
}

View File

@ -292,4 +292,11 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N
sc.setParameters("isShared", isShared);
return listBy(sc);
}
@Override
public List<NetworkVO> listByZoneIncludingRemoved(long zoneId) {
SearchCriteria<NetworkVO> sc = ZoneBroadcastUriSearch.create();
sc.setParameters("dataCenterId", zoneId);
return listIncludingRemovedBy(sc);
}
}

View File

@ -187,7 +187,7 @@ CREATE TABLE `cloud`.`networks` (
PRIMARY KEY (`id`),
CONSTRAINT `fk_networks__network_offering_id` FOREIGN KEY (`network_offering_id`) REFERENCES `network_offerings`(`id`),
CONSTRAINT `fk_networks__data_center_id` FOREIGN KEY (`data_center_id`) REFERENCES `data_center`(`id`),
CONSTRAINT `fk_networks__related` FOREIGN KEY(`related`) REFERENCES `networks`(`id`),
CONSTRAINT `fk_networks__related` FOREIGN KEY(`related`) REFERENCES `networks`(`id`) ON DELETE CASCADE,
CONSTRAINT `fk_networks__account_id` FOREIGN KEY(`account_id`) REFERENCES `account`(`id`),
CONSTRAINT `fk_networks__domain_id` FOREIGN KEY(`domain_id`) REFERENCES `domain`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;