From df3704e36099e2fea4b91b153da50e748408e8a1 Mon Sep 17 00:00:00 2001 From: alena Date: Wed, 9 Mar 2011 18:04:49 -0800 Subject: [PATCH] bug 8861: introduced optional zoneId parameter to listNetworkOfferings command status 8861: resolved fixed --- .../api/commands/ListNetworkOfferingsCmd.java | 9 ++++++++- .../configuration/ConfigurationManagerImpl.java | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/api/src/com/cloud/api/commands/ListNetworkOfferingsCmd.java b/api/src/com/cloud/api/commands/ListNetworkOfferingsCmd.java index e4c70e3e306..27750f09f09 100644 --- a/api/src/com/cloud/api/commands/ListNetworkOfferingsCmd.java +++ b/api/src/com/cloud/api/commands/ListNetworkOfferingsCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.ApiConstants; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; +import com.cloud.api.BaseCmd.CommandType; import com.cloud.api.response.ListResponse; import com.cloud.api.response.NetworkOfferingResponse; import com.cloud.offering.NetworkOffering; @@ -64,9 +65,11 @@ public class ListNetworkOfferingsCmd extends BaseListCmd { @Parameter(name=ApiConstants.AVAILABILITY, type=CommandType.STRING, description="the availability of network offering. Default value is Required") private String availability; - @Parameter(name=ApiConstants.GUEST_IP_TYPE, type=CommandType.STRING, description="the guest ip type for the network offering, supported types are Direct and Virtual.") private String guestIpType; + + @Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, description="list netowrk offerings available for network creation in specific zone") + private Long zoneId; ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// @@ -108,6 +111,10 @@ public class ListNetworkOfferingsCmd extends BaseListCmd { return guestIpType; } + public Long getZoneId() { + return zoneId; + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index 7744463a8e4..86c243b579a 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -2513,6 +2513,12 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura Object isShared = cmd.getIsShared(); Object availability = cmd.getAvailability(); Object guestIpType = cmd.getGuestIpType(); + Long zoneId = cmd.getZoneId(); + DataCenter zone = null; + + if (zoneId != null) { + zone = getZone(zoneId); + } Object keyword = cmd.getKeyword(); @@ -2559,6 +2565,15 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura sc.addAnd("availability", SearchCriteria.Op.EQ, availability); } + if (zone != null) { + if (zone.getNetworkType() == NetworkType.Basic) { + //return empty list as we don't allow to create networks in basic zone, and shouldn't display networkOfferings + return new ArrayList(); + } else if (zone.isSecurityGroupEnabled()){ + sc.addAnd("guestType", SearchCriteria.Op.EQ, GuestIpType.Direct); + } + } + //Don't return system network offerings to the user sc.addAnd("systemOnly", SearchCriteria.Op.EQ, false);