Initializes gateway type of kubevirt node.

Change-Id: Ib48f54f60fa82b5fe35f0077687653712fd22803
(cherry picked from commit 54d8baf7cf1042251067641cf1da99cbc0ae8638)
diff --git a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtNode.java b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtNode.java
index 1d3512a..2b0c8f8 100644
--- a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtNode.java
+++ b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtNode.java
@@ -52,6 +52,7 @@
     private final IpAddress dataIp;
     private final KubevirtNodeState state;
     private final Collection<KubevirtPhyInterface> phyIntfs;
+    private final String gatewayBridgeName;
 
     /**
      * A default constructor of kubevirt node.
@@ -65,12 +66,14 @@
      * @param dataIp            data IP address
      * @param state             node state
      * @param phyIntfs          physical interfaces
+     * @param gatewayBridgeName  gateway bridge name
      */
     protected DefaultKubevirtNode(String clusterName, String hostname, Type type,
                                   DeviceId intgBridge, DeviceId tunBridge,
                                   IpAddress managementIp, IpAddress dataIp,
                                   KubevirtNodeState state,
-                                  Collection<KubevirtPhyInterface> phyIntfs) {
+                                  Collection<KubevirtPhyInterface> phyIntfs,
+                                  String gatewayBridgeName) {
         this.clusterName = clusterName;
         this.hostname = hostname;
         this.type = type;
@@ -80,6 +83,7 @@
         this.dataIp = dataIp;
         this.state = state;
         this.phyIntfs = phyIntfs;
+        this.gatewayBridgeName = gatewayBridgeName;
     }
 
     @Override
@@ -139,6 +143,7 @@
                 .dataIp(dataIp)
                 .state(newState)
                 .phyIntfs(phyIntfs)
+                .gatewayBridgeName(gatewayBridgeName)
                 .build();
     }
 
@@ -154,6 +159,7 @@
                 .dataIp(dataIp)
                 .state(state)
                 .phyIntfs(phyIntfs)
+                .gatewayBridgeName(gatewayBridgeName)
                 .build();
     }
 
@@ -169,6 +175,7 @@
                 .dataIp(dataIp)
                 .state(state)
                 .phyIntfs(phyIntfs)
+                .gatewayBridgeName(gatewayBridgeName)
                 .build();
     }
 
@@ -196,6 +203,11 @@
         return tunnelPort(GENEVE);
     }
 
+    @Override
+    public String gatewayBridgeName() {
+        return gatewayBridgeName;
+    }
+
     private PortNumber tunnelPort(String tunnelType) {
         if (dataIp == null) {
             return null;
@@ -233,7 +245,8 @@
                 .managementIp(node.managementIp())
                 .dataIp(node.dataIp())
                 .state(node.state())
-                .phyIntfs(node.phyIntfs());
+                .phyIntfs(node.phyIntfs())
+                .gatewayBridgeName(node.gatewayBridgeName());
     }
 
     @Override
@@ -272,6 +285,7 @@
                 .add("dataIp", dataIp)
                 .add("state", state)
                 .add("phyIntfs", phyIntfs)
+                .add("gatewayBridgeName", gatewayBridgeName)
                 .toString();
     }
 
@@ -286,6 +300,7 @@
         private IpAddress dataIp;
         private KubevirtNodeState state;
         private Collection<KubevirtPhyInterface> phyIntfs;
+        private String gatewayBridgeName;
 
         // private constructor not intended to use from external
         private Builder() {
@@ -311,7 +326,8 @@
                     managementIp,
                     dataIp,
                     state,
-                    phyIntfs
+                    phyIntfs,
+                    gatewayBridgeName
             );
         }
 
@@ -368,5 +384,11 @@
             this.state = state;
             return this;
         }
+
+        @Override
+        public Builder gatewayBridgeName(String gatewayBridgeName) {
+            this.gatewayBridgeName = gatewayBridgeName;
+            return this;
+        }
     }
 }
diff --git a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNode.java b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNode.java
index 382c662..90d3400 100644
--- a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNode.java
+++ b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtNode.java
@@ -39,6 +39,11 @@
          * Signifies that this is a kubevirt worker node.
          */
         WORKER,
+
+        /**
+         * Signifies that this is a gateway which is running on master node.
+         */
+        GATEWAY,
     }
 
     /**
@@ -157,6 +162,13 @@
     PortNumber genevePort();
 
     /**
+     * Returns the name of the gateway bridge.
+     *
+     * @return gateway bridge name
+     */
+    String gatewayBridgeName();
+
+    /**
      * Builder of new node entity.
      */
     interface Builder {
@@ -238,5 +250,13 @@
          * @return kubevirt node builder
          */
         KubevirtNode.Builder state(KubevirtNodeState state);
+
+        /**
+         * Returns kubevirt node builder with supplied gateway bridge name.
+         *
+         * @param gatewayBridgeName gateway bridge name
+         * @return kubevirt node builder
+         */
+        KubevirtNode.Builder gatewayBridgeName(String gatewayBridgeName);
     }
 }