From 8aee2ad2d3e8deb1518786c4d526247422567a87 Mon Sep 17 00:00:00 2001 From: davidjumani Date: Mon, 19 Oct 2020 14:22:07 +0530 Subject: [PATCH] Validating type parameter and including all types --- api/src/main/java/com/cloud/network/Network.java | 16 +++++++++++++++- .../command/user/network/ListNetworksCmd.java | 11 +++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/api/src/main/java/com/cloud/network/Network.java b/api/src/main/java/com/cloud/network/Network.java index 28528f1b558d..599bfeec49e0 100644 --- a/api/src/main/java/com/cloud/network/Network.java +++ b/api/src/main/java/com/cloud/network/Network.java @@ -43,7 +43,21 @@ public interface Network extends ControlledEntity, StateObject, InternalIdentity, Identity, Serializable, Displayable { enum GuestType { - Shared, Isolated, L2 + Shared, Isolated, L2; + + public static GuestType fromValue(String type) { + if (StringUtils.isBlank(type)) { + return null; + } else if (type.equalsIgnoreCase("Shared")) { + return Shared; + } else if (type.equalsIgnoreCase("Isolated")) { + return Isolated; + } else if (type.equalsIgnoreCase("L2")) { + return L2; + } else { + throw new InvalidParameterValueException("Unexpected Guest type : " + type); + } + } } enum PVlanType { diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java index b737212e5998..0127fac6af0d 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java @@ -36,6 +36,7 @@ import com.cloud.network.Network; import com.cloud.utils.Pair; +import com.google.common.base.Strings; @APICommand(name = "listNetworks", description = "Lists all available networks.", responseObject = NetworkResponse.class, responseView = ResponseView.Restricted, entityType = {Network.class}, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false) @@ -52,7 +53,7 @@ public class ListNetworksCmd extends BaseListTaggedResourcesCmd implements UserC @Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, description = "the zone ID of the network") private Long zoneId; - @Parameter(name = ApiConstants.TYPE, type = CommandType.STRING, description = "the type of the network. Supported values are: isolated and shared") + @Parameter(name = ApiConstants.TYPE, type = CommandType.STRING, description = "the type of the network. Supported values are: isolated, l2, shared and all") private String guestIpType; @Parameter(name = ApiConstants.IS_SYSTEM, type = CommandType.BOOLEAN, description = "true if network is system, false otherwise") @@ -101,7 +102,13 @@ public Long getZoneId() { } public String getGuestIpType() { - return guestIpType; + if (!Strings.isNullOrEmpty(guestIpType)) { + if (guestIpType.equalsIgnoreCase("all")) { + return null; + } + return Network.GuestType.fromValue(guestIpType).toString(); + } + return null; } public Boolean getIsSystem() {