Use ComputeService timeouts to avoid blocking forever

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

Branch: refs/heads/master
Commit: 9695b875742941082b4640b457acfb32bfed055a
Parents: 7eb9fb0
Author: Ignasi Barrera <[email protected]>
Authored: Tue Jul 9 00:04:03 2013 +0200
Committer: Ignasi Barrera <[email protected]>
Committed: Wed Jul 10 12:29:01 2013 +0200

----------------------------------------------------------------------
 .../strategy/AbiquoComputeServiceAdapter.java        | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/9695b875/abiquo/src/main/java/org/jclouds/abiquo/compute/strategy/AbiquoComputeServiceAdapter.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/main/java/org/jclouds/abiquo/compute/strategy/AbiquoComputeServiceAdapter.java
 
b/abiquo/src/main/java/org/jclouds/abiquo/compute/strategy/AbiquoComputeServiceAdapter.java
index bec572e..b82bb9a 100644
--- 
a/abiquo/src/main/java/org/jclouds/abiquo/compute/strategy/AbiquoComputeServiceAdapter.java
+++ 
b/abiquo/src/main/java/org/jclouds/abiquo/compute/strategy/AbiquoComputeServiceAdapter.java
@@ -25,6 +25,7 @@ import static com.google.common.collect.Iterables.transform;
 
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 import javax.annotation.Resource;
 import javax.inject.Named;
@@ -53,6 +54,7 @@ import org.jclouds.compute.domain.Hardware;
 import org.jclouds.compute.domain.Processor;
 import org.jclouds.compute.domain.Template;
 import org.jclouds.compute.reference.ComputeServiceConstants;
+import org.jclouds.compute.reference.ComputeServiceConstants.Timeouts;
 import org.jclouds.logging.Logger;
 import org.jclouds.rest.ApiContext;
 
@@ -89,17 +91,20 @@ public class AbiquoComputeServiceAdapter
 
    private final Supplier<Map<Integer, Datacenter>> regionMap;
 
+   private final Timeouts timeouts;
+
    @Inject
    public AbiquoComputeServiceAdapter(final ApiContext<AbiquoApi> context, 
final AdministrationService adminService,
          final CloudService cloudService, final MonitoringService 
monitoringService,
          final FindCompatibleVirtualDatacenters compatibleVirtualDatacenters,
-         @Memoized final Supplier<Map<Integer, Datacenter>> regionMap) {
+         @Memoized final Supplier<Map<Integer, Datacenter>> regionMap, 
Timeouts timeouts) {
       this.context = checkNotNull(context, "context");
       this.adminService = checkNotNull(adminService, "adminService");
       this.cloudService = checkNotNull(cloudService, "cloudService");
       this.monitoringService = checkNotNull(monitoringService, 
"monitoringService");
       this.compatibleVirtualDatacenters = 
checkNotNull(compatibleVirtualDatacenters, "compatibleVirtualDatacenters");
       this.regionMap = checkNotNull(regionMap, "regionMap");
+      this.timeouts = checkNotNull(timeouts, "timeouts");
    }
 
    @Override
@@ -218,7 +223,7 @@ public class AbiquoComputeServiceAdapter
       VirtualMachineMonitor monitor = 
monitoringService.getVirtualMachineMonitor();
       VirtualMachine vm = getNode(id);
       vm.undeploy(true);
-      monitor.awaitCompletionUndeploy(vm);
+      monitor.awaitCompletionUndeploy(timeouts.nodeTerminated, 
TimeUnit.MILLISECONDS, vm);
       vm.delete();
    }
 
@@ -227,7 +232,7 @@ public class AbiquoComputeServiceAdapter
       VirtualMachineMonitor monitor = 
monitoringService.getVirtualMachineMonitor();
       VirtualMachine vm = getNode(id);
       vm.reboot();
-      monitor.awaitState(VirtualMachineState.ON, vm);
+      monitor.awaitState(timeouts.nodeRunning, TimeUnit.MILLISECONDS, 
VirtualMachineState.ON, vm);
    }
 
    @Override
@@ -235,7 +240,7 @@ public class AbiquoComputeServiceAdapter
       VirtualMachineMonitor monitor = 
monitoringService.getVirtualMachineMonitor();
       VirtualMachine vm = getNode(id);
       vm.changeState(VirtualMachineState.ON);
-      monitor.awaitState(VirtualMachineState.ON, vm);
+      monitor.awaitState(timeouts.nodeRunning, TimeUnit.MILLISECONDS, 
VirtualMachineState.ON, vm);
    }
 
    @Override
@@ -243,7 +248,7 @@ public class AbiquoComputeServiceAdapter
       VirtualMachineMonitor monitor = 
monitoringService.getVirtualMachineMonitor();
       VirtualMachine vm = getNode(id);
       vm.changeState(VirtualMachineState.PAUSED);
-      monitor.awaitState(VirtualMachineState.PAUSED, vm);
+      monitor.awaitState(timeouts.nodeSuspended, TimeUnit.MILLISECONDS, 
VirtualMachineState.PAUSED, vm);
    }
 
    @Override

Reply via email to