diff --git a/api/src/com/cloud/offering/NetworkOffering.java b/api/src/com/cloud/offering/NetworkOffering.java index 063ae2add8f..d4c09737b6e 100644 --- a/api/src/com/cloud/offering/NetworkOffering.java +++ b/api/src/com/cloud/offering/NetworkOffering.java @@ -26,8 +26,6 @@ import com.cloud.network.Networks.TrafficType; */ public interface NetworkOffering { - public static final long PUBLIC_NETWORK_OFFERING_ID = 1; - public enum GuestIpType { Virtual, Direct, diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java index 55496ff1168..23129e80b4c 100755 --- a/server/src/com/cloud/api/ApiDBUtils.java +++ b/server/src/com/cloud/api/ApiDBUtils.java @@ -32,6 +32,7 @@ import com.cloud.network.LoadBalancerVO; import com.cloud.network.Network; import com.cloud.network.Network.Capability; import com.cloud.network.Network.Service; +import com.cloud.network.Networks.TrafficType; import com.cloud.network.NetworkManager; import com.cloud.network.NetworkRuleConfigVO; import com.cloud.network.NetworkVO; @@ -517,7 +518,21 @@ public class ApiDBUtils { } public static long getPublicNetworkIdByZone(long zoneId) { - List networks = _networkDao.listBy(Account.ACCOUNT_ID_SYSTEM, NetworkOffering.PUBLIC_NETWORK_OFFERING_ID, zoneId); + //find system public network offering + Long networkOfferingId = null; + List offerings = _networkOfferingDao.listSystemNetworkOfferings(); + for (NetworkOfferingVO offering: offerings) { + if (offering.getGuestIpType() == null && offering.getTrafficType() == TrafficType.Public) { + networkOfferingId = offering.getId(); + break; + } + } + + if (networkOfferingId == null) { + throw new InvalidParameterValueException("Unable to find system Public network offering"); + } + + List networks = _networkDao.listBy(Account.ACCOUNT_ID_SYSTEM, networkOfferingId, zoneId); if (networks == null) { throw new InvalidParameterValueException("Unable to find public network in zone " + zoneId); }