Move address-bindings config to new config system

Change-Id: I6d87ddbf98789dbe8355c453a3263f50fbc5d99c
diff --git a/core/api/src/main/java/org/onosproject/net/host/InterfaceIpAddress.java b/core/api/src/main/java/org/onosproject/net/host/InterfaceIpAddress.java
index 6885e23..2f53df5 100644
--- a/core/api/src/main/java/org/onosproject/net/host/InterfaceIpAddress.java
+++ b/core/api/src/main/java/org/onosproject/net/host/InterfaceIpAddress.java
@@ -15,11 +15,12 @@
  */
 package org.onosproject.net.host;
 
-import java.util.Objects;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.IpPrefix;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
+import java.util.Objects;
+
+import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
@@ -138,6 +139,24 @@
         return peerAddress;
     }
 
+    /**
+     * Converts a CIDR string literal to an interface IP address.
+     * E.g. 10.0.0.1/24
+     *
+     * @param value an IP address value in string form
+     * @return an interface IP address
+     * @throws IllegalArgumentException if the argument is invalid
+     */
+    public static InterfaceIpAddress valueOf(String value) {
+        String[] splits = value.split("/");
+        checkArgument(splits.length == 2, "Invalid IP address and prefix length format");
+
+        // NOTE: IpPrefix will mask-out the bits after the prefix length.
+        IpPrefix subnet = IpPrefix.valueOf(value);
+        IpAddress addr = IpAddress.valueOf(splits[0]);
+        return new InterfaceIpAddress(addr, subnet);
+    }
+
     @Override
     public boolean equals(Object other) {
         if (other == this) {
@@ -163,10 +182,11 @@
 
     @Override
     public String toString() {
-        return toStringHelper(this).add("ipAddress", ipAddress)
+        /*return toStringHelper(this).add("ipAddress", ipAddress)
             .add("subnetAddress", subnetAddress)
             .add("broadcastAddress", broadcastAddress)
             .add("peerAddress", peerAddress)
-            .omitNullValues().toString();
+            .omitNullValues().toString();*/
+        return ipAddress.toString() + "/" + subnetAddress.prefixLength();
     }
 }
diff --git a/core/api/src/test/java/org/onosproject/net/host/InterfaceIpAddressTest.java b/core/api/src/test/java/org/onosproject/net/host/InterfaceIpAddressTest.java
index b82da45..6120b7c 100644
--- a/core/api/src/test/java/org/onosproject/net/host/InterfaceIpAddressTest.java
+++ b/core/api/src/test/java/org/onosproject/net/host/InterfaceIpAddressTest.java
@@ -54,22 +54,28 @@
         // Regular interface address with default broadcast address
         fromAddr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS);
         toAddr = new InterfaceIpAddress(fromAddr);
-        assertThat(toAddr.toString(),
-                   is("InterfaceIpAddress{ipAddress=1.2.3.4, subnetAddress=1.2.0.0/16}"));
+        assertThat(toAddr.ipAddress(), is(fromAddr.ipAddress()));
+        assertThat(toAddr.subnetAddress(), is(fromAddr.subnetAddress()));
+        assertThat(toAddr.broadcastAddress(), is(fromAddr.broadcastAddress()));
+        assertThat(toAddr.peerAddress(), is(fromAddr.peerAddress()));
 
         // Interface address with non-default broadcast address
         fromAddr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS,
                                           BROADCAST_ADDRESS);
         toAddr = new InterfaceIpAddress(fromAddr);
-        assertThat(toAddr.toString(),
-                   is("InterfaceIpAddress{ipAddress=1.2.3.4, subnetAddress=1.2.0.0/16, broadcastAddress=1.2.0.255}"));
+        assertThat(toAddr.ipAddress(), is(fromAddr.ipAddress()));
+        assertThat(toAddr.subnetAddress(), is(fromAddr.subnetAddress()));
+        assertThat(toAddr.broadcastAddress(), is(fromAddr.broadcastAddress()));
+        assertThat(toAddr.peerAddress(), is(fromAddr.peerAddress()));
 
         // Point-to-point address with peer IP address
         fromAddr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null,
                                           PEER_ADDRESS);
         toAddr = new InterfaceIpAddress(fromAddr);
-        assertThat(toAddr.toString(),
-                   is("InterfaceIpAddress{ipAddress=1.2.3.4, subnetAddress=1.2.0.0/16, peerAddress=5.6.7.8}"));
+        assertThat(toAddr.ipAddress(), is(fromAddr.ipAddress()));
+        assertThat(toAddr.subnetAddress(), is(fromAddr.subnetAddress()));
+        assertThat(toAddr.broadcastAddress(), is(fromAddr.broadcastAddress()));
+        assertThat(toAddr.peerAddress(), is(fromAddr.peerAddress()));
     }
 
     /**
@@ -89,8 +95,10 @@
     public void testConstructorForDefaultBroadcastAddress() {
         InterfaceIpAddress addr =
             new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS);
-        assertThat(addr.toString(),
-                   is("InterfaceIpAddress{ipAddress=1.2.3.4, subnetAddress=1.2.0.0/16}"));
+        assertThat(addr.ipAddress(), is(IP_ADDRESS));
+        assertThat(addr.subnetAddress(), is(SUBNET_ADDRESS));
+        assertThat(addr.broadcastAddress(), nullValue());
+        assertThat(addr.peerAddress(), nullValue());
     }
 
     /**
@@ -102,8 +110,11 @@
         InterfaceIpAddress addr =
             new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS,
                                    BROADCAST_ADDRESS);
-        assertThat(addr.toString(),
-                   is("InterfaceIpAddress{ipAddress=1.2.3.4, subnetAddress=1.2.0.0/16, broadcastAddress=1.2.0.255}"));
+
+        assertThat(addr.ipAddress(), is(IP_ADDRESS));
+        assertThat(addr.subnetAddress(), is(SUBNET_ADDRESS));
+        assertThat(addr.broadcastAddress(), is(BROADCAST_ADDRESS));
+        assertThat(addr.peerAddress(), nullValue());
     }
 
     /**
@@ -115,8 +126,11 @@
         InterfaceIpAddress addr =
             new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null,
                                    PEER_ADDRESS);
-        assertThat(addr.toString(),
-                   is("InterfaceIpAddress{ipAddress=1.2.3.4, subnetAddress=1.2.0.0/16, peerAddress=5.6.7.8}"));
+
+        assertThat(addr.ipAddress(), is(IP_ADDRESS));
+        assertThat(addr.subnetAddress(), is(SUBNET_ADDRESS));
+        assertThat(addr.broadcastAddress(), nullValue());
+        assertThat(addr.peerAddress(), is(PEER_ADDRESS));
     }
 
     /**
@@ -229,28 +243,4 @@
         assertThat(addr3, is(not(addr4)));
     }
 
-    /**
-     * Tests object string representation.
-     */
-    @Test
-    public void testToString() {
-        InterfaceIpAddress addr;
-
-        // Regular interface address with default broadcast address
-        addr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS);
-        assertThat(addr.toString(),
-                   is("InterfaceIpAddress{ipAddress=1.2.3.4, subnetAddress=1.2.0.0/16}"));
-
-        // Interface address with non-default broadcast address
-        addr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS,
-                                      BROADCAST_ADDRESS);
-        assertThat(addr.toString(),
-                   is("InterfaceIpAddress{ipAddress=1.2.3.4, subnetAddress=1.2.0.0/16, broadcastAddress=1.2.0.255}"));
-
-        // Point-to-point address with peer IP address
-        addr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null,
-                                      PEER_ADDRESS);
-        assertThat(addr.toString(),
-                   is("InterfaceIpAddress{ipAddress=1.2.3.4, subnetAddress=1.2.0.0/16, peerAddress=5.6.7.8}"));
-    }
 }