diff --git a/api/src/com/cloud/api/ApiConstants.java b/api/src/com/cloud/api/ApiConstants.java index 665bfac9527..49ef2b94ef5 100755 --- a/api/src/com/cloud/api/ApiConstants.java +++ b/api/src/com/cloud/api/ApiConstants.java @@ -331,6 +331,7 @@ public class ApiConstants { public static final String SORT_BY = "sortby"; public static final String CHANGE_CIDR = "changecidr"; public static final String PURPOSE = "purpose"; + public static final String IS_TAGGED = "istagged"; public enum HostDetails { all, capacity, events, stats, min; diff --git a/api/src/com/cloud/api/commands/ListNetworkOfferingsCmd.java b/api/src/com/cloud/api/commands/ListNetworkOfferingsCmd.java index 98ffe270d91..533da004414 100644 --- a/api/src/com/cloud/api/commands/ListNetworkOfferingsCmd.java +++ b/api/src/com/cloud/api/commands/ListNetworkOfferingsCmd.java @@ -28,7 +28,6 @@ import com.cloud.api.BaseListCmd; import com.cloud.api.IdentityMapper; 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; @@ -88,7 +87,10 @@ public class ListNetworkOfferingsCmd extends BaseListCmd { private Boolean specifyIpRanges; @Parameter(name=ApiConstants.TAGS, type=CommandType.STRING, description="list network offerings by tags", length=4096) - private String tags; + private String tags; + + @Parameter(name=ApiConstants.IS_TAGGED, type=CommandType.BOOLEAN, description="true if offering has tags specified") + private Boolean isTagged; ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// @@ -154,6 +156,10 @@ public class ListNetworkOfferingsCmd extends BaseListCmd { return tags; } + public Boolean isTagged() { + return isTagged; + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index 57cbe8ed28b..d293ca809b6 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -3392,6 +3392,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura List supportedServicesStr = cmd.getSupportedServices(); Object specifyIpRanges = cmd.getSpecifyIpRanges(); String tags = cmd.getTags(); + Boolean isTagged = cmd.isTagged(); if (zoneId != null) { zone = getZone(zoneId); @@ -3486,10 +3487,14 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura } if (tags != null) { - if (tags.isEmpty()) { - sc.addAnd("tags", SearchCriteria.Op.NULL); + sc.addAnd("tags", SearchCriteria.Op.EQ, tags); + } + + if (isTagged != null) { + if (isTagged) { + sc.addAnd("tags", SearchCriteria.Op.NNULL); } else { - sc.addAnd("tags", SearchCriteria.Op.EQ, tags); + sc.addAnd("tags", SearchCriteria.Op.NULL); } }