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/8439e575
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/tree/8439e575
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/diff/8439e575

Branch: refs/heads/1.6.x
Commit: 8439e57514146dec028f8fb7143f9b3457b7d235
Parents: 6a5c6fa
Author: Ignasi Barrera <[email protected]>
Authored: Tue Jul 9 00:04:03 2013 +0200
Committer: Ignasi Barrera <[email protected]>
Committed: Wed Jul 10 22:11:46 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/8439e575/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 198beb0..b3d84fb 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
@@ -24,6 +24,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
@@ -207,7 +212,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();
    }
 
@@ -216,7 +221,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
@@ -224,7 +229,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
@@ -232,7 +237,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