@Override public boolean apply(Image input) { // Only attempt match on id as we should try to pull again anyway if using name return input.id().equals(imageIdOrName); } }, null);
@Override public boolean apply(Image input) { // Only attempt match on id as we should try to pull again anyway if using name return input.id().equals(imageIdOrName); } }, null);
@Override public boolean apply(Image input) { // Only attempt match on id as we should try to pull again anyway if using name return input.id().equals(imageIdOrName); } }, null);
@Override public boolean apply(Image input) { // Only attempt match on id as we should try to pull again anyway if using name return input.id().equals(imageIdOrName); } }, null);
@Test(dependsOnMethods = "testInspectImage") public void testTagImage() { api.getImageApi().tagImage(image.id(), "jclouds", "testTag", true); Image taggedImage = api.getImageApi().inspectImage("jclouds:testTag"); assertEquals(taggedImage.id(), image.id(), "Newly added image tag should point to the same image ID."); }
public void testImageToImage() { org.jclouds.docker.domain.Image mockImage = mockImage(); Image image = function.apply(mockImage); verify(mockImage); assertEquals(mockImage.id(), image.getId().toString()); }
private org.jclouds.docker.domain.Image mockImage() { org.jclouds.docker.domain.Image mockImage = EasyMock.createMock(org.jclouds.docker.domain.Image.class); expect(mockImage.id()).andReturn(image.id()).anyTimes(); expect(mockImage.repoTags()).andReturn(image.repoTags()).anyTimes(); expect(mockImage.architecture()).andReturn(image.architecture()).anyTimes(); replay(mockImage); return mockImage; } }
@Override public Image apply(org.jclouds.docker.domain.Image from) { checkNotNull(from, "image"); String description = checkNotNull(Iterables.getFirst(from.repoTags(), "image must have at least one repo tag")); OsFamily osFamily = osFamily().apply(description); String osVersion = parseVersion(description); OperatingSystem os = OperatingSystem.builder() .description(description) .family(osFamily) .version(osVersion) .is64Bit(is64bit(from)) .build(); return new ImageBuilder() .ids(from.id()) .name(get(Splitter.on(":").split(description), 0)) .description(description) .operatingSystem(os) .status(Image.Status.AVAILABLE) .build(); }
public void testCreateContainer() throws IOException, InterruptedException { Config containerConfig = Config.builder().image(image.id()) .cmd(ImmutableList.of("/bin/sh", "-c", "touch hello; while true; do echo hello world; sleep 1; done")) .build(); container = api().createContainer("testCreateContainer", containerConfig); assertNotNull(container); assertNotNull(container.id()); }
/** * Asserts that the new image exists and tags were created successfully in * the test preparation phase ({@link #setupContext()} method). */ @Test public void testImageCreated() { assertNotNull(image); final String imageId = image.id(); assertNotNull(imageId); List<ImageSummary> listImages = api().getImageApi().listImages(); assertNotNull(listImages); ImageSummary testImage = Iterables.find(listImages, new Predicate<ImageSummary>() { @Override public boolean apply(ImageSummary input) { return imageId.equals(input.id()); } }); assertEquals(testImage.repoTags().size(), 2, "Unexpected number of tags on the image."); assertThat(testImage.repoTags()).contains(toTag(IMAGE_REPOSITORY, IMAGE_TAG_1), toTag(IMAGE_REPOSITORY, IMAGE_TAG_2)); }
public void testCreateNodeWithGroupEncodedIntoNameThenStoreCredentials() { String name = "container" + new Random().nextInt(); Template template = templateBuilder.imageId(defaultImage.id()).build(); DockerTemplateOptions options = template.getOptions().as(DockerTemplateOptions.class); options.env(ImmutableList.of("ROOT_PASSWORD=password")); guest = adapter.createNodeWithGroupEncodedIntoName("test", name, template); assertEquals(guest.getNodeId(), guest.getNode().id()); }
@Test(dependsOnMethods = "testListImages", alwaysRun = true) public void testDeleteImage() { consumeStream(api().deleteImage(String.format("%s:%s", DEFAULT_IMAGE, DEFAULT_TAG))); assertNull(api().inspectImage(String.format("%s:%s", DEFAULT_IMAGE, DEFAULT_TAG))); assertNotNull(api().inspectImage(image.id()), "Image should should still exist after removing original tag. There is a newly added tag referencing it."); consumeStream(api().deleteImage("jclouds:testTag")); assertNull(api().inspectImage("jclouds:testTag")); }
public void testCreateNodeWithMultipleNetworks() { String name = "container" + new Random().nextInt(); Template template = templateBuilder.imageId(defaultImage.id()).build(); DockerTemplateOptions options = template.getOptions().as(DockerTemplateOptions.class); options.env(ImmutableList.of("ROOT_PASSWORD=password")); options.networkMode("bridge"); options.networks(network1.name(), network2.name()); guest = adapter.createNodeWithGroupEncodedIntoName("test", name, template); assertTrue(guest.getNode().networkSettings().networks().containsKey("network1")); assertTrue(guest.getNode().networkSettings().networks().containsKey("network2")); assertEquals(guest.getNode().networkSettings().networks().size(), 3); }
/** * Method based on {@link org.jclouds.docker.features.ImageApi#listImages()}. It retrieves additional * information by inspecting each image. * * @see org.jclouds.compute.ComputeServiceAdapter#listImages() */ @Override public Set<Image> listImages() { Set<Image> images = Sets.newHashSet(); for (ImageSummary imageSummary : api.getImageApi().listImages()) { // less efficient than just listImages but returns richer json that needs repoTags coming from listImages Image inspected = api.getImageApi().inspectImage(imageSummary.id()); inspected = Image.create(inspected.id(), inspected.author(), inspected.comment(), inspected.config(), inspected.containerConfig(), inspected.parent(), inspected.created(), inspected.container(), inspected.dockerVersion(), inspected.architecture(), inspected.os(), inspected.size(), inspected.virtualSize(), imageSummary.repoTags()); images.add(inspected); } return images; }
/** * Method based on {@link org.jclouds.docker.features.ImageApi#listImages()}. It retrieves additional * information by inspecting each image. * * @see org.jclouds.compute.ComputeServiceAdapter#listImages() */ @Override public Set<Image> listImages() { Set<Image> images = Sets.newHashSet(); for (ImageSummary imageSummary : api.getImageApi().listImages()) { // less efficient than just listImages but returns richer json that needs repoTags coming from listImages Image inspected = api.getImageApi().inspectImage(imageSummary.id()); inspected = Image.create(inspected.id(), inspected.author(), inspected.comment(), inspected.config(), inspected.containerConfig(), inspected.parent(), inspected.created(), inspected.container(), inspected.dockerVersion(), inspected.architecture(), inspected.os(), inspected.size(), inspected.virtualSize(), imageSummary.repoTags()); images.add(inspected); } return images; }
/** * Method based on {@link org.jclouds.docker.features.ImageApi#listImages()}. It retrieves additional * information by inspecting each image. * * @see org.jclouds.compute.ComputeServiceAdapter#listImages() */ @Override public Set<Image> listImages() { Set<Image> images = Sets.newHashSet(); for (ImageSummary imageSummary : api.getImageApi().listImages()) { // less efficient than just listImages but returns richer json that needs repoTags coming from listImages Image inspected = api.getImageApi().inspectImage(imageSummary.id()); inspected = Image.create(inspected.id(), inspected.author(), inspected.comment(), inspected.config(), inspected.containerConfig(), inspected.parent(), inspected.created(), inspected.container(), inspected.dockerVersion(), inspected.architecture(), inspected.os(), inspected.size(), inspected.virtualSize(), imageSummary.repoTags()); images.add(inspected); } return images; }
/** * Method based on {@link org.jclouds.docker.features.ImageApi#listImages()}. It retrieves additional * information by inspecting each image. * * @see org.jclouds.compute.ComputeServiceAdapter#listImages() */ @Override public Set<Image> listImages() { Set<Image> images = Sets.newHashSet(); for (ImageSummary imageSummary : api.getImageApi().listImages()) { // less efficient than just listImages but returns richer json that needs repoTags coming from listImages Image inspected = api.getImageApi().inspectImage(imageSummary.id()); inspected = Image.create(inspected.id(), inspected.author(), inspected.comment(), inspected.config(), inspected.containerConfig(), inspected.parent(), inspected.created(), inspected.container(), inspected.dockerVersion(), inspected.architecture(), inspected.os(), inspected.size(), inspected.virtualSize(), imageSummary.repoTags()); images.add(inspected); } return images; }
@BeforeClass protected void init() { if (api.getImageApi().inspectImage(ALPINE_IMAGE_TAG) == null) { CreateImageOptions options = CreateImageOptions.Builder.fromImage(ALPINE_IMAGE_TAG); InputStream createImageStream = api.getImageApi().createImage(options); consumeStream(createImageStream); } image = api.getImageApi().inspectImage(ALPINE_IMAGE_TAG); assertNotNull(image); Config containerConfig = Config.builder().image(image.id()) .cmd(ImmutableList.of("/bin/sh", "-c", "touch hello; while true; do echo hello world; sleep 1; done")) .build(); container = api.getContainerApi().createContainer("miscApiTest", containerConfig); assertNotNull(container); api.getContainerApi().startContainer(container.id()); assertTrue(api.getContainerApi().inspectContainer(container.id()).state().running()); }
@BeforeClass protected void init() { if (api.getImageApi().inspectImage(ALPINE_IMAGE_TAG) == null) { CreateImageOptions options = CreateImageOptions.Builder.fromImage(ALPINE_IMAGE_TAG); InputStream createImageStream = api.getImageApi().createImage(options); consumeStream(createImageStream); } image = api.getImageApi().inspectImage(ALPINE_IMAGE_TAG); assertNotNull(image); Config containerConfig = Config.builder().image(image.id()) .cmd(ImmutableList.of("sh", "-c", "touch hello; while true; do echo hello world; sleep 1; done")) .build(); container = api.getContainerApi().createContainer("jclouds-test-network", containerConfig); api.getContainerApi().startContainer(container.id()); container = api.getContainerApi().inspectContainer(container.id()); }
protected Template buildTemplate(TemplateBuilder templateBuilder) { String imageName = SSHABLE_IMAGE + ":" + SSHABLE_IMAGE_TAG; org.jclouds.docker.domain.Image image = imageApi().inspectImage(imageName); if (image == null) { CreateImageOptions options = CreateImageOptions.Builder.fromImage(SSHABLE_IMAGE).tag(SSHABLE_IMAGE_TAG); imageApi().createImage(options); } image = imageApi().inspectImage(imageName); defaultImage = client.getImage(image.id()); DockerTemplateOptions options = new DockerTemplateOptions(); options.env(ImmutableList.of("ROOT_PASS=password")); options.overrideLoginCredentials(LoginCredentials.builder().identity("root").credential("password").build()); template = templateBuilder.imageId(defaultImage.getId()).options(options).build(); return template; }