diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index d1c3191806a..d382e925433 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -846,7 +846,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag return true; } - public boolean canIpUsedForService(PublicIp publicIp, Service service) { + public boolean canIpUsedForService(PublicIp publicIp, Service service, Long networkId) { List ipList = new ArrayList(); ipList.add(publicIp); Map> ipToServices = getIpToServices(ipList, false, true); @@ -854,9 +854,14 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag if (services == null || services.isEmpty()) { return true; } + + if (networkId == null) { + networkId = publicIp.getAssociatedWithNetworkId(); + } + // We only support one provider for one service now - Map> serviceToProviders = getServiceProvidersMap(publicIp.getAssociatedWithNetworkId()); - Set oldProviders = serviceToProviders.get((Service) services.toArray()[0]); + Map> serviceToProviders = getServiceProvidersMap(networkId); + Set oldProviders = serviceToProviders.get(services.toArray()[0]); Provider oldProvider = (Provider) oldProviders.toArray()[0]; // Since IP already has service to bind with, the oldProvider can't be null Set newProviders = serviceToProviders.get(service); @@ -6890,7 +6895,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag return true; } PublicIp publicIp = new PublicIp(userIp, _vlanDao.findById(userIp.getVlanId()), NetUtils.createSequenceBasedMacAddress(userIp.getMacAddress())); - if (!canIpUsedForService(publicIp, service)) { + if (!canIpUsedForService(publicIp, service, networkId)) { return false; } if (!offering.isConserveMode()) { diff --git a/server/src/com/cloud/network/rules/RulesManagerImpl.java b/server/src/com/cloud/network/rules/RulesManagerImpl.java index 479e3493d65..73cc6bbfc9c 100755 --- a/server/src/com/cloud/network/rules/RulesManagerImpl.java +++ b/server/src/com/cloud/network/rules/RulesManagerImpl.java @@ -190,8 +190,6 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager { boolean assignToVpcNtwk = network.getVpcId() != null && ipAddress.getVpcId() != null && ipAddress.getVpcId().longValue() == network.getVpcId(); if (assignToVpcNtwk) { - //set networkId just for verification purposes - ipAddress.setAssociatedWithNetworkId(networkId); _networkMgr.checkIpForService(ipAddress, Service.PortForwarding, networkId); s_logger.debug("The ip is not associated with the VPC network id="+ networkId + ", so assigning");