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.