Fixes OpenstackRoutingFloatingIpHandler don't create illegal rules in case of multiple gateway nodes.

Change-Id: I7dd8f3e117b53a8318882ab89a0923964306c9c2
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingFloatingIpHandler.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingFloatingIpHandler.java
index bd38cd3..4c4e599 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingFloatingIpHandler.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingFloatingIpHandler.java
@@ -274,26 +274,25 @@
         }
 
         IpAddress floating = IpAddress.valueOf(floatingIp.getFloatingIpAddress());
-        TrafficSelector.Builder externalSelectorBuilder = DefaultTrafficSelector.builder()
-                .matchEthType(Ethernet.TYPE_IPV4)
-                .matchIPDst(floating.toIpPrefix());
-
-        TrafficTreatment.Builder externalBuilder = DefaultTrafficTreatment.builder()
-                .setEthSrc(Constants.DEFAULT_GATEWAY_MAC)
-                .setEthDst(instPort.macAddress())
-                .setIpDst(instPort.ipAddress().getIp4Address());
-
-        if (!externalPeerRouter.externalPeerRouterVlanId().equals(VlanId.NONE)) {
-            externalSelectorBuilder.matchVlanId(externalPeerRouter.externalPeerRouterVlanId()).build();
-            externalBuilder.popVlan();
-        }
 
         osNodeService.completeNodes(GATEWAY).forEach(gNode -> {
+            TrafficSelector.Builder externalSelectorBuilder = DefaultTrafficSelector.builder()
+                    .matchEthType(Ethernet.TYPE_IPV4)
+                    .matchIPDst(floating.toIpPrefix());
 
+            TrafficTreatment.Builder externalTreatmentBuilder = DefaultTrafficTreatment.builder()
+                    .setEthSrc(Constants.DEFAULT_GATEWAY_MAC)
+                    .setEthDst(instPort.macAddress())
+                    .setIpDst(instPort.ipAddress().getIp4Address());
+
+            if (!externalPeerRouter.externalPeerRouterVlanId().equals(VlanId.NONE)) {
+                externalSelectorBuilder.matchVlanId(externalPeerRouter.externalPeerRouterVlanId()).build();
+                externalTreatmentBuilder.popVlan();
+            }
 
             switch (osNet.getNetworkType()) {
                 case VXLAN:
-                    externalBuilder.setTunnelId(Long.valueOf(osNet.getProviderSegID()))
+                    externalTreatmentBuilder.setTunnelId(Long.valueOf(osNet.getProviderSegID()))
                             .extension(buildExtension(
                                     deviceService,
                                     gNode.intgBridge(),
@@ -302,7 +301,7 @@
                             .setOutput(gNode.tunnelPortNum());
                     break;
                 case VLAN:
-                    externalBuilder.pushVlan()
+                    externalTreatmentBuilder.pushVlan()
                             .setVlanId(VlanId.vlanId(osNet.getProviderSegID()))
                             .setOutput(gNode.vlanPortNum());
                     break;
@@ -316,7 +315,7 @@
                     appId,
                     gNode.intgBridge(),
                     externalSelectorBuilder.build(),
-                    externalBuilder.build(),
+                    externalTreatmentBuilder.build(),
                     PRIORITY_FLOATING_EXTERNAL,
                     GW_COMMON_TABLE,
                     install);