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 {
case COMPLETE:
if (node.type() == GATEWAY) {
log.info("GATEWAY node {} detected", node.hostname());
GatewayNode gnode = GatewayNode.builder()
.gatewayDeviceId(node.intBridge())
.dataIpAddress(node.dataIp().getIp4Address())
.uplinkIntf(node.externalPortName().get())
.build();
gatewayService.addGatewayNode(gnode);
eventExecutor.execute(OpenstackFloatingIpManager.this::reloadFloatingIpRules);
eventExecutor.execute(() -> {
GatewayNode gnode = GatewayNode.builder()
.gatewayDeviceId(node.intBridge())
.dataIpAddress(node.dataIp().getIp4Address())
.uplinkIntf(node.externalPortName().get())
.build();
gatewayService.addGatewayNode(gnode);
reloadFloatingIpRules();
});
}
break;
case INIT:
......
......@@ -49,6 +49,7 @@ import org.onosproject.openstacknode.OpenstackNode;
import org.onosproject.openstacknode.OpenstackNodeEvent;
import org.onosproject.openstacknode.OpenstackNodeListener;
import org.onosproject.openstacknode.OpenstackNodeService;
import org.onosproject.scalablegateway.api.GatewayNode;
import org.onosproject.scalablegateway.api.ScalableGatewayService;
import org.slf4j.Logger;
......@@ -322,7 +323,15 @@ public class OpenstackIcmpHandler {
case COMPLETE:
if (node.type() == GATEWAY) {
log.info("GATEWAY node {} detected", node.hostname());
eventExecutor.execute(() -> requestPacket(appId));
eventExecutor.execute(() -> {
GatewayNode gnode = GatewayNode.builder()
.gatewayDeviceId(node.intBridge())
.dataIpAddress(node.dataIp().getIp4Address())
.uplinkIntf(node.externalPortName().get())
.build();
gatewayService.addGatewayNode(gnode);
requestPacket(appId);
});
}
break;
case INIT:
......
......@@ -481,15 +481,17 @@ public class OpenstackRoutingManager extends AbstractVmHandler implements Openst
switch (event.type()) {
case COMPLETE:
log.info("COMPLETE node {} detected", node.hostname());
if (node.type() == GATEWAY) {
GatewayNode gnode = GatewayNode.builder()
.gatewayDeviceId(node.intBridge())
.dataIpAddress(node.dataIp().getIp4Address())
.uplinkIntf(node.externalPortName().get())
.build();
gatewayService.addGatewayNode(gnode);
}
eventExecutor.execute(OpenstackRoutingManager.this::reloadRoutingRules);
eventExecutor.execute(() -> {
if (node.type() == GATEWAY) {
GatewayNode gnode = GatewayNode.builder()
.gatewayDeviceId(node.intBridge())
.dataIpAddress(node.dataIp().getIp4Address())
.uplinkIntf(node.externalPortName().get())
.build();
gatewayService.addGatewayNode(gnode);
}
reloadRoutingRules();
});
break;
case INIT:
case DEVICE_CREATED:
......
......@@ -208,7 +208,7 @@ public class ScalableGatewayManager implements ScalableGatewayService {
}
@Override
public boolean addGatewayNode(GatewayNode gatewayNode) {
public synchronized boolean addGatewayNode(GatewayNode gatewayNode) {
Versioned<GatewayNode> existingNode = gatewayNodeMap.putIfAbsent(
gatewayNode.getGatewayDeviceId(), gatewayNode);
if (existingNode == null) {
......@@ -221,7 +221,7 @@ public class ScalableGatewayManager implements ScalableGatewayService {
}
@Override
public boolean deleteGatewayNode(GatewayNode gatewayNode) {
public synchronized boolean deleteGatewayNode(GatewayNode gatewayNode) {
boolean result = gatewayNodeMap.remove(gatewayNode.getGatewayDeviceId(), gatewayNode);
if (result) {
updateGatewayGroup(gatewayNode, false);
......