/** * Returns the {@link org.jclouds.compute.extensions.ImageExtension} for this provider if it implements it. * * @return an optional of the {@link org.jclouds.compute.extensions.ImageExtension} or {@link com.google.common.base.Optional#absent()} if not * implemented */ @Override public Optional<ImageExtension> getImageExtension() { return computeService.getImageExtension(); }
/** * Returns the {@link org.jclouds.compute.extensions.ImageExtension} for this provider if it implements it. * * @return an optional of the {@link org.jclouds.compute.extensions.ImageExtension} or {@link com.google.common.base.Optional#absent()} if not * implemented */ @Override public Optional<ImageExtension> getImageExtension() { return computeService.getImageExtension(); } }
@Override public Optional<ImageExtension> getImageExtension() { return delegate.getImageExtension(); }
@Override protected Object doExecute() throws Exception { ComputeService service = null; try { service = getComputeService(); } catch (Throwable t) { System.err.println(t.getMessage()); t.printStackTrace(System.err); return null; } if (!service.getImageExtension().isPresent()) { System.out.print("Provider " + service.getContext().unwrap().getProviderMetadata().getId() + " does not currently provide image creation support."); return null; } ImageExtension imageExtension = service.getImageExtension().get(); ImageTemplate imageTemplate = imageExtension.buildImageTemplateFromNode(imageName, id); ListenableFuture<Image> imageFuture = imageExtension.createImage(imageTemplate); Image image = imageFuture.get(); System.out.println("Successfully created image:" + image.getId()); return null; }
@Test(groups = { "integration", "live" }, singleThreaded = true, dependsOnMethods = { "testCreateImage", "testSpawnNodeFromImage" }) public void testDeleteImage() { ComputeService computeService = view.getComputeService(); Optional<ImageExtension> imageExtension = computeService.getImageExtension(); assertTrue(imageExtension.isPresent(), "image extension was not present"); Optional<? extends Image> optImage = getImage(); assertTrue(optImage.isPresent()); Image image = optImage.get(); assertTrue(imageExtension.get().deleteImage(image.getId())); }
@Test(groups = { "integration", "live" }, singleThreaded = true, dependsOnMethods = { "testCreateImage", "testSpawnNodeFromImage", "testImageIsCachedAfterBeingCreated" }) public void testDeleteImage() { ComputeService computeService = view.getComputeService(); Optional<ImageExtension> imageExtension = computeService.getImageExtension(); assertTrue(imageExtension.isPresent(), "image extension was not present"); Optional<? extends Image> optImage = getImage(); assertTrue(optImage.isPresent()); Image image = optImage.get(); assertTrue(imageExtension.get().deleteImage(image.getId())); }
public void testCreateImage() { Builder<HttpRequest, HttpResponse> requestResponseMap = ImmutableMap.<HttpRequest, HttpResponse> builder(); requestResponseMap.put(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess); requestResponseMap.put(serverDetail, serverDetailResponse).build(); requestResponseMap.put(createImage, createImageResponse).build(); requestResponseMap.put(getImage, getImageResponse).build(); ImageExtension apiThatCreatesImage = requestsSendResponses(requestResponseMap.build()).getImageExtension().get(); ImageTemplate newImageTemplate = apiThatCreatesImage.buildImageTemplateFromNode("test", "az-1.region-a.geo-1/71752"); Image image = Futures.getUnchecked(apiThatCreatesImage.createImage(newImageTemplate)); assertEquals(image.getId(), "az-1.region-a.geo-1/52415800-8b69-11e0-9b19-734f5736d2a2"); } }
public void testCreateImage() { Builder<HttpRequest, HttpResponse> requestResponseMap = ImmutableMap.<HttpRequest, HttpResponse> builder(); requestResponseMap.put(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess); requestResponseMap.put(serverDetail, serverDetailResponse); requestResponseMap.put(createImage, createImageResponse); requestResponseMap.put(getImage, getImageResponse); ImageExtension apiThatCreatesImage = requestsSendResponses(requestResponseMap.build()).getImageExtension().get(); ImageTemplate newImageTemplate = apiThatCreatesImage.buildImageTemplateFromNode("test", "az-1.region-a.geo-1/71752"); Image image = Futures.getUnchecked(apiThatCreatesImage.createImage(newImageTemplate)); assertEquals(image.getId(), "az-1.region-a.geo-1/52415800-8b69-11e0-9b19-734f5736d2a2"); } }
@Test(groups = { "integration", "live" }, singleThreaded = true) public void testCreateImage() throws RunNodesException, InterruptedException, ExecutionException { ComputeService computeService = view.getComputeService(); Optional<ImageExtension> imageExtension = computeService.getImageExtension(); assertTrue(imageExtension.isPresent(), "image extension was not present"); Template template = getNodeTemplate(); NodeMetadata node = Iterables.getOnlyElement(computeService.createNodesInGroup("test-create-image", 1, template)); checkReachable(node); logger.info("Creating image from node %s, started with template: %s", node, template); ImageTemplate newImageTemplate = imageExtension.get().buildImageTemplateFromNode("test-create-image", node.getId()); Image image = imageExtension.get().createImage(newImageTemplate).get(); logger.info("Image created: %s", image); assertEquals("test-create-image", image.getName()); imageId = image.getId(); computeService.destroyNode(node.getId()); Optional<? extends Image> optImage = getImage(); assertTrue(optImage.isPresent()); }
@AfterClass(groups = { "integration", "live" }) @Override protected void tearDownContext() { try { view.getComputeService().destroyNodesMatching(inGroup(imageGroup)); Optional<? extends Image> image = getImage(); if (image.isPresent() && image.get().getStatus() != Image.Status.DELETED) { Optional<ImageExtension> imageExtension = view.getComputeService().getImageExtension(); if (imageExtension.isPresent()) { imageExtension.get().deleteImage(image.get().getId()); } } } catch (Exception e) { // Any exception is most likely due to nodes/images not existing, which is the desired result // anyway, so discarding the exception. } super.tearDownContext(); } }
@Test(groups = { "integration", "live" }, singleThreaded = true) public void testCreateImage() throws RunNodesException, InterruptedException, ExecutionException { ComputeService computeService = view.getComputeService(); Optional<ImageExtension> imageExtension = computeService.getImageExtension(); assertTrue(imageExtension.isPresent(), "image extension was not present"); Template template = getNodeTemplate().build(); NodeMetadata node = Iterables.getOnlyElement(computeService.createNodesInGroup(imageGroup, 1, template)); checkReachable(node); prepareNodeBeforeCreatingImage(node); logger.info("Creating image from node %s, started with template: %s", node, template); ImageTemplate newImageTemplate = imageExtension.get().buildImageTemplateFromNode(imageGroup, node.getId()); Image image = imageExtension.get().createImage(newImageTemplate).get(); logger.info("Image created: %s", image); assertEquals(imageGroup, image.getName()); imageId = image.getId(); computeService.destroyNode(node.getId()); Optional<? extends Image> optImage = getImage(); assertTrue(optImage.isPresent()); }
ImageExtension apiThatCreatesImage = requestsSendResponses(requestResponseMap.build()).getImageExtension().get();
public void testCreateImage() { Builder<HttpRequest, HttpResponse> requestResponseMap = ImmutableMap.<HttpRequest, HttpResponse> builder(); requestResponseMap.put(describeRegionsRequest, describeRegionsResponse); requestResponseMap.put(describeAvailabilityZonesRequest, describeAvailabilityZonesResponse); requestResponseMap.put(describeImagesRequest, describeImagesResponse); requestResponseMap.put(describeInstanceRequest, describeInstanceResponse); HttpRequest createImageRequest = formSigner.filter(HttpRequest.builder().method("POST") .endpoint("https://ec2." + region + ".amazonaws.com/") .addHeader("Host", "ec2." + region + ".amazonaws.com") .addFormParam("Action", "CreateImage") .addFormParam("InstanceId", "i-2baa5550") .addFormParam("Name", "test").build()); HttpResponse createImageResponse = HttpResponse.builder() .statusCode(200) .payload(payloadFromStringWithContentType( "<CreateImageResponse><imageId>ami-be3adfd7</imageId></CreateImageResponse>", MediaType.APPLICATION_XML)).build(); requestResponseMap.put(createImageRequest, createImageResponse); HttpRequest describeImageRequest = formSigner.filter(HttpRequest.builder().method("POST") .endpoint("https://ec2." + region + ".amazonaws.com/") .addHeader("Host", "ec2." + region + ".amazonaws.com") .addFormParam("Action", "DescribeImages") .addFormParam("ImageId.1", "ami-be3adfd7").build()); requestResponseMap.put(describeImageRequest, describeImagesResponse); ImageExtension apiThatCreatesImage = requestsSendResponses(requestResponseMap.build()).getImageExtension().get(); ImageTemplate newImageTemplate = apiThatCreatesImage.buildImageTemplateFromNode("test", "us-east-1/i-2baa5550"); Image image = Futures.getUnchecked(apiThatCreatesImage.createImage(newImageTemplate)); assertEquals(image.getId(), "us-east-1/ami-be3adfd7"); }
.build(); ImageExtension apiThatCreatesImage = requestsSendResponses(requestResponseMap).getImageExtension().get();