[ONOS-7926] Implement IPAM service to allocate IP for Kubernetes POD

Change-Id: I32fd1fffb41ec728d0be092ac5a8f555179e7a9e
diff --git a/apps/k8s-networking/api/src/main/java/org/onosproject/k8snetworking/api/DefaultK8sIpam.java b/apps/k8s-networking/api/src/main/java/org/onosproject/k8snetworking/api/DefaultK8sIpam.java
index cb488b3..605cdea 100644
--- a/apps/k8s-networking/api/src/main/java/org/onosproject/k8snetworking/api/DefaultK8sIpam.java
+++ b/apps/k8s-networking/api/src/main/java/org/onosproject/k8snetworking/api/DefaultK8sIpam.java
@@ -24,16 +24,23 @@
  */
 public final class DefaultK8sIpam implements K8sIpam {
 
+    private final String ipamId;
     private final IpAddress ipAddress;
     private final String networkId;
 
     // private constructor not intended for external invocation
-    public DefaultK8sIpam(IpAddress ipAddress, String networkId) {
+    public DefaultK8sIpam(String ipamId, IpAddress ipAddress, String networkId) {
+        this.ipamId = ipamId;
         this.ipAddress = ipAddress;
         this.networkId = networkId;
     }
 
     @Override
+    public String ipamId() {
+        return ipamId;
+    }
+
+    @Override
     public IpAddress ipAddress() {
         return ipAddress;
     }
@@ -52,18 +59,20 @@
             return false;
         }
         DefaultK8sIpam that = (DefaultK8sIpam) o;
-        return Objects.equal(ipAddress, that.ipAddress) &&
+        return Objects.equal(ipamId, that.ipamId) &&
+                Objects.equal(ipAddress, that.ipAddress) &&
                 Objects.equal(networkId, that.networkId);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hashCode(ipAddress, networkId);
+        return Objects.hashCode(ipamId, ipAddress, networkId);
     }
 
     @Override
     public String toString() {
         return MoreObjects.toStringHelper(this)
+                .add("ipamId", ipamId)
                 .add("ipAddress", ipAddress)
                 .add("networkId", networkId)
                 .toString();