Fixed to add gateway node from ICMP handler also

And made the gateway store or group update synchronized

Change-Id: I10fc391e9059772e5da8322997a994db26a096b3
This commit is contained in:
Hyunsun Moon 2016-08-03 12:23:14 -07:00 committed by Gerrit Code Review
parent bd09d6e07e
commit 5aa480be45
4 changed files with 32 additions and 19 deletions

View File

@ -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:

View File

@ -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:

View File

@ -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:

View File

@ -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);