Repository: jclouds-labs
Updated Branches:
  refs/heads/1.9.x 2033e639b -> df583b45e


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/df583b45
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/df583b45
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/df583b45

Branch: refs/heads/1.9.x
Commit: df583b45e57e2cd8f280d0aad28888f53f80607d
Parents: 2033e63
Author: Duncan Grant <[email protected]>
Authored: Thu Jun 9 09:04:56 2016 +0100
Committer: Ignasi Barrera <[email protected]>
Committed: Mon Jun 13 15:18:14 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 ++
 docker/src/test/resources/container.json        |  3 ++
 6 files changed, 52 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/df583b45/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/df583b45/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/df583b45/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 84817f0..8c9d7a3 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
@@ -124,6 +124,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/df583b45/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/df583b45/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 ff2e2fe..cf52d3c 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;
@@ -93,6 +94,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/df583b45/docker/src/test/resources/container.json
----------------------------------------------------------------------
diff --git a/docker/src/test/resources/container.json 
b/docker/src/test/resources/container.json
index 5a13e13..7dccd1b 100644
--- a/docker/src/test/resources/container.json
+++ b/docker/src/test/resources/container.json
@@ -112,6 +112,9 @@
             ]
         }
     },
+    "Node": {
+        "IP": "10.10.10.10"
+    },
     "Path": "/home/weave/weaver",
     "ProcessLabel": "",
     "ResolvConfPath": 
"/var/lib/docker/containers/6c9932f478bd761f32ddb54ed28ab42ab6fac6f2a279f561ea31503ee9d39524/resolv.conf",

Reply via email to