[ONOS-7444] Optimize SONA gw doesn't use vrouter app and quagga anymore

Change-Id: I70fd7a9dbe219a9ea6081d0f19bf051a1bee090a
diff --git a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandlerTest.java b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandlerTest.java
index b748bb8..a55cb25 100644
--- a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandlerTest.java
+++ b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandlerTest.java
@@ -40,7 +40,6 @@
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreServiceAdapter;
 import org.onosproject.core.DefaultApplicationId;
-import org.onosproject.core.GroupId;
 import org.onosproject.net.Annotations;
 import org.onosproject.net.DefaultAnnotations;
 import org.onosproject.net.DefaultDevice;
@@ -70,14 +69,6 @@
 import org.onosproject.net.flow.instructions.ExtensionPropertyException;
 import org.onosproject.net.flow.instructions.ExtensionTreatment;
 import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
-import org.onosproject.net.group.DefaultGroup;
-import org.onosproject.net.group.Group;
-import org.onosproject.net.group.GroupBuckets;
-import org.onosproject.net.group.GroupDescription;
-import org.onosproject.net.group.GroupEvent;
-import org.onosproject.net.group.GroupKey;
-import org.onosproject.net.group.GroupListener;
-import org.onosproject.net.group.GroupService;
 import org.onosproject.net.provider.ProviderId;
 import org.onosproject.openstacknode.api.NodeState;
 import org.onosproject.openstacknode.api.OpenstackNode;
@@ -113,7 +104,6 @@
 import static org.onosproject.openstacknode.api.NodeState.DEVICE_CREATED;
 import static org.onosproject.openstacknode.api.NodeState.INCOMPLETE;
 import static org.onosproject.openstacknode.api.NodeState.INIT;
-import static org.onosproject.openstacknode.api.NodeState.PORT_CREATED;
 import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.COMPUTE;
 import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.GATEWAY;
 
@@ -145,38 +135,28 @@
     private static final String COMPUTE_1_HOSTNAME = "compute_1";
     private static final String COMPUTE_2_HOSTNAME = "compute_2";
     private static final String COMPUTE_3_HOSTNAME = "compute_3";
-    private static final String COMPUTE_4_HOSTNAME = "compute_4";
     private static final String GATEWAY_1_HOSTNAME = "gateway_1";
     private static final String GATEWAY_2_HOSTNAME = "gateway_2";
     private static final String GATEWAY_3_HOSTNAME = "gateway_3";
-    private static final String GATEWAY_4_HOSTNAME = "gateway_4";
 
     private static final IpAddress COMPUTE_1_IP = IpAddress.valueOf("10.100.0.1");
     private static final IpAddress COMPUTE_2_IP = IpAddress.valueOf("10.100.0.2");
     private static final IpAddress COMPUTE_3_IP = IpAddress.valueOf("10.100.0.3");
-    private static final IpAddress COMPUTE_4_IP = IpAddress.valueOf("10.100.0.4");
     private static final IpAddress GATEWAY_1_IP = IpAddress.valueOf("10.100.0.5");
     private static final IpAddress GATEWAY_2_IP = IpAddress.valueOf("10.100.0.6");
     private static final IpAddress GATEWAY_3_IP = IpAddress.valueOf("10.100.0.7");
-    private static final IpAddress GATEWAY_4_IP = IpAddress.valueOf("10.100.0.8");
+
+    private static final String GATEWAY_UPLINK_PORT = "eth0";
 
     private static final Device COMPUTE_1_INTG_DEVICE = createOpenFlowDevice(1, INTEGRATION_BRIDGE);
     private static final Device COMPUTE_2_INTG_DEVICE = createOpenFlowDevice(2, INTEGRATION_BRIDGE);
     private static final Device COMPUTE_3_INTG_DEVICE = createOpenFlowDevice(3, INTEGRATION_BRIDGE);
-    private static final Device COMPUTE_4_INTG_DEVICE = createOpenFlowDevice(4, INTEGRATION_BRIDGE);
-    private static final Device GATEWAY_1_INTG_DEVICE = createOpenFlowDevice(5, INTEGRATION_BRIDGE);
-    private static final Device GATEWAY_1_ROUT_DEVICE = createOpenFlowDevice(6, ROUTER_BRIDGE);
-    private static final Device GATEWAY_2_INTG_DEVICE = createOpenFlowDevice(7, INTEGRATION_BRIDGE);
-    private static final Device GATEWAY_2_ROUT_DEVICE = createOpenFlowDevice(8, ROUTER_BRIDGE);
-    private static final Device GATEWAY_3_INTG_DEVICE = createOpenFlowDevice(9, INTEGRATION_BRIDGE);
-    private static final Device GATEWAY_3_ROUT_DEVICE = createOpenFlowDevice(10, ROUTER_BRIDGE);
-    private static final Device GATEWAY_4_INTG_DEVICE = createOpenFlowDevice(11, INTEGRATION_BRIDGE);
-    private static final Device GATEWAY_4_ROUT_DEVICE = createOpenFlowDevice(12, ROUTER_BRIDGE);
+    private static final Device GATEWAY_1_INTG_DEVICE = createOpenFlowDevice(4, INTEGRATION_BRIDGE);
+    private static final Device GATEWAY_2_INTG_DEVICE = createOpenFlowDevice(5, INTEGRATION_BRIDGE);
+    private static final Device GATEWAY_3_INTG_DEVICE = createOpenFlowDevice(6, INTEGRATION_BRIDGE);
 
     private static final Device COMPUTE_1_OVSDB_DEVICE = createOvsdbDevice(COMPUTE_1_IP);
     private static final Device COMPUTE_2_OVSDB_DEVICE = createOvsdbDevice(COMPUTE_2_IP);
-    private static final Device COMPUTE_3_OVSDB_DEVICE = createOvsdbDevice(COMPUTE_3_IP);
-    private static final Device COMPUTE_4_OVSDB_DEVICE = createOvsdbDevice(COMPUTE_4_IP);
     private static final Device GATEWAY_1_OVSDB_DEVICE = createOvsdbDevice(GATEWAY_1_IP);
     private static final Device GATEWAY_2_OVSDB_DEVICE = createOvsdbDevice(GATEWAY_2_IP);
 
@@ -201,14 +181,6 @@
             COMPUTE,
             COMPUTE_3_INTG_DEVICE,
             COMPUTE_3_IP,
-            PORT_CREATED
-    );
-
-    private static final OpenstackNode COMPUTE_4 = createNode(
-            COMPUTE_4_HOSTNAME,
-            COMPUTE,
-            COMPUTE_4_INTG_DEVICE,
-            COMPUTE_4_IP,
             COMPLETE
     );
 
@@ -216,8 +188,8 @@
             GATEWAY_1_HOSTNAME,
             GATEWAY,
             GATEWAY_1_INTG_DEVICE,
-            GATEWAY_1_ROUT_DEVICE,
             GATEWAY_1_IP,
+            GATEWAY_UPLINK_PORT,
             INIT
     );
 
@@ -225,8 +197,8 @@
             GATEWAY_2_HOSTNAME,
             GATEWAY,
             GATEWAY_2_INTG_DEVICE,
-            GATEWAY_2_ROUT_DEVICE,
             GATEWAY_2_IP,
+            GATEWAY_UPLINK_PORT,
             DEVICE_CREATED
     );
 
@@ -234,17 +206,8 @@
             GATEWAY_3_HOSTNAME,
             GATEWAY,
             GATEWAY_3_INTG_DEVICE,
-            GATEWAY_3_ROUT_DEVICE,
             GATEWAY_3_IP,
-            PORT_CREATED
-    );
-
-    private static final OpenstackNode GATEWAY_4 = createNode(
-            GATEWAY_4_HOSTNAME,
-            GATEWAY,
-            GATEWAY_4_INTG_DEVICE,
-            GATEWAY_4_ROUT_DEVICE,
-            GATEWAY_4_IP,
+            GATEWAY_UPLINK_PORT,
             COMPLETE
     );
 
@@ -280,7 +243,6 @@
         target.deviceService = TEST_DEVICE_SERVICE;
         target.deviceAdminService = mockDeviceAdminService;
         target.ovsdbController = mockOvsdbController;
-        target.groupService = new TestGroupService();
         target.osNodeService = testNodeManager;
         target.osNodeAdminService = testNodeManager;
         target.componentConfigService = new TestComponentConfigService();
@@ -341,7 +303,7 @@
         assertEquals(ERR_STATE_NOT_MATCH, DEVICE_CREATED,
                 testNodeManager.node(COMPUTE_2_HOSTNAME).state());
         target.processDeviceCreatedState(COMPUTE_2);
-        assertEquals(ERR_STATE_NOT_MATCH, PORT_CREATED,
+        assertEquals(ERR_STATE_NOT_MATCH, COMPLETE,
                 testNodeManager.node(COMPUTE_2_HOSTNAME).state());
     }
 
@@ -354,69 +316,28 @@
         testNodeManager.createNode(GATEWAY_2);
         TEST_DEVICE_SERVICE.devMap.put(GATEWAY_2_OVSDB_DEVICE.id(), GATEWAY_2_OVSDB_DEVICE);
         TEST_DEVICE_SERVICE.devMap.put(GATEWAY_2_INTG_DEVICE.id(), GATEWAY_2_INTG_DEVICE);
+        TEST_DEVICE_SERVICE.portList.add(createPort(GATEWAY_2_INTG_DEVICE, GATEWAY_UPLINK_PORT));
 
         assertEquals(ERR_STATE_NOT_MATCH, DEVICE_CREATED,
                 testNodeManager.node(GATEWAY_2_HOSTNAME).state());
         target.processDeviceCreatedState(GATEWAY_2);
-        assertEquals(ERR_STATE_NOT_MATCH, PORT_CREATED,
+        assertEquals(ERR_STATE_NOT_MATCH, COMPLETE,
                 testNodeManager.node(GATEWAY_2_HOSTNAME).state());
     }
 
     /**
-     * Checks if the compute node state changes from PORT_CREATED to
-     * COMPLETE after processing PORT_CREATED state.
-     */
-    @Test
-    public void testComputeNodeProcessPortCreatedState() {
-        testNodeManager.createNode(COMPUTE_3);
-        TEST_DEVICE_SERVICE.devMap.put(COMPUTE_3_OVSDB_DEVICE.id(), COMPUTE_3_OVSDB_DEVICE);
-        TEST_DEVICE_SERVICE.devMap.put(COMPUTE_3_INTG_DEVICE.id(), COMPUTE_3_INTG_DEVICE);
-        TEST_DEVICE_SERVICE.portList.add(createPort(COMPUTE_3_INTG_DEVICE, DEFAULT_TUNNEL));
-
-        testNodeManager.createNode(GATEWAY_4);
-        TEST_DEVICE_SERVICE.devMap.put(GATEWAY_4_INTG_DEVICE.id(), GATEWAY_4_INTG_DEVICE);
-
-        assertEquals(ERR_STATE_NOT_MATCH, PORT_CREATED,
-                testNodeManager.node(COMPUTE_3_HOSTNAME).state());
-        target.processPortCreatedState(COMPUTE_3);
-        assertEquals(ERR_STATE_NOT_MATCH, COMPLETE,
-                testNodeManager.node(COMPUTE_3_HOSTNAME).state());
-    }
-
-    /**
-     * Checks if the gateway node state changes from PORT_CREATED to
-     * COMPLETE after processing PORT_CREATED state.
-     */
-    @Test
-    public void testGatewayNodeProcessPortCreatedState() {
-        testNodeManager.createNode(COMPUTE_4);
-        TEST_DEVICE_SERVICE.devMap.put(COMPUTE_4_OVSDB_DEVICE.id(), COMPUTE_4_OVSDB_DEVICE);
-        TEST_DEVICE_SERVICE.devMap.put(COMPUTE_4_INTG_DEVICE.id(), COMPUTE_4_INTG_DEVICE);
-        TEST_DEVICE_SERVICE.portList.add(createPort(COMPUTE_4_INTG_DEVICE, DEFAULT_TUNNEL));
-
-        testNodeManager.createNode(GATEWAY_3);
-        TEST_DEVICE_SERVICE.devMap.put(GATEWAY_3_INTG_DEVICE.id(), GATEWAY_4_INTG_DEVICE);
-
-        assertEquals(ERR_STATE_NOT_MATCH, PORT_CREATED,
-                testNodeManager.node(GATEWAY_3_HOSTNAME).state());
-        target.processPortCreatedState(GATEWAY_3);
-        assertEquals(ERR_STATE_NOT_MATCH, COMPLETE,
-                testNodeManager.node(GATEWAY_3_HOSTNAME).state());
-    }
-
-    /**
      * Checks if the compute node state changes from COMPLETE to INCOMPLETE
      * when integration bridge is disconnected.
      */
     @Test
     public void testBackToIncompleteWhenBrIntDisconnected() {
-        testNodeManager.createNode(COMPUTE_4);
+        testNodeManager.createNode(COMPUTE_3);
 
         assertEquals(ERR_STATE_NOT_MATCH, COMPLETE,
-                testNodeManager.node(COMPUTE_4_HOSTNAME).state());
-        TEST_DEVICE_SERVICE.removeDevice(COMPUTE_4_INTG_DEVICE);
+                testNodeManager.node(COMPUTE_3_HOSTNAME).state());
+        TEST_DEVICE_SERVICE.removeDevice(COMPUTE_3_INTG_DEVICE);
         assertEquals(ERR_STATE_NOT_MATCH, INCOMPLETE,
-                testNodeManager.node(COMPUTE_4_HOSTNAME).state());
+                testNodeManager.node(COMPUTE_3_HOSTNAME).state());
     }
 
     /**
@@ -425,14 +346,14 @@
      */
     @Test
     public void testBackToIncompleteWhenVxlanRemoved() {
-        testNodeManager.createNode(COMPUTE_4);
+        testNodeManager.createNode(COMPUTE_3);
 
         assertEquals(ERR_STATE_NOT_MATCH, COMPLETE,
-                testNodeManager.node(COMPUTE_4_HOSTNAME).state());
-        TEST_DEVICE_SERVICE.removePort(COMPUTE_4_INTG_DEVICE, createPort(
-                COMPUTE_4_INTG_DEVICE, DEFAULT_TUNNEL));
+                testNodeManager.node(COMPUTE_3_HOSTNAME).state());
+        TEST_DEVICE_SERVICE.removePort(COMPUTE_3_INTG_DEVICE, createPort(
+                COMPUTE_3_INTG_DEVICE, DEFAULT_TUNNEL));
         assertEquals(ERR_STATE_NOT_MATCH, INCOMPLETE,
-                testNodeManager.node(COMPUTE_4_HOSTNAME).state());
+                testNodeManager.node(COMPUTE_3_HOSTNAME).state());
 
     }
 
@@ -474,26 +395,24 @@
                 hostname,
                 type,
                 intgBridge.id(),
-                null,
                 ipAddr,
                 ipAddr,
-                null, state);
+                null, null, state);
     }
 
     private static OpenstackNode createNode(String hostname,
                                             OpenstackNode.NodeType type,
                                             Device intgBridge,
-                                            Device routerBridge,
                                             IpAddress ipAddr,
+                                            String uplinkPort,
                                             NodeState state) {
         return new TestOpenstackNode(
                 hostname,
                 type,
                 intgBridge.id(),
-                routerBridge.id(),
                 ipAddr,
                 ipAddr,
-                null, state);
+                null, uplinkPort, state);
     }
 
     private static final class TestDevice extends DefaultDevice {
@@ -546,18 +465,18 @@
         private TestOpenstackNode(String hostname,
                                   NodeType type,
                                   DeviceId intgBridge,
-                                  DeviceId routerBridge,
                                   IpAddress managementIp,
                                   IpAddress dataIp,
                                   String vlanIntf,
+                                  String uplinkPort,
                                   NodeState state) {
             super(hostname,
                     type,
                     intgBridge,
-                    routerBridge,
                     managementIp,
                     dataIp,
                     vlanIntf,
+                    uplinkPort,
                     state);
         }
 
@@ -572,11 +491,6 @@
         }
 
         @Override
-        public PortNumber patchPortNum() {
-            return PortNumber.portNumber(1);
-        }
-
-        @Override
         public MacAddress vlanPortMac() {
             return MacAddress.NONE;
         }
@@ -621,8 +535,7 @@
         public OpenstackNode node(DeviceId deviceId) {
             return osNodeMap.values().stream()
                     .filter(osNode -> Objects.equals(osNode.intgBridge(), deviceId) ||
-                            Objects.equals(osNode.ovsdb(), deviceId) ||
-                            Objects.equals(osNode.routerBridge(), deviceId))
+                            Objects.equals(osNode.ovsdb(), deviceId))
                     .findFirst().orElse(null);
         }
 
@@ -885,81 +798,6 @@
         }
     }
 
-    private static class TestGroupService implements GroupService {
-        Map<GroupKey, Group> groupMap = Maps.newHashMap();
-        Map<GroupKey, GroupBuckets> groupBucketsMap = Maps.newHashMap();
-        List<GroupListener> listeners = Lists.newArrayList();
-
-        @Override
-        public void addListener(GroupListener listener) {
-            listeners.add(listener);
-        }
-
-        @Override
-        public void removeListener(GroupListener listener) {
-            listeners.remove(listener);
-        }
-
-        @Override
-        public void addGroup(GroupDescription groupDesc) {
-            DefaultGroup group = new DefaultGroup(GroupId.valueOf(groupDesc.givenGroupId()), groupDesc);
-            group.setState(Group.GroupState.ADDED);
-            groupMap.put(groupDesc.appCookie(), group);
-            groupBucketsMap.put(groupDesc.appCookie(), groupDesc.buckets());
-
-            GroupEvent event = new GroupEvent(GroupEvent.Type.GROUP_ADDED, group);
-            listeners.stream().filter(listener -> listener.isRelevant(event))
-                    .forEach(listener -> listener.event(event));
-        }
-
-        @Override
-        public Group getGroup(DeviceId deviceId, GroupKey appCookie) {
-            return groupMap.get(appCookie);
-        }
-
-        @Override
-        public void addBucketsToGroup(DeviceId deviceId, GroupKey oldCookie, GroupBuckets buckets,
-                                      GroupKey newCookie, ApplicationId appId) {
-
-        }
-
-        @Override
-        public void removeBucketsFromGroup(DeviceId deviceId, GroupKey oldCookie, GroupBuckets buckets,
-                                           GroupKey newCookie, ApplicationId appId) {
-
-        }
-
-        @Override
-        public void purgeGroupEntries(DeviceId deviceId) {
-
-        }
-
-        @Override
-        public void removeGroup(DeviceId deviceId, GroupKey appCookie, ApplicationId appId) {
-
-        }
-
-        @Override
-        public Iterable<Group> getGroups(DeviceId deviceId, ApplicationId appId) {
-            return null;
-        }
-
-        @Override
-        public Iterable<Group> getGroups(DeviceId deviceId) {
-            return null;
-        }
-
-        @Override
-        public void setBucketsForGroup(DeviceId deviceId, GroupKey oldCookie, GroupBuckets buckets,
-                                       GroupKey newCookie, ApplicationId appId) {
-            groupBucketsMap.put(newCookie, buckets);
-            GroupEvent event = new GroupEvent(GroupEvent.Type.GROUP_UPDATED, groupMap.get(newCookie));
-            listeners.stream().filter(listener -> listener.isRelevant(event))
-                    .forEach(listener -> listener.event(event));
-        }
-
-    }
-
     private static class TestExtensionTreatment implements ExtensionTreatment {
         Ip4Address tunnelDst;