Updated Branches:
  refs/heads/4.2 4cc8af053 -> 4d07493a5

CLOUDSTACK-4717: associate IP does not work on shared networks with out
source NAT service

relax the restriction that the source nat service should be avaiable in
the network inorder to associate a public ip to the network


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/4d07493a
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/4d07493a
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/4d07493a

Branch: refs/heads/4.2
Commit: 4d07493a5e6e13462b80ba09c3535fa4af0ebdc7
Parents: 4cc8af0
Author: Murali Reddy <[email protected]>
Authored: Wed Oct 16 18:15:26 2013 +0530
Committer: Murali Reddy <[email protected]>
Committed: Wed Oct 16 18:19:04 2013 +0530

----------------------------------------------------------------------
 .../com/cloud/network/NetworkManagerImpl.java   | 25 +++++++++++++-------
 1 file changed, 17 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4d07493a/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 df3dfea..9c4f777 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -970,14 +970,23 @@ public class NetworkManagerImpl extends ManagerBase 
implements NetworkManager, L
             }
         }
 
-        // In Advance zone only allow to do IP assoc
-        //      - for Isolated networks with source nat service enabled
-        //      - for shared networks with source nat service enabled
-        if (zone.getNetworkType() == NetworkType.Advanced &&
-            !(_networkModel.areServicesSupportedInNetwork(network.getId(), 
Service.SourceNat))) {
-            throw new InvalidParameterValueException("In zone of type " + 
NetworkType.Advanced +
-                    " ip address can be associated only to the network of 
guest type " + GuestType.Isolated + " with the "
-                    + Service.SourceNat.getName() + " enabled");
+        if (zone.getNetworkType() == NetworkType.Advanced) {
+            // In Advance zone allow to do IP assoc only for Isolated networks 
with source nat service enabled
+            if (network.getGuestType() == GuestType.Isolated &&
+                    
!(_networkModel.areServicesSupportedInNetwork(network.getId(), 
Service.SourceNat))) {
+                throw new InvalidParameterValueException("In zone of type " + 
NetworkType.Advanced +
+                        " ip address can be associated only to the network of 
guest type " + GuestType.Isolated +
+                        " with the " + Service.SourceNat.getName() + " 
enabled");
+            }
+
+            // In Advance zone allow to do IP assoc only for shared networks 
with source nat/static nat/lb/pf services enabled
+            if (network.getGuestType() == GuestType.Shared &&
+                    
!isSharedNetworkOfferingWithServices(network.getNetworkOfferingId())) {
+                throw new InvalidParameterValueException("In zone of type " + 
NetworkType.Advanced +
+                        " ip address can be associated with network of guest 
type " + GuestType.Shared + "only if at " +
+                        "least one of the services "  + 
Service.SourceNat.getName() + "/" + Service.StaticNat.getName() + "/"
+                        + Service.Lb.getName() + "/" + 
Service.PortForwarding.getName() + " is enabled");
+            }
         }
 
         NetworkOffering offering = 
_networkOfferingDao.findById(network.getNetworkOfferingId());

Reply via email to