Hyunsun Moon
Committed by Gerrit Code Review

Fixed to add gateway node from ICMP handler also

And made the gateway store or group update synchronized

Change-Id: I10fc391e9059772e5da8322997a994db26a096b3
...@@ -309,13 +309,15 @@ public class OpenstackFloatingIpManager implements OpenstackFloatingIpService { ...@@ -309,13 +309,15 @@ public class OpenstackFloatingIpManager implements OpenstackFloatingIpService {
309 case COMPLETE: 309 case COMPLETE:
310 if (node.type() == GATEWAY) { 310 if (node.type() == GATEWAY) {
311 log.info("GATEWAY node {} detected", node.hostname()); 311 log.info("GATEWAY node {} detected", node.hostname());
312 + eventExecutor.execute(() -> {
312 GatewayNode gnode = GatewayNode.builder() 313 GatewayNode gnode = GatewayNode.builder()
313 .gatewayDeviceId(node.intBridge()) 314 .gatewayDeviceId(node.intBridge())
314 .dataIpAddress(node.dataIp().getIp4Address()) 315 .dataIpAddress(node.dataIp().getIp4Address())
315 .uplinkIntf(node.externalPortName().get()) 316 .uplinkIntf(node.externalPortName().get())
316 .build(); 317 .build();
317 gatewayService.addGatewayNode(gnode); 318 gatewayService.addGatewayNode(gnode);
318 - eventExecutor.execute(OpenstackFloatingIpManager.this::reloadFloatingIpRules); 319 + reloadFloatingIpRules();
320 + });
319 } 321 }
320 break; 322 break;
321 case INIT: 323 case INIT:
......
...@@ -49,6 +49,7 @@ import org.onosproject.openstacknode.OpenstackNode; ...@@ -49,6 +49,7 @@ import org.onosproject.openstacknode.OpenstackNode;
49 import org.onosproject.openstacknode.OpenstackNodeEvent; 49 import org.onosproject.openstacknode.OpenstackNodeEvent;
50 import org.onosproject.openstacknode.OpenstackNodeListener; 50 import org.onosproject.openstacknode.OpenstackNodeListener;
51 import org.onosproject.openstacknode.OpenstackNodeService; 51 import org.onosproject.openstacknode.OpenstackNodeService;
52 +import org.onosproject.scalablegateway.api.GatewayNode;
52 import org.onosproject.scalablegateway.api.ScalableGatewayService; 53 import org.onosproject.scalablegateway.api.ScalableGatewayService;
53 import org.slf4j.Logger; 54 import org.slf4j.Logger;
54 55
...@@ -322,7 +323,15 @@ public class OpenstackIcmpHandler { ...@@ -322,7 +323,15 @@ public class OpenstackIcmpHandler {
322 case COMPLETE: 323 case COMPLETE:
323 if (node.type() == GATEWAY) { 324 if (node.type() == GATEWAY) {
324 log.info("GATEWAY node {} detected", node.hostname()); 325 log.info("GATEWAY node {} detected", node.hostname());
325 - eventExecutor.execute(() -> requestPacket(appId)); 326 + eventExecutor.execute(() -> {
327 + GatewayNode gnode = GatewayNode.builder()
328 + .gatewayDeviceId(node.intBridge())
329 + .dataIpAddress(node.dataIp().getIp4Address())
330 + .uplinkIntf(node.externalPortName().get())
331 + .build();
332 + gatewayService.addGatewayNode(gnode);
333 + requestPacket(appId);
334 + });
326 } 335 }
327 break; 336 break;
328 case INIT: 337 case INIT:
......
...@@ -481,6 +481,7 @@ public class OpenstackRoutingManager extends AbstractVmHandler implements Openst ...@@ -481,6 +481,7 @@ public class OpenstackRoutingManager extends AbstractVmHandler implements Openst
481 switch (event.type()) { 481 switch (event.type()) {
482 case COMPLETE: 482 case COMPLETE:
483 log.info("COMPLETE node {} detected", node.hostname()); 483 log.info("COMPLETE node {} detected", node.hostname());
484 + eventExecutor.execute(() -> {
484 if (node.type() == GATEWAY) { 485 if (node.type() == GATEWAY) {
485 GatewayNode gnode = GatewayNode.builder() 486 GatewayNode gnode = GatewayNode.builder()
486 .gatewayDeviceId(node.intBridge()) 487 .gatewayDeviceId(node.intBridge())
...@@ -489,7 +490,8 @@ public class OpenstackRoutingManager extends AbstractVmHandler implements Openst ...@@ -489,7 +490,8 @@ public class OpenstackRoutingManager extends AbstractVmHandler implements Openst
489 .build(); 490 .build();
490 gatewayService.addGatewayNode(gnode); 491 gatewayService.addGatewayNode(gnode);
491 } 492 }
492 - eventExecutor.execute(OpenstackRoutingManager.this::reloadRoutingRules); 493 + reloadRoutingRules();
494 + });
493 break; 495 break;
494 case INIT: 496 case INIT:
495 case DEVICE_CREATED: 497 case DEVICE_CREATED:
......
...@@ -208,7 +208,7 @@ public class ScalableGatewayManager implements ScalableGatewayService { ...@@ -208,7 +208,7 @@ public class ScalableGatewayManager implements ScalableGatewayService {
208 } 208 }
209 209
210 @Override 210 @Override
211 - public boolean addGatewayNode(GatewayNode gatewayNode) { 211 + public synchronized boolean addGatewayNode(GatewayNode gatewayNode) {
212 Versioned<GatewayNode> existingNode = gatewayNodeMap.putIfAbsent( 212 Versioned<GatewayNode> existingNode = gatewayNodeMap.putIfAbsent(
213 gatewayNode.getGatewayDeviceId(), gatewayNode); 213 gatewayNode.getGatewayDeviceId(), gatewayNode);
214 if (existingNode == null) { 214 if (existingNode == null) {
...@@ -221,7 +221,7 @@ public class ScalableGatewayManager implements ScalableGatewayService { ...@@ -221,7 +221,7 @@ public class ScalableGatewayManager implements ScalableGatewayService {
221 } 221 }
222 222
223 @Override 223 @Override
224 - public boolean deleteGatewayNode(GatewayNode gatewayNode) { 224 + public synchronized boolean deleteGatewayNode(GatewayNode gatewayNode) {
225 boolean result = gatewayNodeMap.remove(gatewayNode.getGatewayDeviceId(), gatewayNode); 225 boolean result = gatewayNodeMap.remove(gatewayNode.getGatewayDeviceId(), gatewayNode);
226 if (result) { 226 if (result) {
227 updateGatewayGroup(gatewayNode, false); 227 updateGatewayGroup(gatewayNode, false);
......