List of usage examples for com.google.common.util.concurrent Atomics newReference
public static <V> AtomicReference<V> newReference(@Nullable V initialValue)
From source file:org.jclouds.openstack.nova.v2_0.compute.options.NodeAndNovaTemplateOptions.java
public static AtomicReference<NodeAndNovaTemplateOptions> newAtomicReference(AtomicReference<NodeMetadata> node, AtomicReference<NovaTemplateOptions> options) { return Atomics.newReference(NodeAndNovaTemplateOptions.newReference(node, options)); }
From source file:org.jclouds.rackspace.clouddns.v1.predicates.JobPredicates.java
/** * Tests to see if a Job has completed./*from w w w . j a va 2 s . co m*/ * * <pre> * {@code * CreateDomain createDomain1 = CreateDomain.builder() * .name("jclouds-example.org") * .email("jclouds@jclouds-example.org") * .ttl(600001) * .comment("Hello Domain 1") * .build(); * * Iterable<CreateDomain> createDomains = ImmutableList.of(createDomain1); * Set<Domain> domains = awaitComplete(api, api.getDomainApi().create(createDomains)); * } * </pre> */ public static <T> T awaitComplete(CloudDNSApi api, Job<T> job) throws TimeoutException { AtomicReference<Job<T>> jobRef = Atomics.newReference(job); if (!retry(jobCompleted(api), 600, 2, 2, SECONDS).apply(jobRef)) { throw new TimeoutException("Timeout on: " + jobRef.get()); } return jobRef.get().getResource().orNull(); }
From source file:net.derquinse.common.util.concurrent.DefaultRefCounted.java
DefaultRefCounted(T value, Runnable hook) { this.value = checkNotNull(value, "The referenced value is mandatory"); this.state = Atomics.newReference(new State()); this.task = new FutureTask<Long>(new Hook(hook)); }
From source file:org.jclouds.googlecomputeengine.compute.functions.CreateNetworkIfNeeded.java
@Override public Network apply(NetworkAndAddressRange input) { checkNotNull(input, "input"); Network nw = api.networks().get(input.name()); if (nw != null) { return nw; }/*from ww w. j a v a 2 s . c om*/ if (input.gateway() != null) { NetworkCreationOptions options = new NetworkCreationOptions.Builder(input.name(), input.rangeIPv4()) .gatewayIPv4(input.gateway()).build(); AtomicReference<Operation> operation = Atomics.newReference(api.networks().createInIPv4Range(options)); operationDone.apply(operation); checkState(operation.get().httpErrorStatusCode() == null, "Could not insert network, operation failed" + operation); } else { AtomicReference<Operation> operation = Atomics .newReference(api.networks().createInIPv4Range(input.name(), input.rangeIPv4())); operationDone.apply(operation); checkState(operation.get().httpErrorStatusCode() == null, "Could not insert network, operation failed" + operation); } return checkNotNull(api.networks().get(input.name()), "no network with name %s was found", input.name()); }
From source file:org.jclouds.openstack.nova.v2_0.compute.loaders.FindSecurityGroupOrCreate.java
@Override public SecurityGroupInZone load(ZoneAndName in) { AtomicReference<ZoneAndName> securityGroupInZoneRef = Atomics .newReference(checkNotNull(in, "zoneSecurityGroupNameAndPorts")); if (returnSecurityGroupExistsInZone.apply(securityGroupInZoneRef)) { return returnExistingSecurityGroup(securityGroupInZoneRef); } else {//from ww w . j av a 2 s . co m return createNewSecurityGroup(in); } }
From source file:org.jclouds.googlecomputeengine.functions.CreateNetworkIfNeeded.java
@Override public Network apply(NetworkAndAddressRange input) { checkNotNull(input, "input"); Network nw = api.getNetworkApiForProject(userProject.get()).get(input.getName()); if (nw != null) { return nw; }/* w ww .j a va 2 s. c om*/ if (input.getGateway().isPresent()) { AtomicReference<Operation> operation = Atomics.newReference( api.getNetworkApiForProject(userProject.get()).createInIPv4RangeWithGateway(input.getName(), input.getIpV4Range(), input.getGateway().get())); retry(operationDonePredicate, operationCompleteCheckTimeout, operationCompleteCheckInterval, MILLISECONDS).apply(operation); checkState(!operation.get().getHttpError().isPresent(), "Could not create network, operation failed" + operation); } else { AtomicReference<Operation> operation = Atomics .newReference(api.getNetworkApiForProject(userProject.get()).createInIPv4Range(input.getName(), input.getIpV4Range())); retry(operationDonePredicate, operationCompleteCheckTimeout, operationCompleteCheckInterval, MILLISECONDS).apply(operation); checkState(!operation.get().getHttpError().isPresent(), "Could not create network, operation failed" + operation); } return checkNotNull(api.getNetworkApiForProject(userProject.get()).get(input.getName()), "no network with name %s was found", input.getName()); }
From source file:org.jclouds.openstack.nova.v2_0.compute.functions.SecurityGroupRuleToIpPermission.java
protected Predicate<String> isSecurityGroupInZone(final String groupName) { return new Predicate<String>() { @Override/*from w w w. j a va2 s .c o m*/ public boolean apply(String zone) { AtomicReference<ZoneAndName> securityGroupInZoneRef = Atomics .newReference(ZoneAndName.fromZoneAndName(zone, groupName)); return returnSecurityGroupExistsInZone.apply(securityGroupInZoneRef); } }; }
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//from w w w .java 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.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//from w w w . j a v a 2 s . co 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.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// ww w. j a v a 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()); } }); }