Support to inject hostRoutes and DNS info inside DHCP reply message

Change-Id: Ic88f98b6fca88aa69a23c6a576d4d0a6ac4b8f99
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java
index 285b190..492847a 100644
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java
+++ b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java
@@ -100,6 +100,7 @@
                 .cidr("10.10.10.0/24")
                 .hostRoutes(ImmutableSet.of(hostRoute1, hostRoute2))
                 .ipPool(ipPool)
+                .dnses(ImmutableSet.of(IpAddress.valueOf("8.8.8.8")))
                 .build();
 
         ObjectNode networkJson = kubevirtNetworkCodec.encode(network, context);
@@ -122,6 +123,10 @@
         assertThat(network.gatewayIp().toString(), is("10.10.0.1"));
         assertThat(network.ipPool().start().toString(), is("10.10.10.100"));
         assertThat(network.ipPool().end().toString(), is("10.10.10.200"));
+        assertThat(network.dnses().size(), is(1));
+        KubevirtHostRoute route = network.hostRoutes().stream().findFirst().orElse(null);
+        assertThat(route, is(new KubevirtHostRoute(IpPrefix.valueOf("10.10.10.0/24"),
+                IpAddress.valueOf("10.10.10.1"))));
     }
 
     private KubevirtNetwork getKubevirtNetwork(String resourceName) throws IOException {
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java
index 215e289..4a67e07 100644
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java
+++ b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java
@@ -18,6 +18,7 @@
 import com.fasterxml.jackson.databind.JsonNode;
 import org.hamcrest.Description;
 import org.hamcrest.TypeSafeDiagnosingMatcher;
+import org.onlab.packet.IpAddress;
 import org.onosproject.kubevirtnetworking.api.KubevirtHostRoute;
 import org.onosproject.kubevirtnetworking.api.KubevirtIpPool;
 import org.onosproject.kubevirtnetworking.api.KubevirtNetwork;
@@ -37,6 +38,7 @@
     private static final String CIDR = "cidr";
     private static final String HOST_ROUTES = "hostRoutes";
     private static final String IP_POOL = "ipPool";
+    private static final String DNSES = "dnses";
 
     private KubevirtNetworkJsonMatcher(KubevirtNetwork network) {
         this.network = network;
@@ -142,6 +144,32 @@
             }
         }
 
+        // check dnses
+        JsonNode jsonDnses = jsonNode.get(DNSES);
+        if (jsonDnses != null) {
+            if (jsonDnses.size() != network.dnses().size()) {
+                description.appendText("DNSes size was " + jsonDnses.size());
+                return false;
+            }
+
+
+            for (IpAddress dns : network.dnses()) {
+                boolean dnsFound = false;
+                for (int dnsIndex = 0; dnsIndex < jsonDnses.size(); dnsIndex++) {
+                    String jsonDns = jsonDnses.get(dnsIndex).asText();
+                    if (jsonDns.equals(dns.toString())) {
+                        dnsFound = true;
+                        break;
+                    }
+                }
+
+                if (!dnsFound) {
+                    description.appendText("DNS not found " + dns.toString());
+                    return false;
+                }
+            }
+        }
+
         return true;
     }