You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2018/07/31 17:55:12 UTC

jclouds-labs git commit: Firewall Improvements Updated Tests

Repository: jclouds-labs
Updated Branches:
  refs/heads/master 2d9cb407e -> d74d7f62d


Firewall Improvements
Updated Tests


Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/d74d7f62
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/d74d7f62
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/d74d7f62

Branch: refs/heads/master
Commit: d74d7f62d35ee6a126792ab03bce2148e929b2ff
Parents: 2d9cb40
Author: Ali Bazlamit <al...@hotmail.com>
Authored: Tue Jul 24 15:09:45 2018 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Tue Jul 31 10:47:42 2018 -0700

----------------------------------------------------------------------
 .../oneandone/rest/domain/FirewallPolicy.java   | 33 +++++++--
 .../oneandone/rest/domain/LoadBalancer.java     |  7 +-
 .../jclouds/oneandone/rest/domain/Types.java    | 23 ++++++
 .../rest/features/FirewallPolicyApi.java        |  6 --
 .../oneandone/rest/features/ServerApi.java      |  7 --
 .../jclouds/oneandone/rest/ids/ServerIpRef.java | 31 ++++++++
 .../features/FirewallPolicyApiLiveTest.java     | 35 ++++-----
 .../features/FirewallPolicyApiMockTest.java     | 12 ---
 .../rest/features/ServerApiMockTest.java        | 24 ------
 .../rest/features/ServerNetworkApiLiveTest.java | 77 ++++++++++++++------
 .../rest/internal/BaseOneAndOneLiveTest.java    | 54 +++++++++++---
 11 files changed, 195 insertions(+), 114 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d74d7f62/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/FirewallPolicy.java
----------------------------------------------------------------------
diff --git a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/FirewallPolicy.java b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/FirewallPolicy.java
index a54b653..dc9f98c 100644
--- a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/FirewallPolicy.java
+++ b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/FirewallPolicy.java
@@ -19,6 +19,7 @@ package org.apache.jclouds.oneandone.rest.domain;
 import com.google.auto.value.AutoValue;
 import com.google.common.collect.ImmutableList;
 import java.util.List;
+import org.apache.jclouds.oneandone.rest.domain.Types.FirewallRuleAction;
 import org.apache.jclouds.oneandone.rest.domain.Types.RuleProtocol;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.json.SerializedNames;
@@ -147,14 +148,26 @@ public abstract class FirewallPolicy {
          @Nullable
          public abstract String source();
 
-         @SerializedNames({"protocol", "port_from", "port_to", "source"})
-         public static CreatePayload create(RuleProtocol protocol, Integer portFrom, Integer portTo, String source) {
+         @Nullable
+         public abstract FirewallRuleAction action();
+         
+         @Nullable
+         public abstract String port();
+         
+         @Nullable
+         public abstract String description();
+
+         @SerializedNames({"protocol", "port_from", "port_to", "source", "action", "port", "description"})
+         public static CreatePayload create(RuleProtocol protocol, Integer portFrom, Integer portTo, String source, FirewallRuleAction action, String port, String description) {
             return builder()
-                    .portFrom(portFrom)
-                    .portTo(portTo)
-                    .protocol(protocol)
-                    .source(source)
-                    .build();
+                  .portFrom(portFrom)
+                  .portTo(portTo)
+                  .protocol(protocol)
+                  .source(source)
+                  .action(action)
+                  .port(port)
+                  .description(description)
+                  .build();
          }
 
          public static Builder builder() {
@@ -171,6 +184,12 @@ public abstract class FirewallPolicy {
             public abstract Builder portTo(Integer portTo);
 
             public abstract Builder source(String source);
+            
+            public abstract Builder action(FirewallRuleAction action);
+            
+            public abstract Builder port(String port);
+            
+            public abstract Builder description(String description);
 
             public abstract CreatePayload build();
          }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d74d7f62/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/LoadBalancer.java
----------------------------------------------------------------------
diff --git a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/LoadBalancer.java b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/LoadBalancer.java
index 621a1a9..f14f884 100644
--- a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/LoadBalancer.java
+++ b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/LoadBalancer.java
@@ -66,12 +66,11 @@ public abstract class LoadBalancer {
 
    public abstract List<ServerIp> serverIps();
 
-   public abstract String cloudpanelId();
 
    @SerializedNames({"id", "name", "description", "state", "creation_date", "ip", "health_check_test", "health_check_interval", "health_check_path",
-      "health_check_path_parser", "persistence", "persistence_time", "method", "datacenter", "rules", "server_ips", "cloudpanel_id"})
-   public static LoadBalancer create(String id, String name, String description, String state, String creationDate, String ip, HealthCheckTestTypes healthCheckTest, int healthCheckInterval, String healthCheckPath, String healthCheckPathParser, Boolean persistence, Integer persistenceTime, Types.LoadBalancerMethod method, DataCenter datacenter, List<Rule> rules, List<ServerIp> serverIps, String cloudpanelId) {
-      return new AutoValue_LoadBalancer(id, name, description, state, creationDate, ip, healthCheckTest, healthCheckInterval, healthCheckPath, healthCheckPathParser, persistence, persistenceTime, method, datacenter, rules == null ? ImmutableList.<Rule>of() : ImmutableList.copyOf(rules), serverIps == null ? ImmutableList.<ServerIp>of() : ImmutableList.copyOf(serverIps), cloudpanelId
+      "health_check_path_parser", "persistence", "persistence_time", "method", "datacenter", "rules", "server_ips"})
+   public static LoadBalancer create(String id, String name, String description, String state, String creationDate, String ip, HealthCheckTestTypes healthCheckTest, int healthCheckInterval, String healthCheckPath, String healthCheckPathParser, Boolean persistence, Integer persistenceTime, Types.LoadBalancerMethod method, DataCenter datacenter, List<Rule> rules, List<ServerIp> serverIps) {
+      return new AutoValue_LoadBalancer(id, name, description, state, creationDate, ip, healthCheckTest, healthCheckInterval, healthCheckPath, healthCheckPathParser, persistence, persistenceTime, method, datacenter, rules == null ? ImmutableList.<Rule>of() : ImmutableList.copyOf(rules), serverIps == null ? ImmutableList.<ServerIp>of() : ImmutableList.copyOf(serverIps)
       );
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d74d7f62/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/Types.java
----------------------------------------------------------------------
diff --git a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/Types.java b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/Types.java
index 903317c..3a85c28 100644
--- a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/Types.java
+++ b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/domain/Types.java
@@ -260,4 +260,27 @@ public class Types {
       }
 
    }
+
+   public enum FirewallRuleAction {
+      ALLOW("allow"),
+      DENY("deny"),
+      UNRECOGNIZED("");
+
+      public static FirewallRuleAction fromValue(String v) {
+         return Enums.getIfPresent(FirewallRuleAction.class, v).or(UNRECOGNIZED);
+      }
+      
+      // the value which is used for matching
+      // the json node value with this enum
+      private final String value;
+
+      FirewallRuleAction(final String type) {
+         value = type;
+      }
+
+      @Override
+      public String toString() {
+         return value;
+      }
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d74d7f62/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApi.java
----------------------------------------------------------------------
diff --git a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApi.java b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApi.java
index a8244ef..de38109 100644
--- a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApi.java
+++ b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApi.java
@@ -92,12 +92,6 @@ public interface FirewallPolicyApi extends Closeable {
    @Fallback(Fallbacks.NullOnNotFoundOr404.class)
    FirewallPolicy.ServerIp getServerIp(@PathParam("firewallPolicyId") String firewallPolicyId, @PathParam("serverIpId") String serverIpId);
 
-   @Named("firewallpolicies:serverips:delete")
-   @DELETE
-   @Path("/{firewallPolicyId}/server_ips/{serverIpId}")
-   @MapBinder(BindToJsonPayload.class)
-   FirewallPolicy unassignServerIp(@PathParam("firewallPolicyId") String firewallPolicyId, @PathParam("serverIpId") String serverIpId);
-
    @Named("firewallpolicies:rules:list")
    @GET
    @Path("/{firewallPolicyId}/rules")

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d74d7f62/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/ServerApi.java
----------------------------------------------------------------------
diff --git a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/ServerApi.java b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/ServerApi.java
index 5992f43..2e4caeb 100644
--- a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/ServerApi.java
+++ b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/features/ServerApi.java
@@ -226,13 +226,6 @@ public interface ServerApi extends Closeable {
    @MapBinder(BindToJsonPayload.class)
    Server addFirewallPolicy(@PathParam("serverId") String serverId, @PathParam("ipId") String ipId, @PayloadParam("id") String policyId);
 
-   @Named("servers:ip:firewallPolicy:delete")
-   @DELETE
-   @Path("/{serverId}/ips/{ipId}/firewall_policy")
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
-   @MapBinder(BindToJsonPayload.class)
-   Server deleteIpFirewallPolicy(@PathParam("serverId") String serverId, @PathParam("ipId") String ipId);
-
    @Named("servers:ip:loadBalancer:list")
    @GET
    @Path("/{serverId}/ips/{ipId}/load_balancers")

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d74d7f62/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/ids/ServerIpRef.java
----------------------------------------------------------------------
diff --git a/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/ids/ServerIpRef.java b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/ids/ServerIpRef.java
new file mode 100644
index 0000000..a62bb88
--- /dev/null
+++ b/oneandone/src/main/java/org/apache/jclouds/oneandone/rest/ids/ServerIpRef.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jclouds.oneandone.rest.ids;
+
+import com.google.auto.value.AutoValue;
+
+@AutoValue
+public abstract class ServerIpRef {
+
+   public abstract String serverId();
+
+   public abstract String ipId();
+
+   public static ServerIpRef create(String serverId, String ipId) {
+      return new AutoValue_ServerIpRef(serverId, ipId);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d74d7f62/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApiLiveTest.java
----------------------------------------------------------------------
diff --git a/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApiLiveTest.java b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApiLiveTest.java
index 2b139d0..13cacae 100644
--- a/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApiLiveTest.java
+++ b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApiLiveTest.java
@@ -49,11 +49,11 @@ public class FirewallPolicyApiLiveTest extends BaseOneAndOneLiveTest {
 
       List<FirewallPolicy.Rule.CreatePayload> rules = new ArrayList<FirewallPolicy.Rule.CreatePayload>();
       FirewallPolicy.Rule.CreatePayload rule = FirewallPolicy.Rule.CreatePayload.builder()
-              .portFrom(80)
-              .portTo(80)
-              .protocol(Types.RuleProtocol.TCP)
-              .source("0.0.0.0")
-              .build();
+            .port("80")
+            .action(Types.FirewallRuleAction.ALLOW)
+            .protocol(Types.RuleProtocol.TCP)
+            .source("0.0.0.0")
+            .build();
       rules.add(rule);
       currentFirewallPolicy = firewallPolicyApi().create(FirewallPolicy.CreateFirewallPolicy.create("jclouds firewall policy", "desc", rules));
    }
@@ -127,25 +127,17 @@ public class FirewallPolicyApiLiveTest extends BaseOneAndOneLiveTest {
       assertNotNull(result);
    }
 
-   @Test(dependsOnMethods = "testServerIpGet")
-   public void testUnassignServer() {
-      FirewallPolicy result = firewallPolicyApi().unassignServerIp(currentFirewallPolicy.id(), currentServer.ips().get(0).id());
-
-      assertNotNull(result);
-      assertEquals(result.serverIps().size(), 0);
-   }
-
-   @Test(dependsOnMethods = "testUnassignServer")
+   @Test(dependsOnMethods = "testListServerIps")
    public void testAddRules() {
       assertNodeAvailable(currentServer);
       currentServer = updateServerStatus(currentServer);
       List<FirewallPolicy.Rule.CreatePayload> rules = new ArrayList<FirewallPolicy.Rule.CreatePayload>();
       FirewallPolicy.Rule.CreatePayload rule = FirewallPolicy.Rule.CreatePayload.builder()
-              .portFrom(4567)
-              .portTo(4567)
-              .protocol(Types.RuleProtocol.TCP)
-              .source("0.0.0.0")
-              .build();
+            .port("4567")
+            .action(Types.FirewallRuleAction.ALLOW)
+            .protocol(Types.RuleProtocol.TCP)
+            .source("0.0.0.0")
+            .build();
       rules.add(rule);
       FirewallPolicy response = firewallPolicyApi().addRules(currentFirewallPolicy.id(), FirewallPolicy.Rule.AddRule.create(rules));
       FirewallPolicy.Rule ruleFromApi = firewallPolicyApi().getRule(currentFirewallPolicy.id(), currentFirewallPolicy.rules().get(0).id());
@@ -184,8 +176,9 @@ public class FirewallPolicyApiLiveTest extends BaseOneAndOneLiveTest {
    @AfterClass(alwaysRun = true)
    public void teardownTest() throws InterruptedException {
       assertNodeAvailable(currentServer);
-      firewallPolicyApi().delete(currentFirewallPolicy.id());
-      assertNodeAvailable(currentServer);
       deleteServer(currentServer.id());
+      assertNodeRemoved(currentServer);
+      firewallPolicyApi().delete(currentFirewallPolicy.id());
+
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d74d7f62/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApiMockTest.java
----------------------------------------------------------------------
diff --git a/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApiMockTest.java b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApiMockTest.java
index 29aa1b8..91fb59a 100644
--- a/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApiMockTest.java
+++ b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/FirewallPolicyApiMockTest.java
@@ -237,18 +237,6 @@ public class FirewallPolicyApiMockTest extends BaseOneAndOneApiMockTest {
    }
 
    @Test
-   public void testUnassignServerIp() throws InterruptedException {
-      server.enqueue(
-              new MockResponse().setBody(stringFromResource("/firewallpolicies/get.json"))
-      );
-      FirewallPolicy response = firewallpolicyApi().unassignServerIp("firewallpolicyId", "serverIpId");
-
-      assertNotNull(response);
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "DELETE", "/firewall_policies/firewallpolicyId/server_ips/serverIpId");
-   }
-
-   @Test
    public void testListRules() throws InterruptedException {
       server.enqueue(
               new MockResponse().setBody(stringFromResource("/firewallpolicies/list.rules.json"))

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d74d7f62/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/ServerApiMockTest.java
----------------------------------------------------------------------
diff --git a/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/ServerApiMockTest.java b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/ServerApiMockTest.java
index e9ca3f5..32b7138 100644
--- a/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/ServerApiMockTest.java
+++ b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/ServerApiMockTest.java
@@ -435,30 +435,6 @@ public class ServerApiMockTest extends BaseOneAndOneApiMockTest {
    }
 
    @Test
-   public void testDeleteIpFirewallPolicy() throws InterruptedException {
-      server.enqueue(
-              new MockResponse().setBody(stringFromResource("/server/delete.json"))
-      );
-      Server response = serverApi().deleteIpFirewallPolicy("serverId", "ipId");
-
-      assertNotNull(response);
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "DELETE", "/servers/serverId/ips/ipId/firewall_policy");
-   }
-
-   @Test
-   public void testDeleteIpFirewallPolicy404() throws InterruptedException {
-      server.enqueue(
-              new MockResponse().setResponseCode(404)
-      );
-      Server response = serverApi().deleteIpFirewallPolicy("serverId", "ipId");
-
-      assertEquals(response, null);
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "DELETE", "/servers/serverId/ips/ipId/firewall_policy");
-   }
-
-   @Test
    public void testListIpLoadBalancer() throws InterruptedException {
       server.enqueue(
               new MockResponse().setBody(stringFromResource("/server/list.ip.loadBalancers.json"))

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d74d7f62/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/ServerNetworkApiLiveTest.java
----------------------------------------------------------------------
diff --git a/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/ServerNetworkApiLiveTest.java b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/ServerNetworkApiLiveTest.java
index bd936e0..b657879 100644
--- a/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/ServerNetworkApiLiveTest.java
+++ b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/features/ServerNetworkApiLiveTest.java
@@ -16,12 +16,16 @@
  */
 package org.apache.jclouds.oneandone.rest.features;
 
+import java.util.ArrayList;
 import java.util.List;
+import org.apache.jclouds.oneandone.rest.domain.FirewallPolicy;
+import org.apache.jclouds.oneandone.rest.domain.LoadBalancer;
 import org.apache.jclouds.oneandone.rest.domain.Server;
 import org.apache.jclouds.oneandone.rest.domain.ServerFirewallPolicy;
 import org.apache.jclouds.oneandone.rest.domain.ServerIp;
 import org.apache.jclouds.oneandone.rest.domain.ServerLoadBalancer;
 import org.apache.jclouds.oneandone.rest.domain.Types;
+import org.apache.jclouds.oneandone.rest.ids.ServerIpRef;
 import org.apache.jclouds.oneandone.rest.internal.BaseOneAndOneLiveTest;
 import org.testng.Assert;
 import static org.testng.Assert.assertFalse;
@@ -34,21 +38,53 @@ public class ServerNetworkApiLiveTest extends BaseOneAndOneLiveTest {
 
    private Server currentServer;
    private ServerIp currentIP;
-   private ServerFirewallPolicy currentPolicy;
-   private ServerLoadBalancer currentBalancer;
+   private ServerLoadBalancer currentServerBalancer;
+   private LoadBalancer currentLoadBalancer;
+   private FirewallPolicy currentFirewallPolicy;
 
    @BeforeClass
    public void setupTest() {
       currentServer = createServer("jclouds network test");
+      List<LoadBalancer.Rule.CreatePayload> rules = new ArrayList<LoadBalancer.Rule.CreatePayload>();
+      LoadBalancer.Rule.CreatePayload rule = LoadBalancer.Rule.CreatePayload.builder()
+            .portBalancer(4567)
+            .portServer(4567)
+            .protocol(Types.RuleProtocol.TCP)
+            .source("0.0.0.0")
+            .build();
+      rules.add(rule);
+      currentLoadBalancer = loadBalancerApi().create(LoadBalancer.CreateLoadBalancer.builder()
+            .name("jclouds loadbalancer")
+            .rules(rules)
+            .description("description")
+            .healthCheckInterval(1)
+            .healthCheckPath("path")
+            .healthCheckTest(Types.HealthCheckTestTypes.TCP)
+            .method(Types.LoadBalancerMethod.ROUND_ROBIN)
+            .persistence(Boolean.TRUE)
+            .persistenceTime(200)
+            .build());
+
+      List<FirewallPolicy.Rule.CreatePayload> fwrules = new ArrayList<FirewallPolicy.Rule.CreatePayload>();
+      FirewallPolicy.Rule.CreatePayload fwrule = FirewallPolicy.Rule.CreatePayload.builder()
+            .port("80")
+            .action(Types.FirewallRuleAction.ALLOW)
+            .protocol(Types.RuleProtocol.TCP)
+            .source("0.0.0.0")
+            .build();
+      fwrules.add(fwrule);
+      currentFirewallPolicy = firewallPolicyApi().create(FirewallPolicy.CreateFirewallPolicy.create("jclouds firewall policy", "desc", fwrules));
    }
 
    @AfterClass(alwaysRun = true)
    public void teardownTest() throws InterruptedException {
       deleteIp();
-      //give time for operations to finish
       if (currentServer != null) {
          assertNodeAvailable(currentServer);
          deleteServer(currentServer.id());
+         assertNodeRemoved(currentServer);
+         loadBalancerApi().delete(currentLoadBalancer.id());
+         firewallPolicyApi().delete(currentFirewallPolicy.id());
       }
    }
 
@@ -57,11 +93,21 @@ public class ServerNetworkApiLiveTest extends BaseOneAndOneLiveTest {
       return api.serverApi();
    }
 
+   private LoadBalancerApi loadBalancerApi() {
+
+      return api.loadBalancerApi();
+   }
+
+   private FirewallPolicyApi firewallPolicyApi() {
+      return api.firewallPolicyApi();
+   }
+
    private void deleteIp() throws InterruptedException {
       assertNodeAvailable(currentServer);
 
       Server response = serverApi().deleteIp(currentServer.id(), currentIP.id());
-
+      assertNodeAvailable(currentServer);
+      assertServerIPRemoved(ServerIpRef.create(currentServer.id(), currentIP.id()));
       assertNotNull(response);
    }
 
@@ -78,7 +124,7 @@ public class ServerNetworkApiLiveTest extends BaseOneAndOneLiveTest {
       assertNodeAvailable(currentServer);
 
       Server response = serverApi().addIp(currentServer.id(), Types.IPType.IPV4);
-
+      assertNodeAvailable(currentServer);
       assertNotNull(response);
    }
 
@@ -86,7 +132,6 @@ public class ServerNetworkApiLiveTest extends BaseOneAndOneLiveTest {
    public void testListipFirewallPolicies() throws InterruptedException {
       assertNodeAvailable(currentServer);
       List<ServerFirewallPolicy> policies = serverApi().listIpFirewallPolicies(currentServer.id(), currentIP.id());
-      currentPolicy = policies.get(0);
       assertNotNull(policies);
       assertFalse(policies.isEmpty());
       Assert.assertTrue(policies.size() > 0);
@@ -95,17 +140,9 @@ public class ServerNetworkApiLiveTest extends BaseOneAndOneLiveTest {
    @Test(dependsOnMethods = "testListips")
    public void testAddIpFirewallPolicy() throws InterruptedException {
       assertNodeAvailable(currentServer);
-      //TODO:: replace with live api data
-      String firewallPolicyId = "34A7E423DA3253E6D38563ED06F1041F";
-
-      Server response = serverApi().addFirewallPolicy(currentServer.id(), currentIP.id(), firewallPolicyId);
-      assertNotNull(response);
-   }
 
-   @Test(dependsOnMethods = "testListipFirewallPolicies")
-   public void testDeleteIpFirewallPolicy() throws InterruptedException {
+      Server response = serverApi().addFirewallPolicy(currentServer.id(), currentIP.id(), currentFirewallPolicy.id());
       assertNodeAvailable(currentServer);
-      Server response = serverApi().deleteIpFirewallPolicy(currentServer.id(), currentIP.id());
       assertNotNull(response);
    }
 
@@ -117,16 +154,14 @@ public class ServerNetworkApiLiveTest extends BaseOneAndOneLiveTest {
       assertFalse(balancers.isEmpty());
    }
 
-   @Test(dependsOnMethods = "testAddIp")
+   @Test(dependsOnMethods = "testListipFirewallPolicies")
    public void testAddIpLoadBalancer() throws InterruptedException {
       assertNodeAvailable(currentServer);
-      //TODO:: replace with live api data
-      String loadBalancerId = "13C3F75BA55AF28B8B2B4E508786F48B";
 
-      Server response = serverApi().addIpLoadBalancer(currentServer.id(), currentIP.id(), loadBalancerId);
+      Server response = serverApi().addIpLoadBalancer(currentServer.id(), currentIP.id(), currentLoadBalancer.id());
 
       List<ServerLoadBalancer> balancers = serverApi().listIpLoadBalancer(currentServer.id(), currentIP.id());
-      currentBalancer = balancers.get(0);
+      currentServerBalancer = balancers.get(0);
 
       assertNotNull(response);
    }
@@ -134,7 +169,7 @@ public class ServerNetworkApiLiveTest extends BaseOneAndOneLiveTest {
    @Test(dependsOnMethods = "testListipLoadBalancer")
    public void testDeleteIpLoadBalancer() throws InterruptedException {
       assertNodeAvailable(currentServer);
-      Server response = serverApi().deleteIpLoadBalancer(currentServer.id(), currentIP.id(), currentBalancer.id());
+      Server response = serverApi().deleteIpLoadBalancer(currentServer.id(), currentIP.id(), currentServerBalancer.id());
       assertNotNull(response);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d74d7f62/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/internal/BaseOneAndOneLiveTest.java
----------------------------------------------------------------------
diff --git a/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/internal/BaseOneAndOneLiveTest.java b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/internal/BaseOneAndOneLiveTest.java
index 0666426..b8e6fa2 100644
--- a/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/internal/BaseOneAndOneLiveTest.java
+++ b/oneandone/src/test/java/org/apache/jclouds/oneandone/rest/internal/BaseOneAndOneLiveTest.java
@@ -30,8 +30,10 @@ import org.apache.jclouds.oneandone.rest.domain.Hardware;
 import org.apache.jclouds.oneandone.rest.domain.Hdd;
 import org.apache.jclouds.oneandone.rest.domain.PrivateNetwork;
 import org.apache.jclouds.oneandone.rest.domain.Server;
+import org.apache.jclouds.oneandone.rest.domain.ServerIp;
 import org.apache.jclouds.oneandone.rest.domain.Types;
 import org.apache.jclouds.oneandone.rest.domain.Vpn;
+import org.apache.jclouds.oneandone.rest.ids.ServerIpRef;
 import org.apache.jclouds.oneandone.rest.ids.ServerPrivateNetworkRef;
 import org.jclouds.apis.BaseApiLiveTest;
 import org.jclouds.compute.reference.ComputeServiceConstants.PollPeriod;
@@ -42,6 +44,8 @@ import static org.testng.Assert.assertTrue;
 public class BaseOneAndOneLiveTest extends BaseApiLiveTest<OneAndOneApi> {
 
    Predicate<Server> waitUntilServerReady;
+   Predicate<Server> waitUntilServerRemoved;
+   Predicate<ServerIpRef> waitUntilIServerIPRemoved;
    Predicate<ServerPrivateNetworkRef> waitUntilPrivateNetworkReady;
    Predicate<Vpn> waitUntilVPNReady;
    Predicate<BlockStorage> waitUntilBlockStorageReady;
@@ -64,8 +68,8 @@ public class BaseOneAndOneLiveTest extends BaseApiLiveTest<OneAndOneApi> {
             Server server = api.serverApi().get(currentServer.id());
 
             if ((server.status().state() != Types.ServerState.POWERED_OFF
-                    && server.status().state() != Types.ServerState.POWERED_ON)
-                    || server.status().percent() != 0) {
+                  && server.status().state() != Types.ServerState.POWERED_ON)
+                  || server.status().percent() != 0) {
                return false;
             } else {
                return true;
@@ -73,6 +77,22 @@ public class BaseOneAndOneLiveTest extends BaseApiLiveTest<OneAndOneApi> {
          }
       };
 
+      Predicate<Server> serverRemovedCheck = new Predicate<Server>() {
+         @Override
+         public boolean apply(Server currentServer) {
+            Server server = api.serverApi().get(currentServer.id());
+            return server == null;
+         }
+      };
+
+      Predicate<ServerIpRef> serverIPRemovedCheck = new Predicate<ServerIpRef>() {
+         @Override
+         public boolean apply(ServerIpRef serverWithIp) {
+            ServerIp server = api.serverApi().getIp(serverWithIp.serverId(), serverWithIp.ipId());
+            return server == null;
+         }
+      };
+
       Predicate<ServerPrivateNetworkRef> privateNetworkAvailableCheck = new Predicate<ServerPrivateNetworkRef>() {
          @Override
          public boolean apply(ServerPrivateNetworkRef networkRef) {
@@ -88,7 +108,7 @@ public class BaseOneAndOneLiveTest extends BaseApiLiveTest<OneAndOneApi> {
             return result.state() == Types.GenericState.ACTIVE;
          }
       };
-      
+
       Predicate<BlockStorage> bsAvailableCheck = new Predicate<BlockStorage>() {
          @Override
          public boolean apply(BlockStorage bs) {
@@ -100,6 +120,8 @@ public class BaseOneAndOneLiveTest extends BaseApiLiveTest<OneAndOneApi> {
       waitUntilPrivateNetworkReady = Predicates2.retry(privateNetworkAvailableCheck, timeouts.nodeRunning, pollPeriod.pollInitialPeriod, pollPeriod.pollMaxPeriod, TimeUnit.SECONDS);
       waitUntilServerReady = Predicates2.retry(serverAvailableCheck, timeouts.nodeRunning, pollPeriod.pollInitialPeriod, pollPeriod.pollMaxPeriod, TimeUnit.SECONDS);
       waitUntilBlockStorageReady = Predicates2.retry(bsAvailableCheck, timeouts.nodeRunning, pollPeriod.pollInitialPeriod, pollPeriod.pollMaxPeriod, TimeUnit.SECONDS);
+      waitUntilServerRemoved = Predicates2.retry(serverRemovedCheck, timeouts.nodeRunning, pollPeriod.pollInitialPeriod, pollPeriod.pollMaxPeriod, TimeUnit.SECONDS);
+      waitUntilIServerIPRemoved = Predicates2.retry(serverIPRemovedCheck, timeouts.nodeRunning, pollPeriod.pollInitialPeriod, pollPeriod.pollMaxPeriod, TimeUnit.SECONDS);
 
       return injector.getInstance(OneAndOneApi.class);
    }
@@ -111,13 +133,13 @@ public class BaseOneAndOneLiveTest extends BaseApiLiveTest<OneAndOneApi> {
       hdds.add(hdd);
       Hardware.CreateHardware hardware = Hardware.CreateHardware.create(4.0, 1.0, 2.0, hdds);
       return api.serverApi().create(Server.CreateServer.builder()
-              .name(serverName)
-              .description("testing with jclouds")
-              .hardware(hardware)
-              .applianceId("753E3C1F859874AA74EB63B3302601F5")
-              .dataCenterId("908DC2072407C94C8054610AD5A53B8C")
-              .password("Test123!")
-              .powerOn(Boolean.TRUE).build());
+            .name(serverName)
+            .description("testing with jclouds")
+            .hardware(hardware)
+            .applianceId("753E3C1F859874AA74EB63B3302601F5")
+            .dataCenterId("908DC2072407C94C8054610AD5A53B8C")
+            .password("Test123!")
+            .powerOn(Boolean.TRUE).build());
    }
 
    protected Server updateServerStatus(Server server) {
@@ -129,8 +151,16 @@ public class BaseOneAndOneLiveTest extends BaseApiLiveTest<OneAndOneApi> {
    protected void assertNodeAvailable(Server server) {
       assertTrue(waitUntilServerReady.apply(server), String.format("Server %s is not Ready", server));
    }
-   
-    protected void assertBlockStorageAvailable(BlockStorage bs) {
+
+   protected void assertNodeRemoved(Server server) {
+      assertTrue(waitUntilServerRemoved.apply(server), String.format("Server %s is not Removed", server));
+   }
+
+   protected void assertServerIPRemoved(ServerIpRef server) {
+      assertTrue(waitUntilIServerIPRemoved.apply(server), String.format("IP %s is not Removed", server));
+   }
+
+   protected void assertBlockStorageAvailable(BlockStorage bs) {
       assertTrue(waitUntilBlockStorageReady.apply(bs), String.format("BlockStorage %s is not Ready", bs));
    }