Support hostname resolution for cluster configuration

Change-Id: I9afb97bfba05366fa63dc7b9022b914bd2d1cce0
(cherry picked from commit 97cd95d5a2a7a1bf1f3bfd3091f2d66f747eee33)
diff --git a/core/store/dist/src/test/java/org/onosproject/store/cluster/messaging/impl/NettyMessagingManagerTest.java b/core/store/dist/src/test/java/org/onosproject/store/cluster/messaging/impl/NettyMessagingManagerTest.java
index ac8a9bc..8cfa7ff 100644
--- a/core/store/dist/src/test/java/org/onosproject/store/cluster/messaging/impl/NettyMessagingManagerTest.java
+++ b/core/store/dist/src/test/java/org/onosproject/store/cluster/messaging/impl/NettyMessagingManagerTest.java
@@ -257,11 +257,21 @@
                     }
 
                     @Override
+                    public String host() {
+                        return ipAddress;
+                    }
+
+                    @Override
                     public IpAddress ip() {
                         return IpAddress.valueOf(ipAddress);
                     }
 
                     @Override
+                    public IpAddress ip(boolean resolve) {
+                        return ip();
+                    }
+
+                    @Override
                     public int tcpPort() {
                         return ep.port();
                     }
diff --git a/core/store/dist/src/test/java/org/onosproject/store/flow/impl/DistributedFlowRuleStoreTest.java b/core/store/dist/src/test/java/org/onosproject/store/flow/impl/DistributedFlowRuleStoreTest.java
index ceac0c2..9b9c4db 100644
--- a/core/store/dist/src/test/java/org/onosproject/store/flow/impl/DistributedFlowRuleStoreTest.java
+++ b/core/store/dist/src/test/java/org/onosproject/store/flow/impl/DistributedFlowRuleStoreTest.java
@@ -25,6 +25,7 @@
 import org.junit.Ignore;
 import org.junit.Test;
 import org.onlab.packet.Ip4Address;
+import org.onlab.packet.IpAddress;
 import org.onosproject.cluster.ClusterService;
 import org.onosproject.cluster.ControllerNode;
 import org.onosproject.cluster.NodeId;
@@ -126,11 +127,21 @@
         }
 
         @Override
+        public String host() {
+            return "127.0.0.1";
+        }
+
+        @Override
         public Ip4Address ip() {
             return Ip4Address.valueOf("127.0.0.1");
         }
 
         @Override
+        public IpAddress ip(boolean resolve) {
+            return ip();
+        }
+
+        @Override
         public int tcpPort() {
             return 0;
         }
diff --git a/core/store/dist/src/test/java/org/onosproject/store/flow/impl/ECFlowRuleStoreTest.java b/core/store/dist/src/test/java/org/onosproject/store/flow/impl/ECFlowRuleStoreTest.java
index 72562f9..0dfc2a2 100644
--- a/core/store/dist/src/test/java/org/onosproject/store/flow/impl/ECFlowRuleStoreTest.java
+++ b/core/store/dist/src/test/java/org/onosproject/store/flow/impl/ECFlowRuleStoreTest.java
@@ -22,6 +22,7 @@
 import org.junit.Before;
 import org.junit.Test;
 
+import org.onlab.packet.IpAddress;
 import org.onosproject.cfg.ComponentConfigAdapter;
 import org.onosproject.cluster.NodeId;
 import org.onosproject.cluster.ClusterService;
@@ -137,11 +138,21 @@
         }
 
         @Override
+        public String host() {
+            return "127.0.0.1";
+        }
+
+        @Override
         public Ip4Address ip() {
             return Ip4Address.valueOf("127.0.0.1");
         }
 
         @Override
+        public IpAddress ip(boolean resolve) {
+            return ip();
+        }
+
+        @Override
         public int tcpPort() {
             return 0;
         }
diff --git a/core/store/dist/src/test/java/org/onosproject/store/statistic/impl/DistributedStatisticStoreTest.java b/core/store/dist/src/test/java/org/onosproject/store/statistic/impl/DistributedStatisticStoreTest.java
index 4691df9..ad4baf7 100644
--- a/core/store/dist/src/test/java/org/onosproject/store/statistic/impl/DistributedStatisticStoreTest.java
+++ b/core/store/dist/src/test/java/org/onosproject/store/statistic/impl/DistributedStatisticStoreTest.java
@@ -135,7 +135,12 @@
         }
 
         @Override
-        public Ip4Address ip() {
+        public String host() {
+            return "127.0.0.1";
+        }
+
+        @Override
+        public Ip4Address ip(boolean resolve) {
             return Ip4Address.valueOf("127.0.0.1");
         }
 
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/atomix/impl/AtomixManager.java b/core/store/primitives/src/main/java/org/onosproject/store/atomix/impl/AtomixManager.java
index ba66372..8df1a40 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/atomix/impl/AtomixManager.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/atomix/impl/AtomixManager.java
@@ -78,13 +78,13 @@
             return Atomix.builder(getClass().getClassLoader())
                 .withClusterId(metadata.getName())
                 .withMemberId(metadataService.getLocalNode().id().id())
-                .withAddress(metadataService.getLocalNode().ip().toString(), metadataService.getLocalNode().tcpPort())
+                .withAddress(metadataService.getLocalNode().host(), metadataService.getLocalNode().tcpPort())
                 .withProperty("type", "onos")
                 .withMembershipProvider(BootstrapDiscoveryProvider.builder()
                     .withNodes(metadata.getStorageNodes().stream()
                         .map(node -> io.atomix.cluster.Node.builder()
                             .withId(node.id().id())
-                            .withAddress(node.ip().toString(), node.tcpPort())
+                            .withAddress(node.host(), node.tcpPort())
                             .build())
                         .collect(Collectors.toList()))
                     .build())
@@ -103,13 +103,13 @@
             return Atomix.builder(getClass().getClassLoader())
                 .withClusterId(metadata.getName())
                 .withMemberId(metadataService.getLocalNode().id().id())
-                .withAddress(metadataService.getLocalNode().ip().toString(), metadataService.getLocalNode().tcpPort())
+                .withAddress(metadataService.getLocalNode().host(), metadataService.getLocalNode().tcpPort())
                 .withProperty("type", "onos")
                 .withMembershipProvider(BootstrapDiscoveryProvider.builder()
                     .withNodes(metadata.getControllerNodes().stream()
                         .map(node -> io.atomix.cluster.Node.builder()
                             .withId(node.id().id())
-                            .withAddress(node.ip().toString(), node.tcpPort())
+                            .withAddress(node.host(), node.tcpPort())
                             .build())
                         .collect(Collectors.toList()))
                     .build())