Initial support GRE tunnel at SONA

Change-Id: I86536a3ed23d8df45e1dc4033c3068a4dfc9ec73
diff --git a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/Constants.java b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/Constants.java
index b7ca1f5..0422c65 100644
--- a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/Constants.java
+++ b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/Constants.java
@@ -26,7 +26,8 @@
     public static final String INTEGRATION_BRIDGE = "br-int";
     public static final String TUNNEL_BRIDGE = "br-tun";
     public static final String ROUTER_BRIDGE = "br-router";
-    public static final String DEFAULT_TUNNEL = "vxlan";
+    public static final String VXLAN_TUNNEL = "vxlan";
+    public static final String GRE_TUNNEL = "gre";
     public static final String PATCH_INTG_BRIDGE = "patch-intg";
     public static final String PATCH_ROUT_BRIDGE = "patch-rout";
     public static final String GATEWAY = "GATEWAY";
diff --git a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java
index ca4734e..1ea5942 100644
--- a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java
+++ b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java
@@ -35,7 +35,8 @@
 import static com.google.common.base.Preconditions.checkArgument;
 import static org.onosproject.net.AnnotationKeys.PORT_MAC;
 import static org.onosproject.net.AnnotationKeys.PORT_NAME;
-import static org.onosproject.openstacknode.api.Constants.DEFAULT_TUNNEL;
+import static org.onosproject.openstacknode.api.Constants.GRE_TUNNEL;
+import static org.onosproject.openstacknode.api.Constants.VXLAN_TUNNEL;
 import static org.onosproject.openstacknode.api.Constants.PATCH_INTG_BRIDGE;
 
 /**
@@ -185,15 +186,26 @@
         return port != null ? port.number() : null;
 
     }
+
     @Override
-    public PortNumber tunnelPortNum() {
+    public PortNumber vxlanTunnelPortNum() {
+        return tunnelPortNum(VXLAN_TUNNEL);
+    }
+
+    @Override
+    public PortNumber greTunnelPortNum() {
+        return tunnelPortNum(GRE_TUNNEL);
+
+    }
+
+    private PortNumber tunnelPortNum(String tunnelType) {
         if (dataIp == null) {
             return null;
         }
         DeviceService deviceService = DefaultServiceDirectory.getService(DeviceService.class);
         Port port = deviceService.getPorts(intgBridge).stream()
                 .filter(p -> p.isEnabled() &&
-                        Objects.equals(p.annotations().value(PORT_NAME), DEFAULT_TUNNEL))
+                        Objects.equals(p.annotations().value(PORT_NAME), tunnelType))
                 .findAny().orElse(null);
         return port != null ? port.number() : null;
     }
diff --git a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
index a2000ee..63f8ef2 100644
--- a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
+++ b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
@@ -30,16 +30,6 @@
 public interface OpenstackNode {
 
     /**
-     * List of valid network modes.
-     * This includes both physical and virtual network types.
-     */
-    enum NetworkMode {
-        VXLAN,
-        VLAN,
-        FLAT
-    }
-
-    /**
      * List of valid node types.
      */
     enum NodeType {
@@ -105,11 +95,18 @@
     NodeState state();
 
     /**
-     * Returns the tunnel port number.
+     * Returns the GRE tunnel port number.
      *
-     * @return port number; null if tunnel port does not exist
+     * @return GRE port number; null if the GRE tunnel port does not exist
      */
-    PortNumber tunnelPortNum();
+    PortNumber greTunnelPortNum();
+
+    /**
+     * Returns the VXLAN tunnel port number.
+     *
+     * @return VXLAN port number; null if tunnel port does not exist
+     */
+    PortNumber vxlanTunnelPortNum();
 
     /**
      * Returns the vlan port number.