CORD-470 Added physical interface add state
Change-Id: Ia1a86422cdb046bde86fd314da4868ce3f9f4b3e
diff --git a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnNodeManager.java b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnNodeManager.java
index 895c793..7e56a21 100644
--- a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnNodeManager.java
+++ b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnNodeManager.java
@@ -200,6 +200,17 @@
}
}
},
+ TUNNEL_INTERFACE_CREATED {
+ @Override
+ public void process(CordVtnNodeManager nodeManager, CordVtnNode node) {
+ if (!nodeManager.getOvsdbConnectionState(node)) {
+ nodeManager.connectOvsdb(node);
+ } else {
+ nodeManager.createPhyInterface(node);
+ }
+ }
+
+ },
COMPLETE {
@Override
public void process(CordVtnNodeManager nodeManager, CordVtnNode node) {
@@ -422,13 +433,11 @@
private NodeState checkNodeState(CordVtnNode node) {
checkNotNull(node);
- if (checkIntegrationBridge(node) && checkTunnelInterface(node)) {
- // TODO add physical port add state
- if (checkPhyInterface(node)) {
- return NodeState.COMPLETE;
- } else {
- return NodeState.INCOMPLETE;
- }
+ if (checkIntegrationBridge(node) && checkTunnelInterface(node) &&
+ checkPhyInterface(node)) {
+ return NodeState.COMPLETE;
+ } else if (checkTunnelInterface(node)) {
+ return NodeState.TUNNEL_INTERFACE_CREATED;
} else if (checkIntegrationBridge(node)) {
return NodeState.BRIDGE_CREATED;
} else if (getOvsdbConnectionState(node)) {
@@ -569,7 +578,7 @@
BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class);
bridgeConfig.addBridge(BridgeName.bridgeName(DEFAULT_BRIDGE), dpid, controllers);
} catch (ItemNotFoundException e) {
- log.warn("Failed to create integration bridge on {}", node.ovsdbId());
+ log.warn("Failed to create integration bridge on {}", node.hostname());
}
}
@@ -597,7 +606,26 @@
TunnelConfig tunnelConfig = handler.behaviour(TunnelConfig.class);
tunnelConfig.createTunnelInterface(BridgeName.bridgeName(DEFAULT_BRIDGE), description);
} catch (ItemNotFoundException e) {
- log.warn("Failed to create tunnel interface on {}", node.ovsdbId());
+ log.warn("Failed to create tunnel interface on {}", node.hostname());
+ }
+ }
+
+ /**
+ * Creates physical interface to a given node.
+ *
+ * @param node cordvtn node
+ */
+ private void createPhyInterface(CordVtnNode node) {
+ if (checkPhyInterface(node)) {
+ return;
+ }
+
+ try {
+ DriverHandler handler = driverService.createHandler(node.ovsdbId());
+ BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class);
+ bridgeConfig.addPort(BridgeName.bridgeName(DEFAULT_BRIDGE), node.phyPortName());
+ } catch (ItemNotFoundException e) {
+ log.warn("Failed to add {} on {}", node.phyPortName(), node.hostname());
}
}