You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2015/10/21 16:27:44 UTC
[1/4] jclouds-labs git commit: [JCLOUDS-1010] use a lightweight image
as a base for Docker build test
Repository: jclouds-labs
Updated Branches:
refs/heads/master f4846f172 -> 3f0dce351
[JCLOUDS-1010] use a lightweight image as a base for Docker build test
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/b5d8260d
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/b5d8260d
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/b5d8260d
Branch: refs/heads/master
Commit: b5d8260d132c16f0dcb260b615a079a769159a7a
Parents: f4846f1
Author: Josef Cacek <jo...@gmail.com>
Authored: Thu Oct 8 11:19:09 2015 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Wed Oct 21 16:10:18 2015 +0200
----------------------------------------------------------------------
docker/src/test/resources/Dockerfile | 24 +++++++++++++-----------
1 file changed, 13 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/b5d8260d/docker/src/test/resources/Dockerfile
----------------------------------------------------------------------
diff --git a/docker/src/test/resources/Dockerfile b/docker/src/test/resources/Dockerfile
index 3c3b30e..f375d33 100644
--- a/docker/src/test/resources/Dockerfile
+++ b/docker/src/test/resources/Dockerfile
@@ -14,19 +14,21 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-FROM ubuntu:14.04
-MAINTAINER Sven Dowideit <Sv...@docker.com>
-RUN apt-get update && apt-get install -y openssh-server
-RUN mkdir /var/run/sshd
-RUN echo 'root:screencast' | chpasswd
-RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
-# SSH login fix. Otherwise user is kicked off after login
-RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
+FROM alpine:3.2
+MAINTAINER JClouds Dev <de...@jclouds.apache.org>
+
+ENV DROPBEAR_CONF=/etc/dropbear
-ENV NOTVISIBLE "in users profile"
-RUN echo "export VISIBLE=now" >> /etc/profile
+RUN apk add --update dropbear \
+ && mkdir -p ${DROPBEAR_CONF} \
+ && dropbearkey -t dss -f ${DROPBEAR_CONF}/dropbear_dss_host_key \
+ && dropbearkey -t rsa -f ${DROPBEAR_CONF}/dropbear_rsa_host_key -s 2048 \
+ && dropbearkey -t ecdsa -f ${DROPBEAR_CONF}/dropbear_ecdsa_host_key
+
+RUN echo 'root:screencast' | chpasswd
EXPOSE 22
-CMD ["/usr/sbin/sshd", "-D"]
\ No newline at end of file
+
+CMD ["/usr/sbin/dropbear", "-E", "-F"]
[3/4] jclouds-labs git commit: [JCLOUDS-1020] fix query parameter
name in Docker's BuildOptions
Posted by na...@apache.org.
[JCLOUDS-1020] fix query parameter name in Docker's BuildOptions
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/446e28ce
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/446e28ce
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/446e28ce
Branch: refs/heads/master
Commit: 446e28ce9a45267d8889d15ddc1ac4165ffd6121
Parents: c56d64a
Author: Josef Cacek <jo...@gmail.com>
Authored: Wed Oct 21 10:44:30 2015 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Wed Oct 21 16:10:25 2015 +0200
----------------------------------------------------------------------
docker/src/main/java/org/jclouds/docker/options/BuildOptions.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/446e28ce/docker/src/main/java/org/jclouds/docker/options/BuildOptions.java
----------------------------------------------------------------------
diff --git a/docker/src/main/java/org/jclouds/docker/options/BuildOptions.java b/docker/src/main/java/org/jclouds/docker/options/BuildOptions.java
index 6653a56..15d95e0 100644
--- a/docker/src/main/java/org/jclouds/docker/options/BuildOptions.java
+++ b/docker/src/main/java/org/jclouds/docker/options/BuildOptions.java
@@ -21,7 +21,7 @@ import org.jclouds.http.options.BaseHttpRequestOptions;
public class BuildOptions extends BaseHttpRequestOptions {
public BuildOptions tag(String tag) {
- this.queryParameters.put("tag", tag);
+ this.queryParameters.put("t", tag);
return this;
}
[4/4] jclouds-labs git commit: Add LiveTest to cover loginPort (SSH)
customization in Docker.
Posted by na...@apache.org.
Add LiveTest to cover loginPort (SSH) customization in Docker.
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/3f0dce35
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/3f0dce35
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/3f0dce35
Branch: refs/heads/master
Commit: 3f0dce351f17afa6351ad031583cf183b8a1f1ed
Parents: 446e28c
Author: Josef Cacek <jo...@gmail.com>
Authored: Tue Oct 20 18:54:58 2015 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Wed Oct 21 16:10:29 2015 +0200
----------------------------------------------------------------------
.../docker/compute/SshToCustomPortLiveTest.java | 224 +++++++++++++++++++
1 file changed, 224 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/3f0dce35/docker/src/test/java/org/jclouds/docker/compute/SshToCustomPortLiveTest.java
----------------------------------------------------------------------
diff --git a/docker/src/test/java/org/jclouds/docker/compute/SshToCustomPortLiveTest.java b/docker/src/test/java/org/jclouds/docker/compute/SshToCustomPortLiveTest.java
new file mode 100644
index 0000000..62e1e5e
--- /dev/null
+++ b/docker/src/test/java/org/jclouds/docker/compute/SshToCustomPortLiveTest.java
@@ -0,0 +1,224 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.docker.compute;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.jclouds.compute.options.TemplateOptions.Builder.runAsRoot;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+import java.util.logging.Level;
+
+import org.jclouds.compute.RunNodesException;
+import org.jclouds.compute.domain.ExecResponse;
+import org.jclouds.compute.domain.NodeMetadata;
+import org.jclouds.compute.domain.Template;
+import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest;
+import org.jclouds.docker.DockerApi;
+import org.jclouds.docker.compute.functions.LoginPortForContainer;
+import org.jclouds.docker.compute.options.DockerTemplateOptions;
+import org.jclouds.docker.domain.Container;
+import org.jclouds.docker.domain.Image;
+import org.jclouds.docker.domain.ImageSummary;
+import org.jclouds.docker.options.BuildOptions;
+import org.jclouds.sshj.config.SshjSshClientModule;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Optional;
+import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+import com.google.inject.AbstractModule;
+import com.google.inject.Module;
+
+/**
+ * This class tests configuring custom SSH port for Docker images.
+ */
+@Test(groups = "live", testName = "SshToCustomPortLiveTest", singleThreaded = true)
+public class SshToCustomPortLiveTest extends BaseComputeServiceContextLiveTest {
+
+ private static final int SSH_PORT = 8822;
+ private static final String IMAGE_REPOSITORY = "jclouds/testrepo";
+ private static final String IMAGE_TAG_1 = "testtag";
+ private static final String IMAGE_TAG_2 = "second";
+
+ private Image image;
+
+ public SshToCustomPortLiveTest() {
+ provider = "docker";
+ }
+
+ /**
+ * 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));
+ }
+
+ /**
+ * Start a node from the newly created image. The dropbear SSH server running
+ * on custom port ( {@value #SSH_PORT}). The Docker networkMode used is
+ * "host". Execute a command through the SSH connection and check the result.
+ * Destroy the node when finished.
+ *
+ * @throws RunNodesException
+ */
+ @Test(dependsOnMethods = "testImageCreated")
+ public void testCustomPortSsh() throws RunNodesException {
+ final DockerTemplateOptions options = DockerTemplateOptions.Builder
+ .commands("/usr/sbin/dropbear", "-E", "-F", "-p", String.valueOf(SSH_PORT)).overrideLoginUser("root")
+ .overrideLoginPassword("screencast").blockOnPort(SSH_PORT, 30).networkMode("host");
+
+ final Template template = view.getComputeService().templateBuilder().imageId(image.id()).options(options).build();
+
+ String nodeId = null;
+ try {
+ NodeMetadata node = Iterables
+ .getOnlyElement(view.getComputeService().createNodesInGroup("ssh-test", 1, template));
+
+ nodeId = node.getId();
+ ExecResponse response = view.getComputeService().runScriptOnNode(nodeId, "echo hello",
+ runAsRoot(false).wrapInInitScript(false));
+ assertThat(response.getOutput().trim()).endsWith("hello");
+ } finally {
+ if (nodeId != null)
+ view.getComputeService().destroyNode(nodeId);
+ }
+ }
+
+ /**
+ * Build a new image with 2 tags on it in the test preparation phase.
+ *
+ * @see org.jclouds.apis.BaseContextLiveTest#setupContext()
+ */
+ @Override
+ @BeforeClass(groups = { "integration", "live" })
+ public void setupContext() {
+ super.setupContext();
+
+ final String tag = toTag(IMAGE_REPOSITORY, IMAGE_TAG_1);
+ BuildOptions options = BuildOptions.Builder.tag(tag).verbose(false).nocache(false);
+ InputStream buildImageStream;
+ try {
+ buildImageStream = api().getMiscApi().build(BaseDockerApiLiveTest.tarredDockerfile(), options);
+ consumeStreamSilently(buildImageStream);
+ } catch (IOException e) {
+ throw new RuntimeException("Error occured during building Docker image.", e);
+ }
+ image = api().getImageApi().inspectImage(tag);
+ api().getImageApi().tagImage(image.id(), IMAGE_REPOSITORY, IMAGE_TAG_2, true);
+ }
+
+ /**
+ * After the test remove created image (with all tags).
+ *
+ * @see #setupContext()
+ */
+ @AfterClass(alwaysRun = true)
+ protected void tearDown() {
+ consumeStreamSilently(api().getImageApi().deleteImage(toTag(IMAGE_REPOSITORY, IMAGE_TAG_1)));
+ consumeStreamSilently(api().getImageApi().deleteImage(toTag(IMAGE_REPOSITORY, IMAGE_TAG_2)));
+ }
+
+ /**
+ * Configure used modules. A custom {@link LoginPortForContainer} binding is
+ * added among logging and SSH module.
+ *
+ * @see org.jclouds.compute.internal.BaseGenericComputeServiceContextLiveTest#setupModules()
+ */
+ @Override
+ protected Iterable<Module> setupModules() {
+ return ImmutableSet.<Module> of(getLoggingModule(), new SshjSshClientModule(), new AbstractModule() {
+ @Override
+ protected void configure() {
+ bind(LoginPortForContainer.class).toInstance(new LoginPortForContainer() {
+ @Override
+ public Optional<Integer> apply(Container input) {
+ return Optional.of(SSH_PORT);
+ }
+ });
+ }
+ });
+ }
+
+ /**
+ * Return DockerApi for current Context.
+ *
+ * @return
+ */
+ private DockerApi api() {
+ return view.unwrapApi(DockerApi.class);
+ }
+
+ /**
+ * Read all data from given InputStream and throw away all the bits.
+ *
+ * @param is
+ */
+ private static void consumeStreamSilently(InputStream is) {
+ char[] tmpBuff = new char[8 * 1024];
+ // throw everything away
+ InputStreamReader isr = new InputStreamReader(is);
+
+ try {
+ try {
+ while (isr.read(tmpBuff) > -1) {
+ // empty
+ }
+ } finally {
+ isr.close();
+ }
+ } catch (IOException e) {
+ java.util.logging.Logger.getAnonymousLogger().log(Level.WARNING, "Error ocured during reading InputStream.", e);
+ }
+ }
+
+ /**
+ * Concatenate repository and tag name (if provided) in Docker format.
+ *
+ * @param repo
+ * @param tag
+ * @return
+ */
+ private static String toTag(String repo, String tag) {
+ return repo + (tag != null ? ":" + tag : "");
+ }
+}
[2/4] jclouds-labs git commit: [JCLOUDS-1017] add tagImage() method
to ImageApi
Posted by na...@apache.org.
[JCLOUDS-1017] add tagImage() method to ImageApi
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/c56d64ae
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/c56d64ae
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/c56d64ae
Branch: refs/heads/master
Commit: c56d64aed95891433bcb2ff03a311d550b3c145a
Parents: b5d8260
Author: Josef Cacek <jo...@gmail.com>
Authored: Tue Oct 20 15:08:16 2015 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Wed Oct 21 16:10:21 2015 +0200
----------------------------------------------------------------------
.../org/jclouds/docker/features/ImageApi.java | 18 ++++
.../docker/features/ImageApiLiveTest.java | 38 +++++++-
.../docker/features/ImageApiMockTest.java | 12 +++
.../jclouds/docker/parse/ImagesParseTest.java | 48 +++++------
docker/src/test/resources/images.json | 91 +++++++++++---------
5 files changed, 139 insertions(+), 68 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/c56d64ae/docker/src/main/java/org/jclouds/docker/features/ImageApi.java
----------------------------------------------------------------------
diff --git a/docker/src/main/java/org/jclouds/docker/features/ImageApi.java b/docker/src/main/java/org/jclouds/docker/features/ImageApi.java
index 9f7cebc..cfca40d 100644
--- a/docker/src/main/java/org/jclouds/docker/features/ImageApi.java
+++ b/docker/src/main/java/org/jclouds/docker/features/ImageApi.java
@@ -26,6 +26,7 @@ import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
@@ -102,4 +103,21 @@ public interface ImageApi {
@Path("/images/{name}")
InputStream deleteImage(@PathParam("name") String name, DeleteImageOptions options);
+ /**
+ * Tag the image name into a repository.
+ *
+ * @param name
+ * the name of the image to be tagged
+ * @param repoName
+ * the repository to tag in
+ * @param tag
+ * the new tag name
+ * @param force
+ * force create if tag already exists
+ */
+ @Named("image:tag")
+ @POST
+ @Path("/images/{name}/tag")
+ void tagImage(@PathParam("name") String name, @QueryParam("repo") String repoName,
+ @QueryParam("tag") String tag, @QueryParam("force") boolean force);
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/c56d64ae/docker/src/test/java/org/jclouds/docker/features/ImageApiLiveTest.java
----------------------------------------------------------------------
diff --git a/docker/src/test/java/org/jclouds/docker/features/ImageApiLiveTest.java b/docker/src/test/java/org/jclouds/docker/features/ImageApiLiveTest.java
index a145417..1249f2f 100644
--- a/docker/src/test/java/org/jclouds/docker/features/ImageApiLiveTest.java
+++ b/docker/src/test/java/org/jclouds/docker/features/ImageApiLiveTest.java
@@ -16,20 +16,30 @@
*/
package org.jclouds.docker.features;
+import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
+
import java.io.InputStream;
+import java.util.List;
import org.jclouds.docker.compute.BaseDockerApiLiveTest;
+import org.jclouds.docker.domain.Image;
+import org.jclouds.docker.domain.ImageSummary;
import org.jclouds.docker.options.CreateImageOptions;
import org.testng.annotations.Test;
-@Test(groups = "live", testName = "RemoteApiLiveTest", singleThreaded = true)
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+
+@Test(groups = "live", testName = "ImageApiLiveTest", singleThreaded = true)
public class ImageApiLiveTest extends BaseDockerApiLiveTest {
private static final String DEFAULT_IMAGE = "busybox";
private static final String DEFAULT_TAG = "ubuntu-14.04";
+ private Image image;
+
@Test
public void testCreateImage() {
InputStream createImageStream = api().createImage(CreateImageOptions.Builder.fromImage(DEFAULT_IMAGE).tag(DEFAULT_TAG));
@@ -38,18 +48,38 @@ public class ImageApiLiveTest extends BaseDockerApiLiveTest {
@Test(dependsOnMethods = "testCreateImage")
public void testInspectImage() {
- assertNotNull(api.getImageApi().inspectImage(String.format("%s:%s", DEFAULT_IMAGE, DEFAULT_TAG)));
+ image = api.getImageApi().inspectImage(String.format("%s:%s", DEFAULT_IMAGE, DEFAULT_TAG));
+ assertNotNull(image);
}
@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.");
+ }
+
+ @Test(dependsOnMethods = "testTagImage")
public void testListImages() {
- assertNotNull(api().listImages());
+ List<ImageSummary> listImages = api().listImages();
+ assertNotNull(listImages);
+
+ Iterables.find(listImages, new Predicate<ImageSummary>() {
+ @Override
+ public boolean apply(ImageSummary input) {
+ return input.repoTags().contains("jclouds:testTag");
+ }
+ });
}
- @Test(dependsOnMethods = "testListImages")
+ @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"));
}
private ImageApi api() {
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/c56d64ae/docker/src/test/java/org/jclouds/docker/features/ImageApiMockTest.java
----------------------------------------------------------------------
diff --git a/docker/src/test/java/org/jclouds/docker/features/ImageApiMockTest.java b/docker/src/test/java/org/jclouds/docker/features/ImageApiMockTest.java
index 5349c39..f789b6d 100644
--- a/docker/src/test/java/org/jclouds/docker/features/ImageApiMockTest.java
+++ b/docker/src/test/java/org/jclouds/docker/features/ImageApiMockTest.java
@@ -69,6 +69,18 @@ public class ImageApiMockTest extends BaseDockerMockTest {
}
}
+ public void testTagImage() throws Exception {
+ MockWebServer server = mockWebServer(new MockResponse().setResponseCode(201));
+ ImageApi api = api(DockerApi.class, server.getUrl("/").toString()).getImageApi();
+ try {
+ api.tagImage("633fcd11259e8d6bccfbb59a4086b95b0d0fb44edfc3912000ef1f70e8a7bfc6", "jclouds", "testTag", true);
+ assertSent(server, "POST",
+ "/images/633fcd11259e8d6bccfbb59a4086b95b0d0fb44edfc3912000ef1f70e8a7bfc6/tag?repo=jclouds&tag=testTag&force=true");
+ } finally {
+ server.shutdown();
+ }
+ }
+
public void testDeleteImage() throws Exception {
MockWebServer server = mockWebServer(new MockResponse().setResponseCode(204));
ImageApi api = api(DockerApi.class, server.getUrl("/").toString()).getImageApi();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/c56d64ae/docker/src/test/java/org/jclouds/docker/parse/ImagesParseTest.java
----------------------------------------------------------------------
diff --git a/docker/src/test/java/org/jclouds/docker/parse/ImagesParseTest.java b/docker/src/test/java/org/jclouds/docker/parse/ImagesParseTest.java
index d2ef5b6..1042da0 100644
--- a/docker/src/test/java/org/jclouds/docker/parse/ImagesParseTest.java
+++ b/docker/src/test/java/org/jclouds/docker/parse/ImagesParseTest.java
@@ -39,30 +39,30 @@ public class ImagesParseTest extends BaseDockerParseTest<List<ImageSummary>> {
@Consumes(MediaType.APPLICATION_JSON)
public List<ImageSummary> expected() {
return ImmutableList.of(
- ImageSummary.create("cbba6639a342646deed70d7ea6162fa2a0acea9300f911f4e014555fe37d3456",
- 1416827360,
- "05794515afd5724df1cdf0e674ae932455fce7dea3c70a94d77119ad1fa954ba",
- 0,
- 808709069,
- ImmutableList.of("test:latest")),
- ImageSummary.create("e1e548b03259ae30ba12232b6c16ef5205cf71b0363848e78b0394e1ecba4f57",
- 1416826851,
- "6f36bec79c7f184ceebf7000cfb7244c4bc9b397b6659ac7f420a53d114250d9",
- 0,
- 5609404,
- ImmutableList.of("<none>:<none>")),
- ImageSummary.create("8201388d2b288539aab6aabf5d3b15ec269eba95c6baa9d6771f16540abf3a3f",
- 1414247273,
- "4671e2c549c5b60063e349f520c801dc73b53d2226a5a8e5501845ebe94761ca",
- 0,
- 755313702,
- ImmutableList.of("dockerfile/java:openjdk-7-jdk")),
- ImageSummary.create("5506de2b643be1e6febbf3b8a240760c6843244c41e12aa2f60ccbb7153d17f5",
- 1414108439,
- "22093c35d77bb609b9257ffb2640845ec05018e3d96cb939f68d0e19127f1723",
- 0,
- 199257566,
- ImmutableList.of("ubuntu:14.04"))
+ ImageSummary.create("d7057cb020844f245031d27b76cb18af05db1cc3a96a29fa7777af75f5ac91a3",
+ 1442866547,
+ "cfa753dfea5e68a24366dfba16e6edf573daa447abf65bc11619c1a98a3aff54",
+ 0,
+ 1095501,
+ ImmutableList.of("docker.io/busybox:1.23.2", "docker.io/busybox:latest")),
+ ImageSummary.create("633fcd11259e8d6bccfbb59a4086b95b0d0fb44edfc3912000ef1f70e8a7bfc6",
+ 1442598293,
+ "b65c936b5fb601d680ed656b1ccf8ab857c0e5cb521043a005405c194e9a69f3",
+ 0,
+ 5607885,
+ ImmutableList.of("docker.io/busybox:ubuntu-14.04", "jclouds:testTag")),
+ ImageSummary.create("f4fddc471ec22fc1f7d37768132f1753bc171121e30ac2af7fcb0302588197c0",
+ 1442260874,
+ "",
+ 5244426,
+ 5244426,
+ ImmutableList.of("docker.io/alpine:3.2")),
+ ImageSummary.create("91e54dfb11794fad694460162bf0cb0a4fa710cfa3f60979c177d920813e267c",
+ 1440102075,
+ "d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82",
+ 0,
+ 188333286,
+ ImmutableList.of("docker.io/ubuntu:14.04", "docker.io/ubuntu:latest"))
);
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/c56d64ae/docker/src/test/resources/images.json
----------------------------------------------------------------------
diff --git a/docker/src/test/resources/images.json b/docker/src/test/resources/images.json
index 41d4f12..63bec4f 100644
--- a/docker/src/test/resources/images.json
+++ b/docker/src/test/resources/images.json
@@ -1,42 +1,53 @@
[
- {
- "Created": 1416827360,
- "Id": "cbba6639a342646deed70d7ea6162fa2a0acea9300f911f4e014555fe37d3456",
- "ParentId": "05794515afd5724df1cdf0e674ae932455fce7dea3c70a94d77119ad1fa954ba",
- "RepoTags": [
- "test:latest"
- ],
- "Size": 0,
- "VirtualSize": 808709069
- },
- {
- "Created": 1416826851,
- "Id": "e1e548b03259ae30ba12232b6c16ef5205cf71b0363848e78b0394e1ecba4f57",
- "ParentId": "6f36bec79c7f184ceebf7000cfb7244c4bc9b397b6659ac7f420a53d114250d9",
- "RepoTags": [
- "<none>:<none>"
- ],
- "Size": 0,
- "VirtualSize": 5609404
- },
- {
- "Created": 1414247273,
- "Id": "8201388d2b288539aab6aabf5d3b15ec269eba95c6baa9d6771f16540abf3a3f",
- "ParentId": "4671e2c549c5b60063e349f520c801dc73b53d2226a5a8e5501845ebe94761ca",
- "RepoTags": [
- "dockerfile/java:openjdk-7-jdk"
- ],
- "Size": 0,
- "VirtualSize": 755313702
- },
- {
- "Created": 1414108439,
- "Id": "5506de2b643be1e6febbf3b8a240760c6843244c41e12aa2f60ccbb7153d17f5",
- "ParentId": "22093c35d77bb609b9257ffb2640845ec05018e3d96cb939f68d0e19127f1723",
- "RepoTags": [
- "ubuntu:14.04"
- ],
- "Size": 0,
- "VirtualSize": 199257566
- }
+ {
+ "Created": 1442866547,
+ "Id": "d7057cb020844f245031d27b76cb18af05db1cc3a96a29fa7777af75f5ac91a3",
+ "Labels": null,
+ "ParentId": "cfa753dfea5e68a24366dfba16e6edf573daa447abf65bc11619c1a98a3aff54",
+ "RepoDigests": [],
+ "RepoTags": [
+ "docker.io/busybox:1.23.2",
+ "docker.io/busybox:latest"
+ ],
+ "Size": 0,
+ "VirtualSize": 1095501
+ },
+ {
+ "Created": 1442598293,
+ "Id": "633fcd11259e8d6bccfbb59a4086b95b0d0fb44edfc3912000ef1f70e8a7bfc6",
+ "Labels": null,
+ "ParentId": "b65c936b5fb601d680ed656b1ccf8ab857c0e5cb521043a005405c194e9a69f3",
+ "RepoDigests": [],
+ "RepoTags": [
+ "docker.io/busybox:ubuntu-14.04",
+ "jclouds:testTag"
+ ],
+ "Size": 0,
+ "VirtualSize": 5607885
+ },
+ {
+ "Created": 1442260874,
+ "Id": "f4fddc471ec22fc1f7d37768132f1753bc171121e30ac2af7fcb0302588197c0",
+ "Labels": null,
+ "ParentId": "",
+ "RepoDigests": [],
+ "RepoTags": [
+ "docker.io/alpine:3.2"
+ ],
+ "Size": 5244426,
+ "VirtualSize": 5244426
+ },
+ {
+ "Created": 1440102075,
+ "Id": "91e54dfb11794fad694460162bf0cb0a4fa710cfa3f60979c177d920813e267c",
+ "Labels": {},
+ "ParentId": "d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82",
+ "RepoDigests": [],
+ "RepoTags": [
+ "docker.io/ubuntu:14.04",
+ "docker.io/ubuntu:latest"
+ ],
+ "Size": 0,
+ "VirtualSize": 188333286
+ }
]
\ No newline at end of file