You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2012/08/12 22:20:33 UTC
[7/50] [abbrv] git commit: VPC: CS-15950 - throw
networkConflictException when try to create network rule for the ip address
that is already in use for another service
VPC: CS-15950 - throw networkConflictException when try to create network rule for the ip address that is already in use for another service
Conflicts:
server/src/com/cloud/network/NetworkManagerImpl.java
server/src/com/cloud/network/rules/RulesManagerImpl.java
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/d93c5d05
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/d93c5d05
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/d93c5d05
Branch: refs/heads/master
Commit: d93c5d053136d44a38dc8f1a04185e998bb86cc7
Parents: 327b483
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Fri Aug 10 16:04:18 2012 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Fri Aug 10 16:37:33 2012 -0700
----------------------------------------------------------------------
.../src/com/cloud/network/NetworkManagerImpl.java | 13 +++++++++----
.../com/cloud/network/rules/RulesManagerImpl.java | 2 --
2 files changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d93c5d05/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java
index d1c3191..d382e92 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<PublicIp> ipList = new ArrayList<PublicIp>();
ipList.add(publicIp);
Map<PublicIp, Set<Service>> 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<Service, Set<Provider>> serviceToProviders = getServiceProvidersMap(publicIp.getAssociatedWithNetworkId());
- Set<Provider> oldProviders = serviceToProviders.get((Service) services.toArray()[0]);
+ Map<Service, Set<Provider>> serviceToProviders = getServiceProvidersMap(networkId);
+ Set<Provider> 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<Provider> 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()) {
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d93c5d05/server/src/com/cloud/network/rules/RulesManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/rules/RulesManagerImpl.java b/server/src/com/cloud/network/rules/RulesManagerImpl.java
index 479e349..73cc6bb 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");