From ef8438d59a94e28b7bb504d5c2346a15d06a12d6 Mon Sep 17 00:00:00 2001 From: andreisavu Date: Tue, 10 Jan 2012 02:17:39 +0200 Subject: [PATCH] Use enum for PortForwardingRule protocol --- .../config/CloudStackParserModule.java | 2 +- .../cloudstack/domain/PortForwardingRule.java | 63 ++++++++++++------- .../features/FirewallAsyncClient.java | 2 +- .../cloudstack/features/FirewallClient.java | 2 +- .../features/FirewallAsyncClientTest.java | 7 ++- .../features/FirewallClientExpectTest.java | 9 +-- .../features/FirewallClientLiveTest.java | 2 +- .../ListPortForwardingRulesResponseTest.java | 4 +- 8 files changed, 57 insertions(+), 34 deletions(-) diff --git a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/config/CloudStackParserModule.java b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/config/CloudStackParserModule.java index 0ac02f2c15..069462dfb5 100644 --- a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/config/CloudStackParserModule.java +++ b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/config/CloudStackParserModule.java @@ -85,7 +85,7 @@ public class CloudStackParserModule extends AbstractModule { private long IPAddressId; @SerializedName("privateport") private int privatePort; - private String protocol; + private PortForwardingRule.Protocol protocol; @SerializedName("publicport") public int publicPort; private String state; diff --git a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/domain/PortForwardingRule.java b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/domain/PortForwardingRule.java index e0dada1791..d41fae4ae0 100644 --- a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/domain/PortForwardingRule.java +++ b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/domain/PortForwardingRule.java @@ -26,9 +26,30 @@ import com.google.common.collect.ImmutableSet; import com.google.gson.annotations.SerializedName; /** - * @author Adrian Cole + * @author Adrian Cole, Andrei Savu */ public class PortForwardingRule implements Comparable { + + public static enum Protocol { + TCP, + UDP, + ICMP, + UNKNOWN; + + public static Protocol fromValue(String value) { + try { + return valueOf(value.toUpperCase()); + } catch (IllegalArgumentException e) { + return UNKNOWN; + } + } + + @Override + public String toString() { + return name().toLowerCase(); + } + } + public static Builder builder() { return new Builder(); } @@ -38,7 +59,7 @@ public class PortForwardingRule implements Comparable { private String IPAddress; private long IPAddressId; private int privatePort; - private String protocol; + private Protocol protocol; public int publicPort; private String state; private String virtualMachineDisplayName; @@ -68,7 +89,7 @@ public class PortForwardingRule implements Comparable { return this; } - public Builder protocol(String protocol) { + public Builder protocol(Protocol protocol) { this.protocol = protocol; return this; } @@ -115,7 +136,7 @@ public class PortForwardingRule implements Comparable { public PortForwardingRule build() { return new PortForwardingRule(id, IPAddress, IPAddressId, privatePort, protocol, publicPort, state, - virtualMachineDisplayName, virtualMachineId, virtualMachineName, CIDRs, privateEndPort, publicEndPort); + virtualMachineDisplayName, virtualMachineId, virtualMachineName, CIDRs, privateEndPort, publicEndPort); } } @@ -126,7 +147,7 @@ public class PortForwardingRule implements Comparable { private long IPAddressId; @SerializedName("privateport") private int privatePort; - private String protocol; + private Protocol protocol; @SerializedName("publicport") public int publicPort; private String state; @@ -143,7 +164,7 @@ public class PortForwardingRule implements Comparable { @SerializedName("publicendport") private int publicEndPort; - public PortForwardingRule(long id, String iPAddress, long iPAddressId, int privatePort, String protocol, + public PortForwardingRule(long id, String iPAddress, long iPAddressId, int privatePort, Protocol protocol, int publicPort, String state, String virtualMachineDisplayName, long virtualMachineId, String virtualMachineName, Set CIDRs, int privateEndPort, int publicEndPort) { this.id = id; @@ -197,7 +218,7 @@ public class PortForwardingRule implements Comparable { /** * @return the protocol of the port forwarding rule */ - public String getProtocol() { + public Protocol getProtocol() { return protocol; } @@ -324,20 +345,20 @@ public class PortForwardingRule implements Comparable { @Override public String toString() { return "PortForwardingRule{" + - "id=" + id + - ", IPAddress='" + IPAddress + '\'' + - ", IPAddressId=" + IPAddressId + - ", privatePort=" + privatePort + - ", protocol='" + protocol + '\'' + - ", publicPort=" + publicPort + - ", state='" + state + '\'' + - ", virtualMachineDisplayName='" + virtualMachineDisplayName + '\'' + - ", virtualMachineId=" + virtualMachineId + - ", virtualMachineName='" + virtualMachineName + '\'' + - ", CIDRs=" + getCIDRs() + - ", privateEndPort=" + privateEndPort + - ", publicEndPort=" + publicEndPort + - '}'; + "id=" + id + + ", IPAddress='" + IPAddress + '\'' + + ", IPAddressId=" + IPAddressId + + ", privatePort=" + privatePort + + ", protocol='" + protocol + '\'' + + ", publicPort=" + publicPort + + ", state='" + state + '\'' + + ", virtualMachineDisplayName='" + virtualMachineDisplayName + '\'' + + ", virtualMachineId=" + virtualMachineId + + ", virtualMachineName='" + virtualMachineName + '\'' + + ", CIDRs=" + getCIDRs() + + ", privateEndPort=" + privateEndPort + + ", publicEndPort=" + publicEndPort + + '}'; } } diff --git a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/FirewallAsyncClient.java b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/FirewallAsyncClient.java index 51360e79b6..5c9ef48e80 100644 --- a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/FirewallAsyncClient.java +++ b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/FirewallAsyncClient.java @@ -124,7 +124,7 @@ public interface FirewallAsyncClient { @Unwrap @Consumes(MediaType.APPLICATION_JSON) ListenableFuture createPortForwardingRuleForVirtualMachine( - @QueryParam("ipaddressid") long ipAddressId, @QueryParam("protocol") String protocol, + @QueryParam("ipaddressid") long ipAddressId, @QueryParam("protocol") PortForwardingRule.Protocol protocol, @QueryParam("publicport") int publicPort, @QueryParam("virtualmachineid") long virtualMachineId, @QueryParam("privateport") int privatePort); diff --git a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/FirewallClient.java b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/FirewallClient.java index 7ea4dddb51..ae02685702 100644 --- a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/FirewallClient.java +++ b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/FirewallClient.java @@ -118,7 +118,7 @@ public interface FirewallClient { * @return response used to track creation */ AsyncCreateResponse createPortForwardingRuleForVirtualMachine(long ipAddressId, - String protocol, int publicPort, long virtualMachineId, int privatePort); + PortForwardingRule.Protocol protocol, int publicPort, long virtualMachineId, int privatePort); /** * Deletes an port forwarding rule diff --git a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/FirewallAsyncClientTest.java b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/FirewallAsyncClientTest.java index b99ee32d45..1bc2025431 100644 --- a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/FirewallAsyncClientTest.java +++ b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/FirewallAsyncClientTest.java @@ -21,6 +21,7 @@ package org.jclouds.cloudstack.features; import java.io.IOException; import java.lang.reflect.Method; +import org.jclouds.cloudstack.domain.PortForwardingRule; import org.jclouds.cloudstack.options.ListPortForwardingRulesOptions; import org.jclouds.http.HttpRequest; import org.jclouds.http.functions.ParseFirstJsonValueNamed; @@ -82,12 +83,12 @@ public class FirewallAsyncClientTest extends BaseCloudStackAsyncClientTestof( - PortForwardingRule.builder().id(15).privatePort(22).protocol("tcp").publicPort(2022).virtualMachineId(3) + PortForwardingRule.builder().id(15).privatePort(22).protocol(PortForwardingRule.Protocol.TCP).publicPort(2022).virtualMachineId(3) .virtualMachineName("i-3-3-VM").IPAddressId(3).IPAddress("72.52.126.32").state("Active").CIDRs(cidrs).build(), - PortForwardingRule.builder().id(18).privatePort(22).protocol("tcp").publicPort(22).virtualMachineId(89) + PortForwardingRule.builder().id(18).privatePort(22).protocol(PortForwardingRule.Protocol.TCP).publicPort(22).virtualMachineId(89) .virtualMachineName("i-3-89-VM").IPAddressId(34).IPAddress("72.52.126.63").state("Active").build()) ); } @@ -247,7 +247,7 @@ public class FirewallClientExpectTest extends BaseCloudStackRestClientExpectTest Set cidrs = ImmutableSet.of("0.0.0.0/1", "128.0.0.0/1"); assertEquals(client.getPortForwardingRule(15), - PortForwardingRule.builder().id(15).privatePort(22).protocol("tcp").publicPort(2022).virtualMachineId(3) + PortForwardingRule.builder().id(15).privatePort(22).protocol(PortForwardingRule.Protocol.TCP).publicPort(2022).virtualMachineId(3) .virtualMachineName("i-3-3-VM").IPAddressId(3).IPAddress("72.52.126.32").state("Active").CIDRs(cidrs).build()); } @@ -290,7 +290,8 @@ public class FirewallClientExpectTest extends BaseCloudStackRestClientExpectTest .build()) .getFirewallClient(); - AsyncCreateResponse response = client.createPortForwardingRuleForVirtualMachine(2, "tcp", 22, 1234, 22); + AsyncCreateResponse response = client.createPortForwardingRuleForVirtualMachine( + 2, PortForwardingRule.Protocol.TCP, 22, 1234, 22); assertEquals(response.getJobId(), 2035); assertEquals(response.getId(), 2015); } diff --git a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/FirewallClientLiveTest.java b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/FirewallClientLiveTest.java index a4d0b4d7ac..836e41405f 100644 --- a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/FirewallClientLiveTest.java +++ b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/FirewallClientLiveTest.java @@ -96,7 +96,7 @@ public class FirewallClientLiveTest extends BaseCloudStackClientLiveTest { ip = reuseOrAssociate.apply(network); try { AsyncCreateResponse job = client.getFirewallClient() - .createPortForwardingRuleForVirtualMachine(ip.getId(), "tcp", 22, vm.getId(), 22); + .createPortForwardingRuleForVirtualMachine(ip.getId(), PortForwardingRule.Protocol.TCP, 22, vm.getId(), 22); assertTrue(jobComplete.apply(job.getJobId())); portForwardingRule = client.getFirewallClient().getPortForwardingRule(job.getId()); diff --git a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/parse/ListPortForwardingRulesResponseTest.java b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/parse/ListPortForwardingRulesResponseTest.java index 85b41e656c..62e74eb2b1 100644 --- a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/parse/ListPortForwardingRulesResponseTest.java +++ b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/parse/ListPortForwardingRulesResponseTest.java @@ -61,9 +61,9 @@ public class ListPortForwardingRulesResponseTest extends BaseSetParserTest expected() { Set cidrs = ImmutableSet.of("0.0.0.0/1", "128.0.0.0/1"); return ImmutableSet. of( - PortForwardingRule.builder().id(15).privatePort(22).protocol("tcp").publicPort(2022).virtualMachineId(3) + PortForwardingRule.builder().id(15).privatePort(22).protocol(PortForwardingRule.Protocol.TCP).publicPort(2022).virtualMachineId(3) .virtualMachineName("i-3-3-VM").IPAddressId(3).IPAddress("72.52.126.32").state("Active").CIDRs(cidrs).build(), - PortForwardingRule.builder().id(18).privatePort(22).protocol("tcp").publicPort(22).virtualMachineId(89) + PortForwardingRule.builder().id(18).privatePort(22).protocol(PortForwardingRule.Protocol.TCP).publicPort(22).virtualMachineId(89) .virtualMachineName("i-3-89-VM").IPAddressId(34).IPAddress("72.52.126.63").state("Active").build()); }