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
