mirror of https://github.com/apache/cloudstack.git
bug 8798: delete zone is fixed
status 8798: resolved fixed
This commit is contained in:
parent
cced97c5fb
commit
dee2e59fb3
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue