Repository: jclouds-labs
Updated Branches:
  refs/heads/master 97a3a7007 -> f47223b51


Node json should be optional

The Node element of the container json is optional
as well as nullable.


Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/f47223b5
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/f47223b5
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/f47223b5

Branch: refs/heads/master
Commit: f47223b51a23c770c447cbb72a784c88727695f3
Parents: 97a3a70
Author: Duncan Grant <[email protected]>
Authored: Thu Jun 9 09:04:56 2016 +0100
Committer: Ignasi Barrera <[email protected]>
Committed: Mon Jun 13 12:56:05 2016 +0200

----------------------------------------------------------------------
 .../functions/ContainerToNodeMetadata.java      |  5 ++-
 .../org/jclouds/docker/domain/Container.java    | 11 +++---
 .../functions/ContainerToNodeMetadataTest.java  |  1 +
 .../jclouds/docker/domain/ContainerTest.java    | 37 ++++++++++++++++++++
 .../docker/parse/ContainerParseTest.java        |  3 ++
 .../parse/ContainerVersionMajor1Minor21.java    |  1 +
 docker/src/test/resources/container.json        |  3 ++
 7 files changed, 53 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f47223b5/docker/src/main/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadata.java
----------------------------------------------------------------------
diff --git 
a/docker/src/main/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadata.java
 
b/docker/src/main/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadata.java
index d2133a6..53b70f1 100644
--- 
a/docker/src/main/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadata.java
+++ 
b/docker/src/main/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadata.java
@@ -36,7 +36,6 @@ import org.jclouds.domain.Location;
 import org.jclouds.providers.ProviderMetadata;
 
 import com.google.common.base.Function;
-import com.google.common.base.Strings;
 import com.google.common.base.Supplier;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
@@ -113,8 +112,8 @@ public class ContainerToNodeMetadata implements 
Function<Container, NodeMetadata
 
    private List<String> getPublicIpAddresses(Container container) {
       String dockerIpAddress;
-      if (container.node() != null && 
!Strings.isNullOrEmpty(container.node().ip())) {
-         dockerIpAddress = container.node().ip();
+      if (container.node().isPresent()) {
+         dockerIpAddress = container.node().get().ip();
       } else {
          dockerIpAddress = 
URI.create(providerMetadata.getEndpoint()).getHost();
       }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f47223b5/docker/src/main/java/org/jclouds/docker/domain/Container.java
----------------------------------------------------------------------
diff --git a/docker/src/main/java/org/jclouds/docker/domain/Container.java 
b/docker/src/main/java/org/jclouds/docker/domain/Container.java
index b53cdee..d0c10c9 100644
--- a/docker/src/main/java/org/jclouds/docker/domain/Container.java
+++ b/docker/src/main/java/org/jclouds/docker/domain/Container.java
@@ -26,6 +26,7 @@ import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.json.SerializedNames;
 
 import com.google.auto.value.AutoValue;
+import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
@@ -77,7 +78,7 @@ public abstract class Container {
 
    @Nullable public abstract String processLabel();
 
-   @Nullable public abstract Node node();
+   public abstract Optional<Node> node();
 
    Container() {
    }
@@ -93,7 +94,7 @@ public abstract class Container {
                                   String resolvConfPath, Map<String, String> 
volumes, HostConfig hostConfig,
                                   String driver, String execDriver, 
Map<String, Boolean> volumesRW, String command,
                                   String status, List<Port> ports, String 
hostnamePath, String hostsPath,
-                                  String mountLabel, String processLabel, Node 
node) {
+                                  String mountLabel, String processLabel, 
Optional<Node> node) {
       return new AutoValue_Container(id, created, path, name, copyOf(args), 
config, state, image, networkSettings,
               sysInitPath, resolvConfPath, copyOf(volumes), hostConfig, 
driver, execDriver, copyOf(volumesRW), command,
               status, copyOf(ports), hostnamePath, hostsPath, mountLabel, 
processLabel, node);
@@ -132,7 +133,7 @@ public abstract class Container {
       private String hostsPath;
       private String mountLabel;
       private String processLabel;
-      private Node node;
+      private Optional<Node> node = Optional.absent();
 
       public Builder id(String id) {
          this.id = id;
@@ -250,7 +251,7 @@ public abstract class Container {
       }
 
       public Builder node(Node node) {
-         this.node = node;
+         this.node = Optional.fromNullable(node);
          return this;
       }
 
@@ -266,7 +267,7 @@ public abstract class Container {
                  
.sysInitPath(in.sysInitPath()).resolvConfPath(in.resolvConfPath()).driver(in.driver())
                  
.execDriver(in.execDriver()).volumes(in.volumes()).hostConfig(in.hostConfig()).volumesRW(in.volumesRW())
                  
.command(in.command()).status(in.status()).ports(in.ports()).hostnamePath(in.hostnamePath())
-                 
.hostsPath(in.hostsPath()).mountLabel(in.mountLabel()).processLabel(in.processLabel()).node(in.node());
+                 
.hostsPath(in.hostsPath()).mountLabel(in.mountLabel()).processLabel(in.processLabel()).node(in.node().orNull());
       }
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f47223b5/docker/src/test/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadataTest.java
----------------------------------------------------------------------
diff --git 
a/docker/src/test/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadataTest.java
 
b/docker/src/test/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadataTest.java
index 53ba627..7588174 100644
--- 
a/docker/src/test/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadataTest.java
+++ 
b/docker/src/test/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadataTest.java
@@ -128,6 +128,7 @@ public class ContainerToNodeMetadataTest {
               .status("")
               .hostConfig(HostConfig.builder().publishAllPorts(true).build())
               .ports(ImmutableList.<Port>of())
+              .node(null)
               .build();
       ProviderMetadata providerMetadata = 
EasyMock.createMock(ProviderMetadata.class);
       
expect(providerMetadata.getEndpoint()).andReturn("http://127.0.0.1:4243";);

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f47223b5/docker/src/test/java/org/jclouds/docker/domain/ContainerTest.java
----------------------------------------------------------------------
diff --git a/docker/src/test/java/org/jclouds/docker/domain/ContainerTest.java 
b/docker/src/test/java/org/jclouds/docker/domain/ContainerTest.java
new file mode 100644
index 0000000..7be6e3c
--- /dev/null
+++ b/docker/src/test/java/org/jclouds/docker/domain/ContainerTest.java
@@ -0,0 +1,37 @@
+/*
+ * 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.domain;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.testng.annotations.Test;
+
+@Test(groups = "unit", testName = "ContainerTest")
+public class ContainerTest {
+
+   @Test
+   public void testFromContainer() {
+      Container testContainer = Container.builder()
+              .id("testcontainer")
+              .build();
+
+
+      Container newTestContainer = testContainer.toBuilder().build();
+      assertThat(newTestContainer).isEqualTo(testContainer);
+   }
+}
+

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f47223b5/docker/src/test/java/org/jclouds/docker/parse/ContainerParseTest.java
----------------------------------------------------------------------
diff --git 
a/docker/src/test/java/org/jclouds/docker/parse/ContainerParseTest.java 
b/docker/src/test/java/org/jclouds/docker/parse/ContainerParseTest.java
index 53ef7dc..884733e 100644
--- a/docker/src/test/java/org/jclouds/docker/parse/ContainerParseTest.java
+++ b/docker/src/test/java/org/jclouds/docker/parse/ContainerParseTest.java
@@ -27,6 +27,7 @@ import org.jclouds.docker.domain.Config;
 import org.jclouds.docker.domain.Container;
 import org.jclouds.docker.domain.HostConfig;
 import org.jclouds.docker.domain.NetworkSettings;
+import org.jclouds.docker.domain.Node;
 import org.jclouds.docker.domain.State;
 import org.jclouds.docker.internal.BaseDockerParseTest;
 import org.testng.annotations.Test;
@@ -125,6 +126,8 @@ public class ContainerParseTest extends 
BaseDockerParseTest<Container> {
               
.hostsPath("/var/lib/docker/containers/6c9932f478bd761f32ddb54ed28ab42ab6fac6f2a279f561ea31503ee9d39524/hosts")
               .mountLabel("")
               .processLabel("")
+              .node(Node.builder().
+                      ip("10.10.10.10").build())
               .build();
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f47223b5/docker/src/test/java/org/jclouds/docker/parse/ContainerVersionMajor1Minor21.java
----------------------------------------------------------------------
diff --git 
a/docker/src/test/java/org/jclouds/docker/parse/ContainerVersionMajor1Minor21.java
 
b/docker/src/test/java/org/jclouds/docker/parse/ContainerVersionMajor1Minor21.java
index 2b990e1..8bca8c8 100644
--- 
a/docker/src/test/java/org/jclouds/docker/parse/ContainerVersionMajor1Minor21.java
+++ 
b/docker/src/test/java/org/jclouds/docker/parse/ContainerVersionMajor1Minor21.java
@@ -239,6 +239,7 @@ public class ContainerVersionMajor1Minor21 {
                            "bridge", NetworkSettings.Details.create("", "", 
"", 0, "", "", 0, "")))
                      .build())
                .path("/bin/sh")
+               .node(null)
                .processLabel("")
                
.resolvConfPath("/var/lib/docker/containers/ba033ac4401106a3b513bc9d639eee123ad78ca3616b921167cd74b20e25ed39/resolv.conf")
 //            "RestartCount": 1,

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f47223b5/docker/src/test/resources/container.json
----------------------------------------------------------------------
diff --git a/docker/src/test/resources/container.json 
b/docker/src/test/resources/container.json
index bc18e27..37c5db4 100644
--- a/docker/src/test/resources/container.json
+++ b/docker/src/test/resources/container.json
@@ -134,6 +134,9 @@
       }
     }
   },
+  "Node": {
+    "IP": "10.10.10.10"
+  },
   "Path": "/home/weave/weaver",
   "ProcessLabel": "",
   "ResolvConfPath": 
"/var/lib/docker/containers/6c9932f478bd761f32ddb54ed28ab42ab6fac6f2a279f561ea31503ee9d39524/resolv.conf",

Reply via email to