Merge branch '4.5'

This commit is contained in:
Jayapal 2014-11-14 12:12:07 +05:30
commit 7fd1e8e239

View File

@ -3153,10 +3153,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
}
// Check if the VLAN has any allocated public IPs
long allocIpCount = _publicIpAddressDao.countIPs(vlanRange.getDataCenterId(), vlanDbId, true);
List<IPAddressVO> ips = _publicIpAddressDao.listByVlanId(vlanDbId);
boolean success = true;
if (allocIpCount > 0) {
if (isAccountSpecific) {
try {
vlanRange = _vlanDao.acquireInLockTable(vlanDbId, 30);
@ -3168,6 +3165,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
s_logger.debug("lock vlan " + vlanDbId + " is acquired");
}
for (IPAddressVO ip : ips) {
boolean success = true;
if (ip.isOneToOneNat()) {
throw new InvalidParameterValueException("Can't delete account specific vlan " + vlanDbId + " as ip " + ip
+ " belonging to the range is used for static nat purposes. Cleanup the rules first");
@ -3183,14 +3181,14 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
throw new InvalidParameterValueException("Can't delete account specific vlan " + vlanDbId + " as ip " + ip
+ " belonging to the range has firewall rules applied. Cleanup the rules first");
}
if(ip.getAllocatedTime() != null) {// This means IP is allocated
// release public ip address here
success = success && _ipAddrMgr.disassociatePublicIpAddress(ip.getId(), userId, caller);
success = _ipAddrMgr.disassociatePublicIpAddress(ip.getId(), userId, caller);
}
if (!success) {
s_logger.warn("Some ip addresses failed to be released as a part of vlan " + vlanDbId + " removal");
} else {
for (IPAddressVO ip : ips) {
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NET_IP_RELEASE, acctVln.get(0).getId(), ip.getDataCenterId(), ip.getId(),
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NET_IP_RELEASE, acctVln.get(0).getAccountId(), ip.getDataCenterId(), ip.getId(),
ip.getAddress().toString(), ip.isSourceNat(), vlanRange.getVlanType().toString(), ip.getSystem(), ip.getClass().getName(), ip.getUuid());
}
}
@ -3204,12 +3202,11 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
throw new InvalidParameterValueException("Cannot delete vlan range " + vlanDbId + " as " + ipAlias.getIp4Address()
+ "is being used for providing dhcp service in this subnet. Delete all VMs in this subnet and try again");
}
allocIpCount = _publicIpAddressDao.countIPs(vlanRange.getDataCenterId(), vlanDbId, true);
long allocIpCount = _publicIpAddressDao.countIPs(vlanRange.getDataCenterId(), vlanDbId, true);
if (allocIpCount > 0) {
throw new InvalidParameterValueException(allocIpCount + " Ips are in use. Cannot delete this vlan");
}
}
}
Transaction.execute(new TransactionCallbackNoReturn() {
@Override