diff --git a/server/src/com/cloud/network/NetworkManager.java b/server/src/com/cloud/network/NetworkManager.java index 3f2c9951739..b9d41423359 100644 --- a/server/src/com/cloud/network/NetworkManager.java +++ b/server/src/com/cloud/network/NetworkManager.java @@ -194,7 +194,7 @@ public interface NetworkManager extends NetworkService { boolean applyIpAssociations(Network network, boolean continueOnError) throws ResourceUnavailableException; - boolean isServiceSupported(long networkId, Network.Service service); + boolean isServiceSupportedByNetworkOffering(long networkOfferingId, Network.Service service); NetworkVO getNetworkWithSecurityGroupEnabled(Long zoneId); diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 142db9a8bac..791ea649fd3 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -1784,7 +1784,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } // If networkDomain is not specified, take it from the global configuration - if (isServiceSupported(networkOfferingId, Service.Dns)) { + if (isServiceSupportedByNetworkOffering(networkOfferingId, Service.Dns)) { Map dnsCapabilities = getServiceCapabilities(zoneId, networkOfferingId, Service.Dns); String isUpdateDnsSupported = dnsCapabilities.get(Capability.AllowDnsSuffixModification); if (isUpdateDnsSupported == null || !Boolean.valueOf(isUpdateDnsSupported)) { @@ -2648,7 +2648,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag Map> networkCapabilities = new HashMap>(); for (Service service : zoneCapabilities.keySet()) { - if (isServiceSupported(networkOfferingId, service)) { + if (isServiceSupportedByNetworkOffering(networkOfferingId, service)) { networkCapabilities.put(service, zoneCapabilities.get(service)); } } @@ -2659,7 +2659,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag @Override public Map getServiceCapabilities(long zoneId, Long networkOfferingId, Service service) { - if (!isServiceSupported(networkOfferingId, service)) { + if (!isServiceSupportedByNetworkOffering(networkOfferingId, service)) { throw new UnsupportedServiceException("Service " + service.getName() + " is not supported by the network offering id=" + networkOfferingId); } @@ -2918,7 +2918,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } @Override - public boolean isServiceSupported(long networkOfferingId, Network.Service service) { + public boolean isServiceSupportedByNetworkOffering(long networkOfferingId, Network.Service service) { return (_ntwkOfferingSrvcDao.isServiceSupported(networkOfferingId, service)); } diff --git a/server/src/com/cloud/network/guru/DirectNetworkGuru.java b/server/src/com/cloud/network/guru/DirectNetworkGuru.java index 0d5219ec8c8..d0d226847c2 100644 --- a/server/src/com/cloud/network/guru/DirectNetworkGuru.java +++ b/server/src/com/cloud/network/guru/DirectNetworkGuru.java @@ -34,6 +34,7 @@ import com.cloud.exception.InsufficientVirtualNetworkCapcityException; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.IPAddressVO; import com.cloud.network.Network; +import com.cloud.network.Network.Service; import com.cloud.network.Network.State; import com.cloud.network.NetworkManager; import com.cloud.network.NetworkProfile; @@ -74,9 +75,9 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru { NetworkOfferingDao _networkOfferingDao; protected boolean canHandle(NetworkOffering offering, DataCenter dc) { - // this guru handles only non-system network with guestIpType = Direct + // this guru handles only non-system network with type=Shared and serviceNat service disabled //TODO - after broadCastDomainType + physical network are introduced, don't rely on network type of the dc - if (dc.getNetworkType() == NetworkType.Advanced && offering.getType() == Network.Type.Shared && offering.getTrafficType() == TrafficType.Guest) { + if (dc.getNetworkType() == NetworkType.Advanced && offering.getType() == Network.Type.Shared && !_networkMgr.isServiceSupportedByNetworkOffering(offering.getId(), Service.SourceNat)&& offering.getTrafficType() == TrafficType.Guest) { if (offering.isSecurityGroupEnabled()) { return true; } else if (!offering.isSystemOnly()) { diff --git a/server/src/com/cloud/network/guru/DirectPodBasedNetworkGuru.java b/server/src/com/cloud/network/guru/DirectPodBasedNetworkGuru.java index 42db8901983..acceec4b7e4 100644 --- a/server/src/com/cloud/network/guru/DirectPodBasedNetworkGuru.java +++ b/server/src/com/cloud/network/guru/DirectPodBasedNetworkGuru.java @@ -79,6 +79,7 @@ public class DirectPodBasedNetworkGuru extends DirectNetworkGuru { @Override protected boolean canHandle(NetworkOffering offering, DataCenter dc) { // this guru handles system Direct pod based network + //FIXME - verify broadcast domain type here if (dc.getNetworkType() == NetworkType.Basic && offering.getTrafficType() == TrafficType.Guest) { return true; } else { diff --git a/server/src/com/cloud/network/guru/GuestNetworkGuru.java b/server/src/com/cloud/network/guru/GuestNetworkGuru.java index de424c36e9e..471647eca05 100644 --- a/server/src/com/cloud/network/guru/GuestNetworkGuru.java +++ b/server/src/com/cloud/network/guru/GuestNetworkGuru.java @@ -34,6 +34,7 @@ import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientVirtualNetworkCapcityException; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.Network; +import com.cloud.network.Network.Service; import com.cloud.network.Network.State; import com.cloud.network.NetworkManager; import com.cloud.network.NetworkProfile; @@ -78,8 +79,8 @@ public class GuestNetworkGuru extends AdapterBase implements NetworkGuru { } protected boolean canHandle(NetworkOffering offering, DataCenter dc) { - // This guru handles only non-system Guest Isolated network - if (dc.getNetworkType() == NetworkType.Advanced && offering.getTrafficType() == TrafficType.Guest && offering.getType() == Network.Type.Isolated && !offering.isSystemOnly()) { + // This guru handles only non-system Guest Isolated network that supports Source nat service + if (dc.getNetworkType() == NetworkType.Advanced && offering.getTrafficType() == TrafficType.Guest && offering.getType() == Network.Type.Isolated && _networkMgr.isServiceSupportedByNetworkOffering(offering.getId(), Service.SourceNat) && !offering.isSystemOnly()) { return true; } else { s_logger.trace("We only take care of Guest Virtual networks in zone of type " + NetworkType.Advanced); diff --git a/server/src/com/cloud/network/guru/PublicNetworkGuru.java b/server/src/com/cloud/network/guru/PublicNetworkGuru.java index a4a1bb7a832..002d778b8fb 100644 --- a/server/src/com/cloud/network/guru/PublicNetworkGuru.java +++ b/server/src/com/cloud/network/guru/PublicNetworkGuru.java @@ -77,10 +77,10 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru { NetworkOfferingDao _networkOfferingDao; protected boolean canHandle(NetworkOffering offering, DataCenter dc) { - if (!offering.isSecurityGroupEnabled() && offering.getTrafficType() == TrafficType.Public && offering.isSystemOnly()) { + if (offering.getTrafficType() == TrafficType.Public && offering.isSystemOnly()) { return true; } else { - s_logger.trace("We only take care of System only Public Virtual Network"); + s_logger.trace("We take care only of System Public Virtual Network"); return false; } } diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index d31734a5370..ba4741dde60 100755 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -421,7 +421,7 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager, _accountMgr.checkAccess(caller.getCaller(), null, ipAddr); // verify that lb service is supported by the network - if (!_networkMgr.isServiceSupported(network.getNetworkOfferingId(), Service.Lb)) { + if (!_networkMgr.isServiceSupportedByNetworkOffering(network.getNetworkOfferingId(), Service.Lb)) { throw new InvalidParameterValueException("LB service is not supported in network id= " + networkId); } diff --git a/server/src/com/cloud/network/rules/RulesManagerImpl.java b/server/src/com/cloud/network/rules/RulesManagerImpl.java index c358a184315..a17dc0a0079 100755 --- a/server/src/com/cloud/network/rules/RulesManagerImpl.java +++ b/server/src/com/cloud/network/rules/RulesManagerImpl.java @@ -343,7 +343,7 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager { } Network network = _networkMgr.getNetwork(networkId); - if (!_networkMgr.isServiceSupported(network.getNetworkOfferingId(), Service.Firewall)) { + if (!_networkMgr.isServiceSupportedByNetworkOffering(network.getNetworkOfferingId(), Service.Firewall)) { throw new InvalidParameterValueException("Unable to create static nat rule; Firewall service is not supported in network id=" + networkId); } diff --git a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java index bcfd0889587..27cd65674c6 100755 --- a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java +++ b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java @@ -139,7 +139,7 @@ public class RemoteAccessVpnManagerImpl implements RemoteAccessVpnService, Manag //Verify that vpn service is enabled for the network Network network = _networkMgr.getNetwork(ipAddr.getAssociatedWithNetworkId()); - if (!_networkMgr.isServiceSupported(network.getNetworkOfferingId(), Service.Vpn)) { + if (!_networkMgr.isServiceSupportedByNetworkOffering(network.getNetworkOfferingId(), Service.Vpn)) { throw new InvalidParameterValueException("Vpn service is not supported in network id=" + ipAddr.getAssociatedWithNetworkId()); } diff --git a/server/test/com/cloud/network/MockNetworkManagerImpl.java b/server/test/com/cloud/network/MockNetworkManagerImpl.java index 6db0ad752fc..2e4030ad1d7 100644 --- a/server/test/com/cloud/network/MockNetworkManagerImpl.java +++ b/server/test/com/cloud/network/MockNetworkManagerImpl.java @@ -402,7 +402,7 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager, NetworkS } @Override - public boolean isServiceSupported(long networkId, Service service) { + public boolean isServiceSupportedByNetworkOffering(long networkOfferingId, Service service) { // TODO Auto-generated method stub return false; }