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());
