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

Change-Id: I32fd1fffb41ec728d0be092ac5a8f555179e7a9e
diff --git a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/codec/K8sIpamCodec.java b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/codec/K8sIpamCodec.java
index 695156c..8785906 100644
--- a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/codec/K8sIpamCodec.java
+++ b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/codec/K8sIpamCodec.java
@@ -34,6 +34,7 @@
 
     private final Logger log = getLogger(getClass());
 
+    private static final String IPAM_ID = "ipamId";
     private static final String IP_ADDRESS = "ipAddress";
     private static final String NETWORK_ID = "networkId";
 
@@ -44,6 +45,7 @@
         checkNotNull(ipam, "Kubernetes IPAM cannot be null");
 
         return context.mapper().createObjectNode()
+                .put(IPAM_ID, ipam.ipamId())
                 .put(IP_ADDRESS, ipam.ipAddress().toString())
                 .put(NETWORK_ID, ipam.networkId());
     }
@@ -54,11 +56,13 @@
             return null;
         }
 
+        String ipamId = nullIsIllegal(json.get(IPAM_ID).asText(),
+                IPAM_ID + MISSING_MESSAGE);
         String ipAddress = nullIsIllegal(json.get(IP_ADDRESS).asText(),
                 IP_ADDRESS + MISSING_MESSAGE);
         String networkId = nullIsIllegal(json.get(NETWORK_ID).asText(),
                 NETWORK_ID + MISSING_MESSAGE);
 
-        return new DefaultK8sIpam(IpAddress.valueOf(ipAddress), networkId);
+        return new DefaultK8sIpam(ipamId, IpAddress.valueOf(ipAddress), networkId);
     }
 }