Use ONOS LinkTuple instead of link discovery specific Link class
Change-Id: I781d9622b1d796e65fe6a99333529efad52215c6
diff --git a/src/main/java/net/onrc/onos/core/configmanager/INetworkConfigService.java b/src/main/java/net/onrc/onos/core/configmanager/INetworkConfigService.java
index 4090879..174759b 100644
--- a/src/main/java/net/onrc/onos/core/configmanager/INetworkConfigService.java
+++ b/src/main/java/net/onrc/onos/core/configmanager/INetworkConfigService.java
@@ -5,8 +5,8 @@
import net.floodlightcontroller.core.module.IFloodlightService;
import net.onrc.onos.core.configmanager.NetworkConfig.LinkConfig;
import net.onrc.onos.core.configmanager.NetworkConfig.SwitchConfig;
-import net.onrc.onos.core.linkdiscovery.Link;
import net.onrc.onos.core.util.Dpid;
+import net.onrc.onos.core.util.LinkTuple;
/**
* Exposes methods to retrieve network configuration.
@@ -187,10 +187,10 @@
* ConfigState contains the result of the check. The enclosed LinkConfig may
* or may not be null, depending on the outcome of the check.
*
- * @param link unidirectional {@link Link} to be queried
+ * @param linkTuple unidirectional link to be queried
* @return LinkConfigStatus with outcome of check and associated config.
*/
- public LinkConfigStatus checkLinkConfig(Link link);
+ public LinkConfigStatus checkLinkConfig(LinkTuple linkTuple);
/**
* Retrieves a list of switches that have been configured, and have been
diff --git a/src/main/java/net/onrc/onos/core/configmanager/NetworkConfigManager.java b/src/main/java/net/onrc/onos/core/configmanager/NetworkConfigManager.java
index 0c1f933..b1d3836 100644
--- a/src/main/java/net/onrc/onos/core/configmanager/NetworkConfigManager.java
+++ b/src/main/java/net/onrc/onos/core/configmanager/NetworkConfigManager.java
@@ -19,10 +19,9 @@
import net.floodlightcontroller.core.module.IFloodlightService;
import net.onrc.onos.core.configmanager.NetworkConfig.LinkConfig;
import net.onrc.onos.core.configmanager.NetworkConfig.SwitchConfig;
-import net.onrc.onos.core.linkdiscovery.Link;
import net.onrc.onos.core.util.Dpid;
import net.onrc.onos.core.util.LinkTuple;
-import net.onrc.onos.core.util.SwitchPort;
+import net.onrc.onos.core.util.PortNumber;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
@@ -99,17 +98,17 @@
}
- public LinkConfigStatus checkLinkConfig(Link link) {
- LinkConfig lkc = getConfiguredLink(link);
+ public LinkConfigStatus checkLinkConfig(LinkTuple linkTuple) {
+ LinkConfig lkc = getConfiguredLink(linkTuple);
// links are always disallowed if any one of the nodes that make up the
// link are disallowed
- Dpid linkNode1 = new Dpid(link.getSrc());
+ Dpid linkNode1 = linkTuple.getSrc().getDpid();
SwitchConfigStatus scs1 = checkSwitchConfig(linkNode1);
if (scs1.getConfigState() == NetworkConfigState.DENY) {
return new LinkConfigStatus(NetworkConfigState.DENY, null,
"Link-node: " + linkNode1 + " denied by config: " + scs1.getMsg());
}
- Dpid linkNode2 = new Dpid(link.getDst());
+ Dpid linkNode2 = linkTuple.getDst().getDpid();
SwitchConfigStatus scs2 = checkSwitchConfig(linkNode2);
if (scs2.getConfigState() == NetworkConfigState.DENY) {
return new LinkConfigStatus(NetworkConfigState.DENY, null,
@@ -349,18 +348,18 @@
}
- private LinkConfig getConfiguredLink(Link link) {
+ private LinkConfig getConfiguredLink(LinkTuple linkTuple) {
LinkConfig lkc = null;
// first try the unidirectional link with the ports assigned
- lkc = configuredLinks.get(new LinkTuple(
- new SwitchPort(link.getSrc(), link.getSrcPort()),
- new SwitchPort(link.getDst(), link.getDstPort())));
+ lkc = configuredLinks.get(linkTuple);
if (lkc == null) {
// try without ports, as configuration may be for all links
// between the two switches
- lkc = configuredLinks.get(new LinkTuple(
- new SwitchPort(link.getSrc(), (short) 0),
- new SwitchPort(link.getDst(), (short) 0)));
+ LinkTuple portlessLink = new LinkTuple(linkTuple.getSrc().getDpid(),
+ PortNumber.uint32(0), linkTuple.getDst().getDpid(),
+ PortNumber.uint32(0));
+
+ lkc = configuredLinks.get(portlessLink);
}
return lkc;
}
diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java b/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
index 9ef6fa9..5838483 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
@@ -42,6 +42,7 @@
import net.onrc.onos.core.registry.IControllerRegistryService.ControlChangeCallback;
import net.onrc.onos.core.registry.RegistryException;
import net.onrc.onos.core.util.Dpid;
+import net.onrc.onos.core.util.LinkTuple;
import net.onrc.onos.core.util.OnosInstanceId;
import net.onrc.onos.core.util.PortNumberUtils;
import net.onrc.onos.core.util.SwitchPort;
@@ -292,16 +293,18 @@
@Override
public void linkAdded(Link link) {
- LinkConfigStatus ret = networkConfigService.checkLinkConfig(link);
+ LinkTuple linkTuple = new LinkTuple(
+ new SwitchPort(link.getSrc(), link.getSrcPort()),
+ new SwitchPort(link.getDst(), link.getDstPort()));
+
+ LinkConfigStatus ret = networkConfigService.checkLinkConfig(linkTuple);
if (ret.getConfigState() == NetworkConfigState.DENY) {
log.warn("Discovered {} denied by configuration. {} "
+ "Not allowing it to proceed.", link, ret.getMsg());
return;
}
- LinkData linkData = new LinkData(
- new SwitchPort(link.getSrc(), link.getSrcPort()),
- new SwitchPort(link.getDst(), link.getDstPort()));
+ LinkData linkData = new LinkData(linkTuple);
// FIXME should be merging, with existing attrs, etc..
// TODO define attr name as constant somewhere.