Initial implementation of managing IPs for kubevirt spawned VMIs

Change-Id: I68127e1fe42a142765e7696d8ce80de16d3d94a9
diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPort.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPort.java
index 049a336..410c098 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPort.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPort.java
@@ -32,6 +32,7 @@
 
     private static final String NOT_NULL_MSG = "Port % cannot be null";
 
+    private final String networkId;
     private final MacAddress macAddress;
     private final IpAddress ipAddress;
     private final DeviceId deviceId;
@@ -40,13 +41,15 @@
     /**
      * Default constructor.
      *
+     * @param networkId         network identifier
      * @param macAddress        MAC address
      * @param ipAddress         IP address
      * @param deviceId          device identifier
      * @param portNumber        port number
      */
-    public DefaultKubevirtPort(MacAddress macAddress, IpAddress ipAddress,
+    public DefaultKubevirtPort(String networkId, MacAddress macAddress, IpAddress ipAddress,
                                DeviceId deviceId, PortNumber portNumber) {
+        this.networkId = networkId;
         this.macAddress = macAddress;
         this.ipAddress = ipAddress;
         this.deviceId = deviceId;
@@ -54,6 +57,11 @@
     }
 
     @Override
+    public String networkId() {
+        return networkId;
+    }
+
+    @Override
     public MacAddress macAddress() {
         return macAddress;
     }
@@ -92,18 +100,20 @@
             return false;
         }
         DefaultKubevirtPort that = (DefaultKubevirtPort) o;
-        return macAddress.equals(that.macAddress) && ipAddress.equals(that.ipAddress) &&
-                deviceId.equals(that.deviceId) && portNumber.equals(that.portNumber);
+        return networkId.equals(that.networkId) && macAddress.equals(that.macAddress) &&
+                ipAddress.equals(that.ipAddress) && deviceId.equals(that.deviceId) &&
+                portNumber.equals(that.portNumber);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(macAddress, ipAddress, deviceId, portNumber);
+        return Objects.hash(networkId, macAddress, ipAddress, deviceId, portNumber);
     }
 
     @Override
     public String toString() {
         return MoreObjects.toStringHelper(this)
+                .add("networkId", networkId)
                 .add("macAddress", macAddress)
                 .add("ipAddress", ipAddress)
                 .add("deviceId", deviceId)
@@ -125,6 +135,7 @@
      */
     public static final class Builder implements KubevirtPort.Builder {
 
+        private String networkId;
         private MacAddress macAddress;
         private IpAddress ipAddress;
         private DeviceId deviceId;
@@ -136,10 +147,18 @@
 
         @Override
         public KubevirtPort build() {
+            checkArgument(networkId != null, NOT_NULL_MSG, "networkId");
             checkArgument(macAddress != null, NOT_NULL_MSG, "macAddress");
             checkArgument(ipAddress != null, NOT_NULL_MSG, "ipAddress");
 
-            return new DefaultKubevirtPort(macAddress, ipAddress, deviceId, portNumber);
+            return new DefaultKubevirtPort(networkId, macAddress, ipAddress,
+                    deviceId, portNumber);
+        }
+
+        @Override
+        public Builder networkId(String networkId) {
+            this.networkId = networkId;
+            return this;
         }
 
         @Override