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 2016/08/12 07:37:57 UTC
jclouds-labs git commit: JCLOUDS-1153 Fix empty Docker repoTags field
in ImageToImage function
Repository: jclouds-labs
Updated Branches:
refs/heads/master 76d7aae6e -> 05a5ae2eb
JCLOUDS-1153 Fix empty Docker repoTags field in ImageToImage function
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/05a5ae2e
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/05a5ae2e
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/05a5ae2e
Branch: refs/heads/master
Commit: 05a5ae2ebd64895fc4ccd639d85b484968d7fb3b
Parents: 76d7aae
Author: Josef Cacek <jc...@redhat.com>
Authored: Thu Aug 11 16:53:00 2016 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Fri Aug 12 09:27:08 2016 +0200
----------------------------------------------------------------------
.../docker/compute/functions/ImageToImage.java | 43 +++++++-------
.../compute/functions/ImageToImageTest.java | 59 ++++++++++++++++++++
2 files changed, 82 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/05a5ae2e/docker/src/main/java/org/jclouds/docker/compute/functions/ImageToImage.java
----------------------------------------------------------------------
diff --git a/docker/src/main/java/org/jclouds/docker/compute/functions/ImageToImage.java b/docker/src/main/java/org/jclouds/docker/compute/functions/ImageToImage.java
index 7e9de03..f030d9a 100644
--- a/docker/src/main/java/org/jclouds/docker/compute/functions/ImageToImage.java
+++ b/docker/src/main/java/org/jclouds/docker/compute/functions/ImageToImage.java
@@ -16,9 +16,10 @@
*/
package org.jclouds.docker.compute.functions;
-import com.google.common.base.Function;
-import com.google.common.base.Splitter;
-import com.google.common.collect.Iterables;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import javax.annotation.Resource;
+import javax.inject.Named;
import org.jclouds.compute.domain.Image;
import org.jclouds.compute.domain.ImageBuilder;
@@ -27,11 +28,8 @@ import org.jclouds.compute.domain.OsFamily;
import org.jclouds.compute.reference.ComputeServiceConstants;
import org.jclouds.logging.Logger;
-import javax.annotation.Resource;
-import javax.inject.Named;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Iterables.get;
+import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
public class ImageToImage implements Function<org.jclouds.docker.domain.Image, org.jclouds.compute.domain.Image> {
@@ -46,13 +44,24 @@ public class ImageToImage implements Function<org.jclouds.docker.domain.Image, o
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"));
+ String firstRepoTag = Iterables.getFirst(from.repoTags(), "<none>");
+ final int versionSeparatorPos = firstRepoTag.lastIndexOf(':');
- OsFamily osFamily = osFamily().apply(description);
- String osVersion = parseVersion(description);
+ final String name;
+ final String osVersion;
+ if (versionSeparatorPos > -1) {
+ name = firstRepoTag.substring(0, versionSeparatorPos);
+ osVersion = firstRepoTag.substring(versionSeparatorPos + 1);
+ } else {
+ name = firstRepoTag;
+ osVersion = firstRepoTag;
+ }
+ logger.debug("os version for item: %s is %s", firstRepoTag, osVersion);
+
+ OsFamily osFamily = osFamily().apply(firstRepoTag);
OperatingSystem os = OperatingSystem.builder()
- .description(description)
+ .description(firstRepoTag)
.family(osFamily)
.version(osVersion)
.is64Bit(is64bit(from))
@@ -60,8 +69,8 @@ public class ImageToImage implements Function<org.jclouds.docker.domain.Image, o
return new ImageBuilder()
.ids(from.id())
- .name(get(Splitter.on(":").split(description), 0))
- .description(description)
+ .name(name)
+ .description(firstRepoTag)
.operatingSystem(os)
.status(Image.Status.AVAILABLE)
.build();
@@ -91,10 +100,4 @@ public class ImageToImage implements Function<org.jclouds.docker.domain.Image, o
};
}
- private String parseVersion(String description) {
- String version = get(Splitter.on(":").split(description), 1);
- logger.debug("os version for item: %s is %s", description, version);
- return version;
- }
-
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/05a5ae2e/docker/src/test/java/org/jclouds/docker/compute/functions/ImageToImageTest.java
----------------------------------------------------------------------
diff --git a/docker/src/test/java/org/jclouds/docker/compute/functions/ImageToImageTest.java b/docker/src/test/java/org/jclouds/docker/compute/functions/ImageToImageTest.java
index db02e3d..83c1c3b 100644
--- a/docker/src/test/java/org/jclouds/docker/compute/functions/ImageToImageTest.java
+++ b/docker/src/test/java/org/jclouds/docker/compute/functions/ImageToImageTest.java
@@ -37,6 +37,48 @@ import com.google.common.collect.ImmutableList;
@Test(groups = "unit", testName = "ImageToImageTest")
public class ImageToImageTest {
+ private static final org.jclouds.docker.domain.Image IMAGE_EMPTY_REPOTAGS = org.jclouds.docker.domain.Image.create(
+ "id", // id
+ "author",
+ "comment",
+ Config.builder()
+ .image("imageId")
+ .build(),
+ Config.builder()
+ .image("imageId")
+ .build(),
+ "parent", // parent
+ new Date(), // created
+ "containerId", // container
+ "1.3.1", // dockerVersion
+ "x86_64", // architecture
+ "os", // os
+ 0l, // size
+ 0l, // virtualSize
+ ImmutableList.<String> of() // repoTags
+ );
+
+ private static final org.jclouds.docker.domain.Image IMAGE_REPOTAG_WITH_PORT = org.jclouds.docker.domain.Image.create(
+ "id", // id
+ "author",
+ "comment",
+ Config.builder()
+ .image("imageId")
+ .build(),
+ Config.builder()
+ .image("imageId")
+ .build(),
+ "parent", // parent
+ new Date(), // created
+ "containerId", // container
+ "1.3.1", // dockerVersion
+ "x86_64", // architecture
+ "os", // os
+ 0l, // size
+ 0l, // virtualSize
+ ImmutableList.of("registry.company.example:8888/a/b/c/d:latest") // repoTags
+ );
+
private ImageToImage function;
private org.jclouds.docker.domain.Image image;
@@ -76,6 +118,23 @@ public class ImageToImageTest {
assertEquals(mockImage.id(), image.getId().toString());
}
+ public void testEmptyRepoTags() {
+ Image image = function.apply(IMAGE_EMPTY_REPOTAGS);
+
+ assertEquals(image.getId(), "id");
+ assertEquals(image.getDescription(), "<none>");
+ assertEquals(image.getOperatingSystem().getVersion(), "<none>");
+ assertEquals(image.getName(), "<none>");
+ }
+
+ public void testRepoTagWithHostPort() {
+ Image image = function.apply(IMAGE_REPOTAG_WITH_PORT);
+
+ assertEquals(image.getDescription(), "registry.company.example:8888/a/b/c/d:latest");
+ assertEquals(image.getOperatingSystem().getVersion(), "latest");
+ assertEquals(image.getName(), "registry.company.example:8888/a/b/c/d");
+ }
+
private org.jclouds.docker.domain.Image mockImage() {
org.jclouds.docker.domain.Image mockImage = EasyMock.createMock(org.jclouds.docker.domain.Image.class);