Add default route option to kubevirt network

Change-Id: Ia2a2d9b34ec3c493e04d56c544c22812e32d524a
(cherry picked from commit d95d3524caff5449aded4ff9397c3ed717fc91e6)
diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetwork.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetwork.java
index 73c96f0..2745e46 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetwork.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetwork.java
@@ -53,6 +53,7 @@
     private final Integer mtu;
     private final String segmentId;
     private final IpAddress gatewayIp;
+    private final boolean defaultRoute;
     private final String cidr;
     private final Set<KubevirtHostRoute> hostRoutes;
     private final KubevirtIpPool ipPool;
@@ -67,6 +68,7 @@
      * @param mtu               network MTU
      * @param segmentId         segment identifier
      * @param gatewayIp         gateway IP address
+     * @param defaultRoute      default route
      * @param cidr              CIDR of network
      * @param hostRoutes        a set of host routes
      * @param ipPool            IP pool
@@ -74,7 +76,8 @@
      */
     public DefaultKubevirtNetwork(String networkId, Type type, String name,
                                   Integer mtu, String segmentId, IpAddress gatewayIp,
-                                  String cidr, Set<KubevirtHostRoute> hostRoutes,
+                                  boolean defaultRoute, String cidr,
+                                  Set<KubevirtHostRoute> hostRoutes,
                                   KubevirtIpPool ipPool, Set<IpAddress> dnses) {
         this.networkId = networkId;
         this.type = type;
@@ -82,6 +85,7 @@
         this.mtu = mtu;
         this.segmentId = segmentId;
         this.gatewayIp = gatewayIp;
+        this.defaultRoute = defaultRoute;
         this.cidr = cidr;
         this.hostRoutes = hostRoutes;
         this.ipPool = ipPool;
@@ -133,6 +137,11 @@
     }
 
     @Override
+    public boolean defaultRoute() {
+        return defaultRoute;
+    }
+
+    @Override
     public KubevirtIpPool ipPool() {
         return ipPool;
     }
@@ -196,7 +205,7 @@
         DefaultKubevirtNetwork that = (DefaultKubevirtNetwork) o;
         return networkId.equals(that.networkId) && type == that.type &&
                 name.equals(that.name) && mtu.equals(that.mtu) &&
-                gatewayIp.equals(that.gatewayIp) &&
+                gatewayIp.equals(that.gatewayIp) && defaultRoute == that.defaultRoute &&
                 cidr.equals(that.cidr) && hostRoutes.equals(that.hostRoutes) &&
                 ipPool.equals(that.ipPool) &&
                 dnses.equals(that.dnses);
@@ -205,7 +214,7 @@
     @Override
     public int hashCode() {
         return Objects.hash(networkId, type, name, mtu, segmentId, gatewayIp,
-                cidr, hostRoutes, ipPool, dnses);
+                defaultRoute, cidr, hostRoutes, ipPool, dnses);
     }
 
     @Override
@@ -217,6 +226,7 @@
                 .add("mtu", mtu)
                 .add("segmentId", segmentId)
                 .add("gatewayIp", gatewayIp)
+                .add("defaultRoute", defaultRoute)
                 .add("cidr", cidr)
                 .add("hostRouts", hostRoutes)
                 .add("ipPool", ipPool)
@@ -263,6 +273,7 @@
         private Integer mtu;
         private String segmentId;
         private IpAddress gatewayIp;
+        private boolean defaultRoute;
         private String cidr;
         private Set<KubevirtHostRoute> hostRouts;
         private KubevirtIpPool ipPool;
@@ -274,7 +285,6 @@
             checkArgument(type != null, NOT_NULL_MSG, "type");
             checkArgument(name != null, NOT_NULL_MSG, "name");
             checkArgument(mtu != null, NOT_NULL_MSG, "mtu");
-            checkArgument(gatewayIp != null, NOT_NULL_MSG, "gatewayIp");
             checkArgument(cidr != null, NOT_NULL_MSG, "cidr");
             checkArgument(ipPool != null, NOT_NULL_MSG, "ipPool");
 
@@ -287,7 +297,7 @@
             }
 
             return new DefaultKubevirtNetwork(networkId, type, name, mtu, segmentId,
-                    gatewayIp, cidr, hostRouts, ipPool, dnses);
+                    gatewayIp, defaultRoute, cidr, hostRouts, ipPool, dnses);
         }
 
         @Override
@@ -327,6 +337,12 @@
         }
 
         @Override
+        public KubevirtNetwork.Builder defaultRoute(boolean flag) {
+            this.defaultRoute = flag;
+            return this;
+        }
+
+        @Override
         public Builder cidr(String cidr) {
             this.cidr = cidr;
             return this;