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 2016/01/21 01:03:37 UTC

[13/19] jclouds git commit: Prefer polling the status of the node

Prefer polling the status of the node


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

Branch: refs/heads/master
Commit: 3fbd399f6b3c35f1cb2e0b0af797c9db5f72fe39
Parents: 83ff38e
Author: Ignasi Barrera <na...@apache.org>
Authored: Wed Oct 28 18:14:42 2015 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Thu Oct 29 15:55:23 2015 +0100

----------------------------------------------------------------------
 .../DigitalOcean2ComputeServiceAdapter.java     |  3 +--
 .../DigitalOcean2TemplateBuilderLiveTest.java   |  2 +-
 .../features/DropletApiLiveTest.java            | 27 +++++++-------------
 .../digitalocean2/features/KeyApiLiveTest.java  |  2 --
 .../internal/BaseDigitalOcean2ApiLiveTest.java  | 27 +++++++++++++++-----
 5 files changed, 31 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/3fbd399f/providers/digitalocean2/src/main/java/org/jclouds/digitalocean2/compute/DigitalOcean2ComputeServiceAdapter.java
----------------------------------------------------------------------
diff --git a/providers/digitalocean2/src/main/java/org/jclouds/digitalocean2/compute/DigitalOcean2ComputeServiceAdapter.java b/providers/digitalocean2/src/main/java/org/jclouds/digitalocean2/compute/DigitalOcean2ComputeServiceAdapter.java
index 2d76176..f520f45 100644
--- a/providers/digitalocean2/src/main/java/org/jclouds/digitalocean2/compute/DigitalOcean2ComputeServiceAdapter.java
+++ b/providers/digitalocean2/src/main/java/org/jclouds/digitalocean2/compute/DigitalOcean2ComputeServiceAdapter.java
@@ -42,7 +42,6 @@ import org.jclouds.compute.reference.ComputeServiceConstants;
 import org.jclouds.digitalocean2.DigitalOcean2Api;
 import org.jclouds.digitalocean2.compute.internal.ImageInRegion;
 import org.jclouds.digitalocean2.compute.options.DigitalOcean2TemplateOptions;
-import org.jclouds.digitalocean2.domain.Action;
 import org.jclouds.digitalocean2.domain.Droplet;
 import org.jclouds.digitalocean2.domain.DropletCreate;
 import org.jclouds.digitalocean2.domain.Image;
@@ -237,7 +236,7 @@ public class DigitalOcean2ComputeServiceAdapter implements ComputeServiceAdapter
       // We have to wait here, as the api does not properly populate the state
       // but fails if there is a pending event
       int dropletId = Integer.parseInt(id);
-      Action action = api.dropletApi().powerOff(dropletId);
+      api.dropletApi().powerOff(dropletId);
       checkState(nodeStoppedPredicate.apply(dropletId), "node did not stop in the configured timeout");
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/3fbd399f/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/compute/DigitalOcean2TemplateBuilderLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/compute/DigitalOcean2TemplateBuilderLiveTest.java b/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/compute/DigitalOcean2TemplateBuilderLiveTest.java
index 8480cc1..ee7b962 100644
--- a/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/compute/DigitalOcean2TemplateBuilderLiveTest.java
+++ b/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/compute/DigitalOcean2TemplateBuilderLiveTest.java
@@ -40,7 +40,7 @@ public class DigitalOcean2TemplateBuilderLiveTest extends BaseTemplateBuilderLiv
    @Override
    public void testDefaultTemplateBuilder() throws IOException {
       Template defaultTemplate = view.getComputeService().templateBuilder().build();
-      assert defaultTemplate.getImage().getOperatingSystem().getVersion().equals("15.04") : defaultTemplate
+      assert defaultTemplate.getImage().getOperatingSystem().getVersion().equals("15.10") : defaultTemplate
             .getImage().getOperatingSystem().getVersion();
       assertEquals(defaultTemplate.getImage().getOperatingSystem().is64Bit(), true);
       assertEquals(defaultTemplate.getImage().getOperatingSystem().getFamily(), OsFamily.UBUNTU);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/3fbd399f/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/DropletApiLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/DropletApiLiveTest.java b/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/DropletApiLiveTest.java
index f451d2e..c10fa54 100644
--- a/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/DropletApiLiveTest.java
+++ b/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/DropletApiLiveTest.java
@@ -16,10 +16,7 @@
  */
 package org.jclouds.digitalocean2.features;
 
-import static com.google.common.collect.Iterables.getOnlyElement;
 import static java.util.logging.Logger.getAnonymousLogger;
-import static org.jclouds.digitalocean2.domain.Droplet.Status.ACTIVE;
-import static org.jclouds.digitalocean2.domain.Droplet.Status.OFF;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
@@ -77,8 +74,8 @@ public class DropletApiLiveTest extends BaseDigitalOcean2ApiLiveTest {
    public void testCreate() {
       DropletCreate dropletCreate = api().create(prefix + "-droplet-livetest", region.slug(), size.slug(), image.slug(),
             CreateDropletOptions.builder().backupsEnabled(true).addSshKeyId(key.id()).build());
-      assertActionCompleted(getOnlyElement(dropletCreate.links().actions()).id());
       dropletId = dropletCreate.droplet().id();
+      assertNodeRunning(dropletId);
       Droplet droplet = api().get(dropletId);
       assertNotNull(droplet, "Droplet should not be null");
    }
@@ -101,10 +98,8 @@ public class DropletApiLiveTest extends BaseDigitalOcean2ApiLiveTest {
    
    @Test(dependsOnMethods = "testListKernels")
    public void testPowerOff() {
-      Action action = api().powerOff(dropletId);
-      assertActionCompleted(action.id());
-      Droplet droplet = api().get(dropletId);
-      assertEquals(droplet.status(), OFF, "Droplet should be off");
+      api().powerOff(dropletId);
+      assertNodeStopped(dropletId);
    }
 
    @Test(groups = "live", dependsOnMethods = "testPowerOff")
@@ -146,29 +141,25 @@ public class DropletApiLiveTest extends BaseDigitalOcean2ApiLiveTest {
    @Test(groups = "live", dependsOnMethods = "testSnapshots")
    public void testPowerOn() {
       // Apparently droplets are automatically powered on after the snapshot process
-      Action action = api().powerOff(dropletId);
-      assertActionCompleted(action.id());
+      api().powerOff(dropletId);
+      assertNodeStopped(dropletId);
       
-      action = api().powerOn(dropletId);
-      assertActionCompleted(action.id());
-      Droplet droplet = api().get(dropletId);
-      assertEquals(droplet.status(), ACTIVE, "Droplet should be Active");
+      api().powerOn(dropletId);
+      assertNodeRunning(dropletId);
    }
    
    @Test(groups = "live", dependsOnMethods = "testPowerOn")
    public void testReboot() {
       Action action = api().reboot(dropletId);
       assertActionCompleted(action.id());
-      Droplet droplet = api().get(dropletId);
-      assertEquals(droplet.status(), ACTIVE, "Droplet should be off");
+      assertNodeRunning(dropletId);
    }
    
    @Test(groups = "live", dependsOnMethods = "testReboot")
    public void testPowerCycle() {
       Action action = api().powerCycle(dropletId);
       assertActionCompleted(action.id());
-      Droplet droplet = api().get(dropletId);
-      assertEquals(droplet.status(), ACTIVE, "Droplet should be off");
+      assertNodeRunning(dropletId);
    }
    
    @Test(groups = "live", dependsOnMethods = "testPowerCycle")

http://git-wip-us.apache.org/repos/asf/jclouds/blob/3fbd399f/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/KeyApiLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/KeyApiLiveTest.java b/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/KeyApiLiveTest.java
index 2911d79..e0ec1c9 100644
--- a/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/KeyApiLiveTest.java
+++ b/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/KeyApiLiveTest.java
@@ -69,8 +69,6 @@ public class KeyApiLiveTest extends BaseDigitalOcean2ApiLiveTest {
    public void testUpdateKey() {
       api().update(dsa.id(), "jclouds-test-dsa-updated");
       assertEquals(api().get(dsa.id()).name(), "jclouds-test-dsa-updated");
-      api().update(dsa.fingerprint(), "jclouds-test-dsa-updated2");
-      assertEquals(api().get(dsa.id()).name(), "jclouds-test-dsa-updated2");
    }
 
    @AfterClass(alwaysRun = true)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/3fbd399f/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/internal/BaseDigitalOcean2ApiLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/internal/BaseDigitalOcean2ApiLiveTest.java b/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/internal/BaseDigitalOcean2ApiLiveTest.java
index b210c93..ee5bb55 100644
--- a/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/internal/BaseDigitalOcean2ApiLiveTest.java
+++ b/providers/digitalocean2/src/test/java/org/jclouds/digitalocean2/internal/BaseDigitalOcean2ApiLiveTest.java
@@ -17,16 +17,17 @@
 package org.jclouds.digitalocean2.internal;
 
 import static com.google.common.base.Preconditions.checkState;
+import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_RUNNING;
+import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_SUSPENDED;
 import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_TERMINATED;
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
 import static org.testng.util.Strings.isNullOrEmpty;
 
 import java.util.Properties;
-import java.util.concurrent.atomic.AtomicReference;
 
 import org.jclouds.apis.BaseApiLiveTest;
 import org.jclouds.compute.config.ComputeServiceProperties;
-import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.digitalocean2.DigitalOcean2Api;
 import org.jclouds.digitalocean2.config.DigitalOcean2RateLimitModule;
 import org.jclouds.digitalocean2.domain.Action;
@@ -46,10 +47,10 @@ import com.google.inject.name.Names;
 
 public class BaseDigitalOcean2ApiLiveTest extends BaseApiLiveTest<DigitalOcean2Api> {
 
-   protected Predicate<Integer> actionCompleted;
-   protected Predicate<AtomicReference<NodeMetadata>> nodeRunning;
-   protected Predicate<Integer> nodeTerminated;
-   protected Predicate<Integer> dropletOff;
+   private Predicate<Integer> actionCompleted;
+   private Predicate<Integer> nodeTerminated;
+   private Predicate<Integer> nodeStopped;
+   private Predicate<Integer> nodeRunning;
 
    public BaseDigitalOcean2ApiLiveTest() {
       provider = "digitalocean2";
@@ -67,6 +68,10 @@ public class BaseDigitalOcean2ApiLiveTest extends BaseApiLiveTest<DigitalOcean2A
       actionCompleted = injector.getInstance(Key.get(new TypeLiteral<Predicate<Integer>>(){}));
       nodeTerminated = injector.getInstance(Key.get(new TypeLiteral<Predicate<Integer>>(){},
             Names.named(TIMEOUT_NODE_TERMINATED)));
+      nodeStopped = injector.getInstance(Key.get(new TypeLiteral<Predicate<Integer>>(){},
+            Names.named(TIMEOUT_NODE_SUSPENDED)));
+      nodeRunning = injector.getInstance(Key.get(new TypeLiteral<Predicate<Integer>>(){},
+            Names.named(TIMEOUT_NODE_RUNNING)));
       return injector.getInstance(DigitalOcean2Api.class);
    }
 
@@ -81,8 +86,16 @@ public class BaseDigitalOcean2ApiLiveTest extends BaseApiLiveTest<DigitalOcean2A
       assertEquals(action.status(), Action.Status.COMPLETED);
    }
 
+   protected void assertNodeStopped(int dropletId) {
+      assertTrue(nodeStopped.apply(dropletId), String.format("Droplet %s did not stop in the configured timeout", dropletId));
+   }
+
+   protected void assertNodeRunning(int dropletId) {
+      assertTrue(nodeRunning.apply(dropletId), String.format("Droplet %s did not start in the configured timeout", dropletId));
+   }
+
    protected void assertNodeTerminated(int dropletId) {
-      assertEquals(nodeTerminated.apply(dropletId), true, String.format("Timeout waiting for dropletId: %s", dropletId));
+      assertTrue(nodeTerminated.apply(dropletId), String.format("Droplet %s was not terminated in the configured timeout", dropletId));
    }
    
    protected Region firstAvailableRegion() {