ONOS-4660 Additional GATEWAY type node bootstrap
- Add uplink interface to the router bridge
- Set separate controller for the router bridge
- Use OVSDB provider to check the ports list and keep OVSDB session
Limitation:
OVSDB provider does not provide port or bridge updates, that is,
any changes on the router bridge may not be detected by ONOS
Change-Id: I1f17f4fb2c050afdbda1e5ffc06f6485903d3d90
diff --git a/apps/openstacknode/src/main/java/org/onosproject/openstacknode/OpenstackNodeConfig.java b/apps/openstacknode/src/main/java/org/onosproject/openstacknode/OpenstackNodeConfig.java
index ea2d30d..c20e678 100644
--- a/apps/openstacknode/src/main/java/org/onosproject/openstacknode/OpenstackNodeConfig.java
+++ b/apps/openstacknode/src/main/java/org/onosproject/openstacknode/OpenstackNodeConfig.java
@@ -40,7 +40,12 @@
private static final String MANAGEMENT_IP = "managementIp";
private static final String DATA_IP = "dataIp";
private static final String INTEGRATION_BRIDGE = "integrationBridge";
+
+ // GATEWAY node specific fields
private static final String ROUTER_BRIDGE = "routerBridge";
+ private static final String UPLINK_PORT_NAME = "uplinkPort";
+ // TODO remove this when vRouter supports multiple switches
+ private static final String ROUTER_CONTROLLER = "routerController";
@Override
public boolean isValid() {
@@ -59,7 +64,9 @@
MANAGEMENT_IP,
DATA_IP,
INTEGRATION_BRIDGE,
- ROUTER_BRIDGE
+ ROUTER_BRIDGE,
+ UPLINK_PORT_NAME,
+ ROUTER_CONTROLLER
);
result &= isString(osNode, HOST_NAME, MANDATORY);
@@ -74,6 +81,8 @@
if (osNode.get(TYPE).asText().equals(GATEWAY.name())) {
result &= isString(osNode, ROUTER_BRIDGE, MANDATORY);
DeviceId.deviceId(osNode.get(ROUTER_BRIDGE).asText());
+ result &= isString(osNode, UPLINK_PORT_NAME, MANDATORY);
+ result &= isIpAddress(osNode, ROUTER_CONTROLLER, MANDATORY);
}
}
return result;
@@ -97,7 +106,9 @@
.hostname(get(node, HOST_NAME));
if (type.equals(GATEWAY)) {
- nodeBuilder.routerBridge(DeviceId.deviceId(get(node, ROUTER_BRIDGE)));
+ nodeBuilder.routerBridge(DeviceId.deviceId(get(node, ROUTER_BRIDGE)))
+ .uplink(get(node, UPLINK_PORT_NAME))
+ .routerController(IpAddress.valueOf(get(node, ROUTER_CONTROLLER)));
}
nodes.add(nodeBuilder.build());
}