Add more comments and correct some typos in OpenstackNode
Change-Id: Ic70f39359b90bdecbb4ed0715dc5d2e00f7a4ffe
diff --git a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
index 2ecfefe..1b8316d 100644
--- a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
+++ b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
@@ -123,7 +123,7 @@
PortNumber tunnelPortNum();
/**
- * Returns the vlan port nubmer.
+ * Returns the vlan port number.
*
* @return port number; null if vlan port does not exist
*/
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNode.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNode.java
index f208529..8681008 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNode.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNode.java
@@ -52,8 +52,22 @@
private final String uplinkPort;
private final NodeState state;
+ private static final String NOT_NULL_MSG = "Node % cannot be null";
+
private static final String OVSDB = "ovsdb:";
+ /**
+ * A default constructor of Openstack Node.
+ *
+ * @param hostname hostname
+ * @param type node type
+ * @param intgBridge integration bridge
+ * @param managementIp management IP address
+ * @param dataIp data IP address
+ * @param vlanIntf VLAN interface
+ * @param uplinkPort uplink port name
+ * @param state node state
+ */
protected DefaultOpenstackNode(String hostname, NodeType type,
DeviceId intgBridge,
IpAddress managementIp,
@@ -279,6 +293,9 @@
.state(osNode.state());
}
+ /**
+ * A builder class for openstack Node.
+ */
public static final class Builder implements OpenstackNode.Builder {
private String hostname;
@@ -290,16 +307,17 @@
private String uplinkPort;
private NodeState state;
+ // private constructor not intended to use from external
private Builder() {
}
@Override
public DefaultOpenstackNode build() {
- checkArgument(hostname != null, "Node hostname cannot be null");
- checkArgument(type != null, "Node type cannot be null");
- checkArgument(intgBridge != null, "Node integration bridge cannot be null");
- checkArgument(managementIp != null, "Node management IP cannot be null");
- checkArgument(state != null, "Node state cannot be null");
+ checkArgument(hostname != null, NOT_NULL_MSG, "hostname");
+ checkArgument(type != null, NOT_NULL_MSG, "type");
+ checkArgument(intgBridge != null, NOT_NULL_MSG, "integration bridge");
+ checkArgument(managementIp != null, NOT_NULL_MSG, "management IP");
+ checkArgument(state != null, NOT_NULL_MSG, "state");
if (type == NodeType.GATEWAY && uplinkPort == null) {
throw new IllegalArgumentException("Uplink port is required for gateway node");
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandler.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandler.java
index 7b8cda1..397ff37 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandler.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandler.java
@@ -208,7 +208,7 @@
addSystemInterface(osNode, INTEGRATION_BRIDGE, osNode.vlanIntf());
}
} catch (Exception e) {
- log.error("Exception occured because of {}", e.toString());
+ log.error("Exception occurred because of {}", e.toString());
}
}
@@ -226,6 +226,13 @@
//TODO
}
+ /**
+ * Checks whether the controller has a connection with an OVSDB that resides
+ * inside the given openstack node.
+ *
+ * @param osNode openstack node
+ * @return true if the controller is connected to the OVSDB, false otherwise
+ */
private boolean isOvsdbConnected(OpenstackNode osNode) {
OvsdbNodeId ovsdb = new OvsdbNodeId(osNode.managementIp(), ovsdbPort);
OvsdbClientService client = ovsdbController.getOvsdbClient(ovsdb);
@@ -234,6 +241,13 @@
client.isConnected();
}
+ /**
+ * Creates a bridge with a given name on a given openstack node.
+ *
+ * @param osNode openstack node
+ * @param bridgeName bridge name
+ * @param deviceId device identifier
+ */
private void createBridge(OpenstackNode osNode, String bridgeName, DeviceId deviceId) {
Device device = deviceService.getDevice(osNode.ovsdb());
if (device == null || !device.is(BridgeConfig.class)) {
@@ -263,6 +277,13 @@
bridgeConfig.addBridge(bridgeDesc);
}
+ /**
+ * Adds a network interface (aka port) into a given bridge of openstack node.
+ *
+ * @param osNode openstack node
+ * @param bridgeName bridge name
+ * @param intfName interface name
+ */
private void addSystemInterface(OpenstackNode osNode, String bridgeName, String intfName) {
Device device = deviceService.getDevice(osNode.ovsdb());
if (device == null || !device.is(BridgeConfig.class)) {
@@ -272,6 +293,11 @@
bridgeConfig.addPort(BridgeName.bridgeName(bridgeName), intfName);
}
+ /**
+ * Creates a tunnel interface in a given openstack node.
+ *
+ * @param osNode openstack node
+ */
private void createTunnelInterface(OpenstackNode osNode) {
if (isIntfEnabled(osNode, DEFAULT_TUNNEL)) {
return;
@@ -317,6 +343,13 @@
}
}
+ /**
+ * Checks whether a given network interface in a given openstack node is enabled or not.
+ *
+ * @param osNode openstack node
+ * @param intf network interface name
+ * @return true if the given interface is enabled, false otherwise
+ */
private boolean isIntfEnabled(OpenstackNode osNode, String intf) {
if (!deviceService.isAvailable(osNode.intgBridge())) {
return false;
@@ -327,6 +360,12 @@
port.isEnabled());
}
+ /**
+ * Checks whether all requirements for this state are fulfilled or not.
+ *
+ * @param osNode openstack node
+ * @return true if all requirements are fulfilled, false otherwise
+ */
private boolean isCurrentStateDone(OpenstackNode osNode) {
switch (osNode.state()) {
case INIT:
@@ -359,6 +398,12 @@
}
}
+ /**
+ * Configures the openstack node with new state.
+ *
+ * @param osNode openstack node
+ * @param newState a new state
+ */
private void setState(OpenstackNode osNode, NodeState newState) {
if (osNode.state() == newState) {
return;
@@ -368,6 +413,11 @@
log.info("Changed {} state: {}", osNode.hostname(), newState);
}
+ /**
+ * Bootstraps a new openstack node.
+ *
+ * @param osNode openstack node
+ */
private void bootstrapNode(OpenstackNode osNode) {
if (isCurrentStateDone(osNode)) {
setState(osNode, osNode.state().nextState());
@@ -377,6 +427,11 @@
}
}
+ /**
+ * An internal OVSDB listener. This listener is used for listening the
+ * network facing events from OVSDB device. If a new OVSDB device is detected,
+ * ONOS tries to bootstrap the openstack node.
+ */
private class InternalOvsdbListener implements DeviceListener {
@Override
@@ -415,6 +470,12 @@
}
}
+ /**
+ * An internal integration bridge listener. This listener is used for
+ * listening the events from integration bridge. To listen the events from
+ * other types of bridge such as provider bridge or tunnel bridge, we need
+ * to augment OpenstackNodeService.node() method.
+ */
private class InternalBridgeListener implements DeviceListener {
@Override
@@ -478,6 +539,10 @@
}
}
+ /**
+ * An internal openstack node listener.
+ * The notification is triggered by OpenstackNodeStore.
+ */
private class InternalOpenstackNodeListener implements OpenstackNodeListener {
@Override
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DistributedOpenstackNodeStore.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DistributedOpenstackNodeStore.java
index b636152..ea21db5 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DistributedOpenstackNodeStore.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DistributedOpenstackNodeStore.java
@@ -148,6 +148,9 @@
return osNode == null ? null : osNode.value();
}
+ /**
+ * An internal openstack node map listener.
+ */
private class OpenstackNodeMapListener implements MapEventListener<String, OpenstackNode> {
@Override
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/OpenstackNodeManager.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/OpenstackNodeManager.java
index f3ece18..1202d49 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/OpenstackNodeManager.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/OpenstackNodeManager.java
@@ -25,7 +25,6 @@
import org.apache.felix.scr.annotations.Service;
import org.onosproject.cluster.ClusterService;
import org.onosproject.cluster.LeadershipService;
-import org.onosproject.cluster.NodeId;
import org.onosproject.core.ApplicationId;
import org.onosproject.core.CoreService;
import org.onosproject.event.ListenerRegistry;
@@ -87,14 +86,12 @@
private final OpenstackNodeStoreDelegate delegate = new InternalNodeStoreDelegate();
private ApplicationId appId;
- private NodeId localNode;
@Activate
protected void activate() {
appId = coreService.registerApplication(APP_ID);
osNodeStore.setDelegate(delegate);
- localNode = clusterService.getLocalNode().id();
leadershipService.runForLeadership(appId.name());
log.info("Started");