List of usage examples for com.google.common.util.concurrent UncheckedTimeoutException UncheckedTimeoutException
public UncheckedTimeoutException(@Nullable Throwable cause)
From source file:org.jclouds.rest.internal.BlockOnFuture.java
private Object block(ListenableFuture<?> future, Optional<Long> timeoutNanos) { try {/*from w w w . j av a 2 s . co m*/ if (timeoutNanos.isPresent()) { logger.debug(">> blocking on %s for %s", future, timeoutNanos); return getUninterruptibly(future, timeoutNanos.get(), NANOSECONDS); } else { logger.debug(">> blocking on %s", future); return getUninterruptibly(future); } } catch (ExecutionException e) { throw propagateCause(e); } catch (TimeoutException e) { future.cancel(true); throw new UncheckedTimeoutException(e); } }
From source file:org.obiba.mica.search.JoinQueryExecutor.java
private JoinQueryResultDto query(QueryType type, JoinQuery joinQuery, CountStatsData.Builder countBuilder, QueryScope scope, QueryMode mode) { boolean havePermit = false; try {//w ww . j a v a 2s .com havePermit = acquireSemaphorePermit(); if (havePermit) return unsafeQuery(type, joinQuery, countBuilder, scope, mode); else throw new UncheckedTimeoutException("Too many queries in a short time. Please retry later."); } finally { if (havePermit) releaseSemaphorePermit(); } }
From source file:org.jclouds.docker.compute.extensions.DockerImageExtension.java
@Override public ListenableFuture<Image> createImage(ImageTemplate template) { checkArgument(template instanceof CloneImageTemplate, " docker only currently supports creating images through cloning."); CloneImageTemplate cloneTemplate = (CloneImageTemplate) template; Container container = api.getRemoteApi().inspectContainer(cloneTemplate.getSourceNodeId()); CommitOptions options = CommitOptions.Builder.containerId(container.getId()).tag(cloneTemplate.getName()); org.jclouds.docker.domain.Image dockerImage = api.getRemoteApi().commit(options); dockerImage = org.jclouds.docker.domain.Image.builder().fromImage(dockerImage) .repoTags(ImmutableList.of(cloneTemplate.getName() + ":latest")).build(); logger.info(">> Registered new image %s, waiting for it to become available.", dockerImage.getId()); final AtomicReference<Image> image = Atomics.newReference(new ImageToImage().apply(dockerImage)); return userExecutor.submit(new Callable<Image>() { @Override// ww w . j a v a2 s .c o m public Image call() throws Exception { if (imageAvailablePredicate.apply(image)) return image.get(); throw new UncheckedTimeoutException("Image was not created within the time limit: " + image.get()); } }); }
From source file:org.jclouds.virtualbox.functions.admin.StartVBoxIfNotAlreadyRunning.java
@PostConstruct public void start() { URI provider = providerSupplier.get(); NodeMetadata hostNodeMetadata = hardcodedHostToHostNodeMetadata.apply(host.get()); if (!socketTester.apply(HostAndPort.fromParts(provider.getHost(), provider.getPort()))) { logger.debug("disabling password access"); runScriptOnNodeFactory.create(hostNodeMetadata, exec("VBoxManage setproperty websrvauthlibrary null"), runAsRoot(false).wrapInInitScript(false)).init().call(); logger.debug(">> starting vboxwebsrv"); String vboxwebsrv = "vboxwebsrv -t0 -v -b -H " + providerSupplier.get().getHost(); runScriptOnNodeFactory//from w w w.j a v a2 s .co m .create(hostNodeMetadata, exec(vboxwebsrv), runAsRoot(false).wrapInInitScript(false).blockOnComplete(false).nameTask("vboxwebsrv")) .init().call(); if (!socketTester.apply(HostAndPort.fromParts(provider.getHost(), provider.getPort()))) { throw new UncheckedTimeoutException( String.format("could not connect to virtualbox at %s", provider)); } } manager = managerForNode.apply(host); manager.connect(provider.toASCIIString(), "", ""); if (logger.isDebugEnabled()) if (manager.getSessionObject().getState() != SessionState.Unlocked) logger.warn("manager is not in unlocked state " + manager.getSessionObject().getState()); }
From source file:org.jclouds.cloudservers.compute.extensions.CloudServersImageExtension.java
@Override public ListenableFuture<Image> createImage(ImageTemplate template) { checkState(template instanceof CloneImageTemplate, " openstack-nova only supports creating images through cloning."); CloneImageTemplate cloneTemplate = (CloneImageTemplate) template; org.jclouds.cloudservers.domain.Image csImage = client.createImageFromServer(cloneTemplate.getName(), Integer.parseInt(cloneTemplate.getSourceNodeId())); final AtomicReference<Image> image = Atomics.newReference(new ImageBuilder().location(location.get()) .ids(csImage.getId() + "").description(cloneTemplate.getName()) .operatingSystem(OperatingSystem.builder().description(cloneTemplate.getName()).build()) .status(Image.Status.PENDING).build()); return userExecutor.submit(new Callable<Image>() { @Override/* ww w.j a va 2 s .c o m*/ public Image call() throws Exception { if (imageAvailablePredicate.apply(image)) return image.get(); // TODO: get rid of the expectation that the image will be available, as it is very brittle throw new UncheckedTimeoutException("Image was not created within the time limit: " + image.get()); } }); }
From source file:org.jclouds.digitalocean2.compute.extensions.DigitalOcean2ImageExtension.java
@Override public ListenableFuture<Image> createImage(ImageTemplate template) { checkState(template instanceof CloneImageTemplate, "DigitalOcean only supports creating images through cloning."); final CloneImageTemplate cloneTemplate = (CloneImageTemplate) template; int dropletId = Integer.parseInt(cloneTemplate.getSourceNodeId()); // Droplet needs to be active final Droplet droplet = api.dropletApi().get(dropletId); if (droplet.status() != Status.ACTIVE) { api.dropletApi().powerOn(dropletId); checkState(nodeRunningPredicate.apply(dropletId), "node was not powered on in the configured timeout"); }/*from ww w.j ava 2 s .c om*/ final Action snapshotEvent = api.dropletApi().snapshot(Integer.parseInt(cloneTemplate.getSourceNodeId()), cloneTemplate.getName()); logger.info(">> registered new Image, waiting for it to become available"); return userExecutor.submit(new Callable<Image>() { @Override public Image call() throws Exception { if (imageAvailablePredicate.apply(snapshotEvent.id())) { org.jclouds.digitalocean2.domain.Image snapshot = api.imageApi().list().concat() .firstMatch(new Predicate<org.jclouds.digitalocean2.domain.Image>() { @Override public boolean apply(org.jclouds.digitalocean2.domain.Image input) { return input.name().equals(cloneTemplate.getName()); } }).get(); return imageTransformer.apply(ImageInRegion.create(snapshot, droplet.region().slug())); } throw new UncheckedTimeoutException( "Image was not created within the time limit: " + cloneTemplate.getName()); } }); }
From source file:org.jclouds.ec2.compute.extensions.EC2ImageExtension.java
@Override public ListenableFuture<Image> createImage(ImageTemplate template) { checkState(template instanceof CloneImageTemplate, " ec2 only supports creating images through cloning."); CloneImageTemplate cloneTemplate = (CloneImageTemplate) template; String[] parts = AWSUtils.parseHandle(cloneTemplate.getSourceNodeId()); String region = parts[0];/* ww w . j a va2 s.c om*/ String instanceId = parts[1]; String imageId = ec2Api.getAMIApi().get().createImageInRegion(region, cloneTemplate.getName(), instanceId, CreateImageOptions.NONE); final AtomicReference<Image> image = Atomics .newReference(new ImageBuilder().location(find(locations.get(), idEquals(region))) .id(region + "/" + imageId).providerId(imageId).description(cloneTemplate.getName()) .operatingSystem(OperatingSystem.builder().description(cloneTemplate.getName()).build()) .status(Image.Status.PENDING).build()); return userExecutor.submit(new Callable<Image>() { @Override public Image call() throws Exception { if (imageAvailablePredicate.apply(image)) return image.get(); // TODO: get rid of the expectation that the image will be available, as it is very brittle throw new UncheckedTimeoutException("Image was not created within the time limit: " + image.get()); } }); }
From source file:org.jclouds.openstack.nova.v2_0.compute.extensions.NovaImageExtension.java
@Override public ListenableFuture<Image> createImage(ImageTemplate template) { checkState(template instanceof CloneImageTemplate, " openstack-nova only supports creating images through cloning."); CloneImageTemplate cloneTemplate = (CloneImageTemplate) template; ZoneAndId sourceImageZoneAndId = ZoneAndId.fromSlashEncoded(cloneTemplate.getSourceNodeId()); String newImageId = novaApi.getServerApiForZone(sourceImageZoneAndId.getZone()) .createImageFromServer(cloneTemplate.getName(), sourceImageZoneAndId.getId()); final ZoneAndId targetImageZoneAndId = ZoneAndId.fromZoneAndId(sourceImageZoneAndId.getZone(), newImageId); logger.info(">> Registered new Image %s, waiting for it to become available.", newImageId); final AtomicReference<Image> image = Atomics.newReference( new ImageBuilder().location(find(locations.get(), idEquals(targetImageZoneAndId.getZone()))) .id(targetImageZoneAndId.slashEncode()).providerId(targetImageZoneAndId.getId()) .description(cloneTemplate.getName()) .operatingSystem(OperatingSystem.builder().description(cloneTemplate.getName()).build()) .status(Image.Status.PENDING).build()); return userExecutor.submit(new Callable<Image>() { @Override//from w w w .j a v a2s . c om public Image call() throws Exception { if (imageAvailablePredicate.apply(image)) return image.get(); // TODO: get rid of the expectation that the image will be available, as it is very brittle throw new UncheckedTimeoutException("Image was not created within the time limit: " + image.get()); } }); }
From source file:org.apache.jclouds.profitbricks.rest.compute.extensions.ProfitBricksImageExtension.java
@Override public ListenableFuture<Image> createImage(ImageTemplate template) { final CloneImageTemplate cloneTemplate = (CloneImageTemplate) template; final DataCenterAndId datacenterAndId = DataCenterAndId.fromSlashEncoded(cloneTemplate.getSourceNodeId()); final Server server = client.serverApi().getServer(datacenterAndId.getDataCenter(), datacenterAndId.getId());/*from ww w . j a va2s . c om*/ List<Volume> volumes = client.volumeApi().getList(server.dataCenterId()); final Volume volume = Iterables.getOnlyElement(volumes); return userExecutor.submit(new Callable<Image>() { @Override public Image call() throws Exception { Snapshot snapshot = client.volumeApi() .createSnapshot(Volume.Request.createSnapshotBuilder() .dataCenterId(datacenterAndId.getDataCenter()).volumeId(volume.id()) .name(cloneTemplate.getName()).description(cloneTemplate.getName()).build()); trackables.waitUntilRequestCompleted(snapshot); logger.info(">> Registered new snapshot %s, waiting for it to become available.", snapshot.id()); final Image image = new ImageBuilder() .location(find(locations.get(), idEquals(snapshot.properties().location().getId()))) .id(snapshot.id()).providerId(snapshot.id()).name(cloneTemplate.getName()) .description(cloneTemplate.getName()) .operatingSystem(OperatingSystem.builder().description(cloneTemplate.getName()).build()) .status(Image.Status.PENDING).build(); if (snapshotAvailablePredicate.apply(image.getId())) { return image; } throw new UncheckedTimeoutException("Image was not created within the time limit: " + image); } }); }
From source file:org.jclouds.cloudstack.compute.extensions.CloudStackImageExtension.java
@Override public ListenableFuture<Image> createImage(ImageTemplate template) { checkState(template instanceof CloneImageTemplate, " cloudstack only currently supports creating images through cloning."); CloneImageTemplate cloneTemplate = (CloneImageTemplate) template; VirtualMachine vm = client.getVirtualMachineApi().getVirtualMachine(cloneTemplate.getSourceNodeId()); String stopJob = client.getVirtualMachineApi().stopVirtualMachine(vm.getId()); jobComplete.apply(stopJob);/*from w w w. jav a 2s .com*/ Set<Volume> volumes = client.getVolumeApi() .listVolumes(ListVolumesOptions.Builder.virtualMachineId(vm.getId())); Volume volume = Iterables.getOnlyElement(volumes); CreateTemplateOptions options = CreateTemplateOptions.Builder.volumeId(volume.getId()); AsyncCreateResponse templateJob = client.getTemplateApi() .createTemplate(TemplateMetadata.builder().name(cloneTemplate.getName()).osTypeId(vm.getGuestOSId()) .displayText(cloneTemplate.getName()).build(), options); Template newTemplate = blockUntilJobCompletesAndReturnResult.<Template>apply(templateJob); logger.info(">> Registered new template %s, waiting for it to become available.", newTemplate.getId()); final AtomicReference<Image> image = Atomics.newReference( new ImageBuilder().location(find(locations.get(), idEquals(vm.getZoneId()))).id(newTemplate.getId()) .providerId(newTemplate.getId()).description(cloneTemplate.getName()) .operatingSystem(OperatingSystem.builder().description(cloneTemplate.getName()).build()) .status(Image.Status.PENDING).build()); return userExecutor.submit(new Callable<Image>() { @Override public Image call() throws Exception { if (imageAvailablePredicate.apply(image)) return image.get(); // TODO: get rid of the expectation that the image will be available, as it is very brittle throw new UncheckedTimeoutException("Image was not created within the time limit: " + image.get()); } }); }