mirror of https://github.com/apache/cloudstack.git
Fixed NPE in vm expunge process - when cleanup static nat rules after corresponding vm is expunged, make search for guest Nic including removed.
This commit is contained in:
parent
b1a7cecd39
commit
d3d558f2fb
|
|
@ -159,6 +159,8 @@ public interface NetworkManager extends NetworkService {
|
|||
|
||||
Nic getNicInNetwork(long vmId, long networkId);
|
||||
|
||||
Nic getNicInNetworkIncludingRemoved(long vmId, long networkId);
|
||||
|
||||
Nic getNicForTraffic(long vmId, TrafficType type);
|
||||
|
||||
Network getDefaultNetworkForVm(long vmId);
|
||||
|
|
|
|||
|
|
@ -1823,6 +1823,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
@DB
|
||||
@Override
|
||||
public boolean destroyNetwork(long networkId, ReservationContext context) {
|
||||
Account callerAccount = _accountMgr.getAccount(context.getCaller().getAccountId());
|
||||
|
||||
NetworkVO network = _networksDao.findById(networkId);
|
||||
if (network == null) {
|
||||
s_logger.debug("Unable to find network with id: " + networkId);
|
||||
|
|
@ -1845,6 +1847,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
List<IPAddressVO> ipsToRelease = _ipAddressDao.listByAssociatedNetwork(networkId);
|
||||
if (ipsToRelease != null && !ipsToRelease.isEmpty()) {
|
||||
for (IPAddressVO ip : ipsToRelease) {
|
||||
//delete load balancer rules associated with the ip address before unassigning it
|
||||
_lbMgr.removeAllLoadBalanacers(ip.getId(), callerAccount, context.getCaller().getId());
|
||||
unassignPublicIpAddress(ip);
|
||||
}
|
||||
|
||||
|
|
@ -2181,6 +2185,12 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
public Nic getNicInNetwork(long vmId, long networkId) {
|
||||
return _nicDao.findByInstanceIdAndNetworkId(networkId, vmId);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Nic getNicInNetworkIncludingRemoved(long vmId, long networkId) {
|
||||
return _nicDao.findByInstanceIdAndNetworkIdIncludingRemoved(networkId, vmId);
|
||||
}
|
||||
|
||||
@Override @DB
|
||||
public boolean associateIpAddressListToAccount(long userId, long accountId, long zoneId, Long vlanId, Network network) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException {
|
||||
|
|
|
|||
|
|
@ -689,7 +689,7 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager {
|
|||
throw new CloudRuntimeException("Unable to find ip address to map to in vm id=" + vm.getId());
|
||||
}
|
||||
|
||||
Nic guestNic = _networkMgr.getNicInNetwork(vm.getId(), networkId);
|
||||
Nic guestNic = _networkMgr.getNicInNetworkIncludingRemoved(vm.getId(), networkId);
|
||||
FirewallRuleVO ruleVO = _firewallDao.findById(rule.getId());
|
||||
|
||||
staticNatRules.add(new StaticNatRuleImpl(ruleVO, guestNic.getIp4Address()));
|
||||
|
|
@ -755,7 +755,7 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager {
|
|||
|
||||
UserVmVO vm = _vmDao.findById(sourceIp.getAssociatedWithVmId());
|
||||
|
||||
Nic guestNic = _networkMgr.getNicInNetwork(vm.getId(), networkId);
|
||||
Nic guestNic = _networkMgr.getNicInNetworkIncludingRemoved(vm.getId(), networkId);
|
||||
String dstIp = guestNic.getIp4Address();
|
||||
|
||||
staticNatRules.add(new StaticNatRuleImpl(rule, dstIp));
|
||||
|
|
|
|||
Loading…
Reference in New Issue