Manual link addition feature assumes Long for Switch identifier and Short for Port... 51/451/1
authorMadhu Venugopal <vmadhu@cisco.com>
Mon, 10 Jun 2013 01:43:22 +0000 (18:43 -0700)
committerMadhu Venugopal <vmadhu@cisco.com>
Mon, 10 Jun 2013 01:43:22 +0000 (18:43 -0700)
Change-Id: Ibffd2c1b8704465e928dd180832ad026ce749d48
Signed-off-by: Madhu Venugopal <vmadhu@cisco.com>
opendaylight/topologymanager/src/main/java/org/opendaylight/controller/topologymanager/TopologyUserLinkConfig.java
opendaylight/topologymanager/src/main/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImpl.java
opendaylight/topologymanager/src/test/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImplTest.java

index d5b499c42b9737cfac8783eb8ec4943180d75aad..872fb17129108598fe2f9a5afc038a549dc3e295 100644 (file)
@@ -33,14 +33,7 @@ import org.slf4j.LoggerFactory;
 @XmlAccessorType(XmlAccessType.NONE)
 public class TopologyUserLinkConfig implements Serializable {
     private static final long serialVersionUID = 1L;
-    private static final String regexDatapathID = "^([0-9a-fA-F]{1,2}[:-]){7}[0-9a-fA-F]{1,2}$";
-    private static final String regexDatapathIDLong = "^[0-9a-fA-F]{1,16}$";
-    private static final String guiFields[] = { GUIField.STATUS.toString(),
-            GUIField.NAME.toString(), GUIField.SRCNODE.toString(),
-            GUIField.SRCPORT.toString(), GUIField.DSTNODE.toString(),
-            GUIField.DSTPORT.toString() };
-    private static final Logger logger = LoggerFactory
-    .getLogger(TopologyUserLinkConfig.class);
+    private static final Logger logger = LoggerFactory.getLogger(TopologyUserLinkConfig.class);
 
     public enum STATUS {
         SUCCESS("Success"), LINKDOWN("Link Down"), INCORRECT(
@@ -73,76 +66,24 @@ public class TopologyUserLinkConfig implements Serializable {
     @XmlElement
     private String name;
     @XmlElement
-    private String srcNodeIDType;
+    private String srcNodeConnector;
     @XmlElement
-    private String srcSwitchId;
-    @XmlElement
-    private String srcNodeConnectorIDType;
-    @XmlElement
-    private String srcPort;
-    @XmlElement
-    private String dstNodeIDType;
-    @XmlElement
-    private String dstSwitchId;
-    @XmlElement
-    private String dstNodeConnectorIDType;
-    @XmlElement
-    private String dstPort;
+    private String dstNodeConnector;
 
     public TopologyUserLinkConfig() {
         super();
         status = STATUS.LINKDOWN.toString();
     }
 
-       public TopologyUserLinkConfig(String name, String srcNodeIDType,
-                       String srcSwitchId, String srcNodeConnectorIDType, String srcPort,
-                       String dstNodeIDType, String dstSwitchId,
-                       String dstNodeConnectorIDType, String dstPort) {
+    public TopologyUserLinkConfig(String name, String srcNodeConnector, String dstNodeConnector) {
         super();
         this.name = name;
-        this.srcNodeIDType = srcNodeIDType;
-        this.srcSwitchId = srcSwitchId;
-        this.dstNodeIDType = dstNodeIDType;
-        this.dstSwitchId = dstSwitchId;
-        this.srcNodeConnectorIDType = srcNodeConnectorIDType;
-        this.srcPort = srcPort;
-        this.dstNodeConnectorIDType = dstNodeConnectorIDType;
-        this.dstPort = dstPort;
+        this.srcNodeConnector = srcNodeConnector;
+        this.dstNodeConnector = dstNodeConnector;
     }
 
-    public String getSrcNodeIDType() {
-               return srcNodeIDType;
-       }
-
-       public void setSrcNodeIDType(String srcNodeIDType) {
-               this.srcNodeIDType = srcNodeIDType;
-       }
-
-       public String getSrcNodeConnectorIDType() {
-               return srcNodeConnectorIDType;
-       }
 
-       public void setSrcNodeConnectorIDType(String srcNodeConnectorIDType) {
-               this.srcNodeConnectorIDType = srcNodeConnectorIDType;
-       }
-
-       public String getDstNodeIDType() {
-               return dstNodeIDType;
-       }
-
-       public void setDstNodeIDType(String dstNodeIDType) {
-               this.dstNodeIDType = dstNodeIDType;
-       }
-
-       public String getDstNodeConnectorIDType() {
-               return dstNodeConnectorIDType;
-       }
-
-       public void setDstNodeConnectorIDType(String dstNodeConnectorIDType) {
-               this.dstNodeConnectorIDType = dstNodeConnectorIDType;
-       }
-
-       public String getName() {
+    public String getName() {
         return name;
     }
 
@@ -150,45 +91,6 @@ public class TopologyUserLinkConfig implements Serializable {
         this.name = name;
     }
 
-    public String getSrcSwitchId() {
-        return srcSwitchId;
-    }
-
-    public long getSrcSwitchIDLong() {
-        return getSwitchIDLong(srcSwitchId);
-    }
-
-    public void setSrcSwitchId(String srcSwitchId) {
-        this.srcSwitchId = srcSwitchId;
-    }
-
-    public String getDstSwitchId() {
-        return dstSwitchId;
-    }
-
-    public long getDstSwitchIDLong() {
-        return getSwitchIDLong(dstSwitchId);
-    }
-
-    public void setDstSwitchId(String dstSwitchId) {
-        this.dstSwitchId = dstSwitchId;
-    }
-
-    public String getSrcPort() {
-        return srcPort;
-    }
-
-    public void setSrcPort(String srcPort) {
-        this.srcPort = srcPort;
-    }
-
-    public String getDstPort() {
-        return dstPort;
-    }
-
-    public void setDstPort(String dstPort) {
-        this.dstPort = dstPort;
-    }
 
     public STATUS getStatus() {
         return STATUS.fromString(status);
@@ -198,126 +100,54 @@ public class TopologyUserLinkConfig implements Serializable {
         this.status = s.toString();
     }
 
-    private boolean isValidSwitchId(String switchId) {
-        return (switchId != null && (switchId.matches(regexDatapathID) || switchId
-                .matches(regexDatapathIDLong)));
+    public String getSrcNodeConnector() {
+        return srcNodeConnector;
     }
 
-    private boolean isValidSwitchId(String switchId, String typeStr) {
-        if (typeStr.equals(NodeIDType.OPENFLOW)) {
-            return isValidSwitchId(switchId);
-        } else if (typeStr.equals(NodeIDType.ONEPK) || 
-                          typeStr.equals(NodeIDType.PCEP) || 
-                          typeStr.equals(NodeIDType.PRODUCTION)) {
-            return true;
-        } else {
-                       logger.warn("Invalid node id type {}", typeStr);
-               return false;
-        }
+    public void setSrcNodeConnector(String srcNodeConnector) {
+        this.srcNodeConnector = srcNodeConnector;
     }
 
-    private boolean isValidPortId(String portId, String nodeConnectorType) {
-               if (NodeConnectorIDType.getClassType(nodeConnectorType) == null) {
-                       logger.warn("Invalid node connector id type {}", nodeConnectorType);
-                       return false; 
-               }
-               
-               return true;
-       }
-
-    private long getSwitchIDLong(String switchId) {
-        int radix = 16;
-        String switchString = "0";
-
-        if (isValidSwitchId(switchId)) {
-            if (switchId.contains(":")) {
-                // Handle the 00:00:AA:BB:CC:DD:EE:FF notation
-                switchString = switchId.replace(":", "");
-            } else if (switchId.contains("-")) {
-                // Handle the 00-00-AA-BB-CC-DD-EE-FF notation
-                switchString = switchId.replace("-", "");
-            } else {
-                // Handle the 0123456789ABCDEF notation
-                switchString = switchId;
-            }
-        }
-        return Long.parseLong(switchString, radix);
+    public String getDstNodeConnector() {
+        return dstNodeConnector;
     }
 
-    public boolean isValid() {
-               if (name == null || srcSwitchId == null || dstSwitchId == null
-                               || srcPort == null || dstPort == null || srcNodeIDType == null
-                               || dstNodeIDType == null || srcNodeConnectorIDType == null
-                               || dstNodeConnectorIDType == null) {
-            return false;
-               }
-               
-               if (!isValidSwitchId(srcSwitchId, srcNodeIDType) || 
-                       !isValidSwitchId(dstSwitchId, dstNodeIDType)) {
-                       logger.warn("Invalid switch id");
-                       return false;
-               }
-               
-               if (!isValidPortId(srcPort, srcNodeConnectorIDType) || 
-                       !isValidPortId(dstPort, dstNodeConnectorIDType)) {
-                       logger.warn("Invalid port id");
-                       return false;
-               }
-                       
-               return true;
+    public void setDstNodeConnector(String dstNodeConnector) {
+        this.dstNodeConnector = dstNodeConnector;
     }
 
-    public boolean isSrcPortByName() {
-        try {
-            Short.parseShort(srcPort);
-        } catch (Exception e) {
-            return true;
-        }
-        return false;
+    public boolean isValidNodeConnector(String nodeConnectorStr) {
+        NodeConnector nc = NodeConnector.fromString(nodeConnectorStr);
+        if (nc == null) return false;
+        return true;
     }
 
-    public boolean isDstPortByName() {
-        try {
-            Short.parseShort(dstPort);
-        } catch (Exception e) {
-            return true;
+    public boolean isValid() {
+        if (name == null || srcNodeConnector == null || dstNodeConnector == null) {
+            return false;
         }
-        return false;
-    }
 
-    public static List<String> getGuiFieldsNames() {
-        List<String> fieldList = new ArrayList<String>();
-        for (String str : guiFields) {
-            fieldList.add(str);
+        if (!isValidNodeConnector(srcNodeConnector) || 
+                !isValidNodeConnector(dstNodeConnector)) {
+            logger.warn("Invalid NodeConnector");
+            return false;
         }
-        return fieldList;
-    }
 
-    @Override
-    public String toString() {
-               return "ITopologyUserLinkConfig [status=" + status + ", name=" + name
-                               + ", srcNodeIDType=" + srcNodeIDType + ", srcSwitchId="
-                               + srcSwitchId + ", srcNodeConnectorIDType="
-                               + srcNodeConnectorIDType + ", srcPort=" + srcPort
-                               + ", dstNodeIDType=" + dstNodeIDType + ", dstId="
-                               + dstSwitchId + ", dstNodeConnectorIDType="
-                               + dstNodeConnectorIDType + ", dstPort=" + dstPort + "]";
+        return true;
     }
 
     @Override
     public int hashCode() {
-        return HashCodeBuilder.reflectionHashCode(this);
-    }
-
-    public boolean equals(Long srcNid, String srcPortName, Long dstNid,
-            String dstPortName) {
-        if (srcNid.equals(getSrcSwitchIDLong())
-                && dstNid.equals(getDstSwitchIDLong())
-                && srcPortName.equals(getSrcPort())
-                && dstPortName.equals(getDstPort())) {
-            return true;
-        }
-        return false;
+        final int prime = 31;
+        int result = 1;
+        result = prime
+                * result
+                + ((dstNodeConnector == null) ? 0 : dstNodeConnector.hashCode());
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        result = prime
+                * result
+                + ((srcNodeConnector == null) ? 0 : srcNodeConnector.hashCode());
+        return result;
     }
 
     @Override
@@ -329,26 +159,23 @@ public class TopologyUserLinkConfig implements Serializable {
         if (getClass() != obj.getClass())
             return false;
         TopologyUserLinkConfig other = (TopologyUserLinkConfig) obj;
-        if (dstPort == null) {
-            if (other.dstPort != null)
+        if (dstNodeConnector == null) {
+            if (other.dstNodeConnector != null)
                 return false;
-        } else if (!dstPort.equals(other.dstPort))
+        } else if (!dstNodeConnector.equals(other.dstNodeConnector))
             return false;
-        if (dstSwitchId == null) {
-            if (other.dstSwitchId != null)
+        if (srcNodeConnector == null) {
+            if (other.srcNodeConnector != null)
                 return false;
-        } else if (!dstSwitchId.equals(other.dstSwitchId))
-            return false;
-        if (srcPort == null) {
-            if (other.srcPort != null)
-                return false;
-        } else if (!srcPort.equals(other.srcPort))
-            return false;
-        if (srcSwitchId == null) {
-            if (other.srcSwitchId != null)
-                return false;
-        } else if (!srcSwitchId.equals(other.srcSwitchId))
+        } else if (!srcNodeConnector.equals(other.srcNodeConnector))
             return false;
         return true;
     }
-}
+
+    @Override
+    public String toString() {
+        return "TopologyUserLinkConfig [status=" + status + ", name=" + name
+                + ", srcNodeConnector=" + srcNodeConnector
+                + ", dstNodeConnector=" + dstNodeConnector + "]";
+    }
+}
\ No newline at end of file
index 8c39098a5ec56f532ecd29c99045f2e644ca1d61..277465813baef5d1e183f36ac64efad92cf7fb0c 100644 (file)
@@ -66,8 +66,8 @@ import org.slf4j.LoggerFactory;
  * topology database and notifies all the listeners of topology changes.
  */
 public class TopologyManagerImpl implements ITopologyManager,
-        IConfigurationContainerAware, IListenTopoUpdates, IObjectReader,
-        CommandProvider {
+IConfigurationContainerAware, IListenTopoUpdates, IObjectReader,
+CommandProvider {
     private static final Logger log = LoggerFactory
             .getLogger(TopologyManagerImpl.class);
     private ITopologyService topoService = null;
@@ -232,7 +232,7 @@ public class TopologyManagerImpl implements ITopologyManager,
         this.clusterContainerService.destroyCache("topologymanager.hostsDB");
         this.hostsDB = null;
         this.clusterContainerService
-                .destroyCache("topologymanager.nodeConnectorDB");
+        .destroyCache("topologymanager.nodeConnectorDB");
         this.nodeConnectorsDB = null;
         log.debug("Topology Manager DB Deallocated");
     }
@@ -596,82 +596,21 @@ public class TopologyManagerImpl implements ITopologyManager,
 
     private Edge getReverseLinkTuple(TopologyUserLinkConfig link) {
         TopologyUserLinkConfig rLink = new TopologyUserLinkConfig(
-                link.getName(), link.getDstNodeIDType(), link.getDstSwitchId(),
-                link.getDstNodeConnectorIDType(), link.getDstPort(),
-                link.getSrcNodeIDType(), link.getSrcSwitchId(),
-                link.getSrcNodeConnectorIDType(), link.getSrcPort());
+                link.getName(), link.getDstNodeConnector(), link.getSrcNodeConnector());
         return getLinkTuple(rLink);
     }
 
+
     private Edge getLinkTuple(TopologyUserLinkConfig link) {
         Edge linkTuple = null;
-
-        // if atleast 1 link exists for the srcPort and atleast 1 link exists
-        // for the dstPort
-        // that makes it ineligible for the Manual link addition
-        // This is just an extra protection to avoid mis-programming.
-        boolean srcLinkExists = false;
-        boolean dstLinkExists = false;
-        // TODO check a way to validate the port with inventory services
-        // if (srcSw.getPorts().contains(srcPort) &&
-        // dstSw.getPorts().contains(srcPort) &&
-        if (!srcLinkExists && !dstLinkExists) {
-            Node sNode = null;
-            Node dNode = null;
-            NodeConnector sPort = null;
-            NodeConnector dPort = null;
-            linkTuple = null;
-            String srcNodeIDType = link.getSrcNodeIDType();
-            String srcNodeConnectorIDType = link.getSrcNodeConnectorIDType();
-            String dstNodeIDType = link.getDstNodeIDType();
-            String dstNodeConnectorIDType = link.getDstNodeConnectorIDType();
-            try {
-                if (srcNodeIDType.equals(NodeIDType.OPENFLOW)) {
-                    sNode = new Node(srcNodeIDType, link.getSrcSwitchIDLong());
-                } else {
-                    sNode = new Node(srcNodeIDType, link.getSrcSwitchId());
-                }
-
-                if (dstNodeIDType.equals(NodeIDType.OPENFLOW)) {
-                    dNode = new Node(dstNodeIDType, link.getDstSwitchIDLong());
-                } else {
-                    dNode = new Node(dstNodeIDType, link.getDstSwitchId());
-                }
-
-                if (srcNodeConnectorIDType.equals(NodeConnectorIDType.OPENFLOW)) {
-                    Short srcPort = Short.valueOf((short) 0);
-                    if (!link.isSrcPortByName()) {
-                        srcPort = Short.parseShort(link.getSrcPort());
-                    }
-                    sPort = new NodeConnector(srcNodeConnectorIDType, srcPort,
-                            sNode);
-                } else {
-                    sPort = new NodeConnector(srcNodeConnectorIDType,
-                            link.getSrcPort(), sNode);
-                }
-
-                if (dstNodeConnectorIDType.equals(NodeConnectorIDType.OPENFLOW)) {
-                    Short dstPort = Short.valueOf((short) 0);
-                    if (!link.isDstPortByName()) {
-                        dstPort = Short.parseShort(link.getDstPort());
-                    }
-                    dPort = new NodeConnector(dstNodeConnectorIDType, dstPort,
-                            dNode);
-                } else {
-                    dPort = new NodeConnector(dstNodeConnectorIDType,
-                            link.getDstPort(), dNode);
-                }
-                linkTuple = new Edge(sPort, dPort);
-            } catch (ConstructionException cex) {
-                log.warn("Caught exception ", cex);
-            }
-            return linkTuple;
-        }
-
-        if (srcLinkExists && dstLinkExists) {
-            link.setStatus(TopologyUserLinkConfig.STATUS.INCORRECT);
+        NodeConnector srcNodeConnector = NodeConnector.fromString(link.getSrcNodeConnector());
+        NodeConnector dstNodeConnector = NodeConnector.fromString(link.getDstNodeConnector());
+        if (srcNodeConnector == null || dstNodeConnector == null) return null;
+        try {
+            linkTuple = new Edge(srcNodeConnector, dstNodeConnector);
+        } catch (Exception e) {            
         }
-        return null;
+        return linkTuple;
     }
 
     @Override
@@ -795,19 +734,7 @@ public class TopologyManagerImpl implements ITopologyManager,
             return;
         }
 
-        String nodeType1 = nc1.getNode().getType().toString();
-        String nid1 = nc1.getNode().getID().toString();
-        String ncType1 = nc1.getType().toString();
-        String ncid1 = nc1.getID().toString();
-
-        String nodeType2 = nc2.getNode().getType().toString();
-        String nid2 = nc2.getNode().getID().toString();
-        String ncType2 = nc2.getType().toString();
-        String ncid2 = nc2.getID().toString();
-
-        TopologyUserLinkConfig config = new TopologyUserLinkConfig(name,
-                nodeType1, nid1, ncType1, ncid1, nodeType2, nid2, ncType2,
-                ncid2);
+        TopologyUserLinkConfig config = new TopologyUserLinkConfig(name, ncStr1, ncStr2);
         ci.println(this.addUserLink(config));
     }
 
index c176cb2cf3e50ba3b878e5923efeafe108059851..b4dfba9277cd12befbf7eb54a6f4943096ef7946 100644 (file)
@@ -116,19 +116,19 @@ public class TopologyManagerImplTest {
                             .equals(nodeId + 10))
                             || (headNcId.equals(nodeId + 10) && tailNcId
                                     .equals(nodeId))
-                            || (headNcId.equals(nodeId + 1) && tailNcId
-                                    .equals(nodeId + 11))
-                            || (headNcId.equals(nodeId + 11) && tailNcId
-                                    .equals(nodeId + 1)));
+                                    || (headNcId.equals(nodeId + 1) && tailNcId
+                                            .equals(nodeId + 11))
+                                            || (headNcId.equals(nodeId + 11) && tailNcId
+                                                    .equals(nodeId + 1)));
                 } else if (nodeId == 11 || nodeId == 13 || nodeId == 15) {
                     Assert.assertTrue((headNcId.equals(nodeId) && tailNcId
                             .equals(nodeId - 10))
                             || (headNcId.equals(nodeId) && tailNcId
                                     .equals(nodeId - 10))
-                            || (headNcId.equals(nodeId - 9) && tailNcId
-                                    .equals(nodeId + 1))
-                            || (headNcId.equals(nodeId + 1) && tailNcId
-                                    .equals(nodeId - 9)));
+                                    || (headNcId.equals(nodeId - 9) && tailNcId
+                                            .equals(nodeId + 1))
+                                            || (headNcId.equals(nodeId + 1) && tailNcId
+                                                    .equals(nodeId - 9)));
                 }
             }
             i.remove();
@@ -160,19 +160,19 @@ public class TopologyManagerImplTest {
                         .equals(headNodeId + 10))
                         || (headNcId.equals(headNodeId + 10) && tailNcId
                                 .equals(headNodeId))
-                        || (headNcId.equals(headNodeId + 1) && tailNcId
-                                .equals(headNodeId + 11))
-                        || (headNcId.equals(headNodeId + 11) && tailNcId
-                                .equals(headNodeId + 1)));
+                                || (headNcId.equals(headNodeId + 1) && tailNcId
+                                        .equals(headNodeId + 11))
+                                        || (headNcId.equals(headNodeId + 11) && tailNcId
+                                                .equals(headNodeId + 1)));
             } else if (headNodeId == 11 || headNodeId == 13 || headNodeId == 15) {
                 Assert.assertTrue((headNcId.equals(headNodeId) && tailNcId
                         .equals(headNodeId - 10))
                         || (headNcId.equals(headNodeId) && tailNcId
                                 .equals(headNodeId - 10))
-                        || (headNcId.equals(headNodeId - 9) && tailNcId
-                                .equals(headNodeId + 1))
-                        || (headNcId.equals(headNodeId + 1) && tailNcId
-                                .equals(headNodeId - 9)));
+                                || (headNcId.equals(headNodeId - 9) && tailNcId
+                                        .equals(headNodeId + 1))
+                                        || (headNcId.equals(headNodeId + 1) && tailNcId
+                                                .equals(headNodeId - 9)));
             }
 
             Set<Property> prop = entry.getValue();
@@ -212,13 +212,13 @@ public class TopologyManagerImplTest {
     @Test
     public void testAddDeleteUserLink() {
         TopologyUserLinkConfig link1 = new TopologyUserLinkConfig("default1",
-                "OF", "1", "OF", "2", "OF", "1", "OF", "2");
+                "OF|1@OF|2", "OF|1@OF|2");
         TopologyUserLinkConfig link2 = new TopologyUserLinkConfig("default1",
-                "OF", "10", "OF", "20", "OF", "10", "OF", "20");
+                "OF|10@OF|20", "OF|10@OF|20");
         TopologyUserLinkConfig link3 = new TopologyUserLinkConfig("default2",
-                "OF", "1", "OF", "2", "OF", "1", "OF", "2");
+                "OF|1@OF|2", "OF|1@OF|2");
         TopologyUserLinkConfig link4 = new TopologyUserLinkConfig("default20",
-                "OF", "10", "OF", "20", "OF", "10", "OF", "20");
+                "OF|10@OF|20", "OF|10@OF|20");
 
         TopologyManagerImpl topoManagerImpl = new TopologyManagerImpl();
         topoManagerImpl.nonClusterObjectCreate();
@@ -244,40 +244,34 @@ public class TopologyManagerImplTest {
         TopologyManagerImpl topoManagerImpl = new TopologyManagerImpl();
         topoManagerImpl.nonClusterObjectCreate();
 
-        String name = null;
-        String srcNodeIDType = null;
+        String name = "Test";
         String srcSwitchId = null;
         String srcNodeConnectorIDType = null;
         String srcPort = null;
+        String srcNodeIDType = null;
         String dstNodeIDType = null;
         String dstSwitchId = null;
         String dstNodeConnectorIDType = null;
         String dstPort = null;
+        String srcNodeConnector = null;
+        String dstNodeConnector = null;
 
         /* Creating userlinks and checking for their validity */
-        link[0] = new TopologyUserLinkConfig(name, srcNodeIDType, srcSwitchId,
-                srcNodeConnectorIDType, srcPort, dstNodeIDType, dstSwitchId,
-                dstNodeConnectorIDType, dstPort);
+        link[0] = new TopologyUserLinkConfig(name, srcNodeConnector, dstNodeConnector);
         Assert.assertTrue(link[0].isValid() == false);
 
-        srcSwitchId = "1";
-        link[0] = new TopologyUserLinkConfig(name, srcNodeIDType, srcSwitchId,
-                srcNodeConnectorIDType, srcPort, dstNodeIDType, dstSwitchId,
-                dstNodeConnectorIDType, dstPort);
+        srcNodeConnector = "OF|1@OF|1";
+        link[0] = new TopologyUserLinkConfig(name, srcNodeConnector, dstNodeConnector);
         Assert.assertTrue(link[0].isValid() == false);
 
-        dstSwitchId = "2";
-        link[0] = new TopologyUserLinkConfig(name, srcNodeIDType, srcSwitchId,
-                srcNodeConnectorIDType, srcPort, dstNodeIDType, dstSwitchId,
-                dstNodeConnectorIDType, dstPort);
-        Assert.assertTrue(link[0].isValid() == false);
+        dstNodeConnector = "OF|1@OF|2";
+        link[0] = new TopologyUserLinkConfig(name, srcNodeConnector, dstNodeConnector);
+        Assert.assertTrue(link[0].isValid() == true);
 
         Integer i;
 
         for (i = 0; i < 5; i++) {
-            link[i] = new TopologyUserLinkConfig(name, srcNodeIDType,
-                    srcSwitchId, srcNodeConnectorIDType, srcPort,
-                    dstNodeIDType, dstSwitchId, dstNodeConnectorIDType, dstPort);
+            link[i] = new TopologyUserLinkConfig();
 
             name = Integer.toString(i + 1);
             srcSwitchId = Integer.toString(i + 1);
@@ -286,29 +280,27 @@ public class TopologyManagerImplTest {
             dstPort = Integer.toString((i + 1) * 10);
 
             link[i].setName(name);
-            link[i].setSrcSwitchId(srcSwitchId);
-            link[i].setSrcPort(srcPort);
-            link[i].setDstSwitchId(dstSwitchId);
-            link[i].setDstPort(dstPort);
+            srcNodeConnectorIDType = dstNodeConnectorIDType = "INCORRECT";
+            srcNodeConnector = srcNodeConnectorIDType+"|"+srcSwitchId+"@"+srcNodeConnectorIDType+"|"+srcPort;
+            dstNodeConnector = dstNodeConnectorIDType+"|"+dstSwitchId+"@"+dstNodeConnectorIDType+"|"+dstPort;
 
+            link[i].setSrcNodeConnector(srcNodeConnector);
             Assert.assertTrue(link[i].isValid() == false);
 
-            link[i].setSrcNodeIDType("OF");
-            link[i].setSrcNodeConnectorIDType("OF");
-
+            srcNodeConnectorIDType = "OF";
+            srcNodeConnector = srcNodeConnectorIDType+"|"+srcSwitchId+"@"+srcNodeConnectorIDType+"|"+srcPort;
+            link[i].setSrcNodeConnector(srcNodeConnector);
             Assert.assertTrue(link[i].isValid() == false);
 
-            link[i].setDstNodeIDType("OF");
-            link[i].setDstNodeConnectorIDType("OF");
-
+            dstNodeConnectorIDType = "OF";
+            dstNodeConnector = dstNodeConnectorIDType+"|"+dstSwitchId+"@"+dstNodeConnectorIDType+"|"+dstPort;
+            link[i].setDstNodeConnector(dstNodeConnector);
             Assert.assertTrue(link[i].isValid() == true);
 
-            reverseLink[i] = new TopologyUserLinkConfig(name, dstNodeIDType,
-                    dstSwitchId, dstNodeConnectorIDType, dstPort,
-                    srcNodeIDType, srcSwitchId, srcNodeConnectorIDType, srcPort);
-
+            reverseLink[i] = new TopologyUserLinkConfig(name, dstNodeConnector, srcNodeConnector);
             topoManagerImpl.addUserLink(link[i]);
         }
+
         ConcurrentMap<String, TopologyUserLinkConfig> userLinks = topoManagerImpl
                 .getUserLinks();
         TopologyUserLinkConfig resultLink;
@@ -318,20 +310,16 @@ public class TopologyManagerImplTest {
 
             Assert.assertTrue(resultLink.getName().equals(
                     reverseLink[i].getName()));
-            Assert.assertTrue(resultLink.getDstSwitchId().equals(
-                    reverseLink[i].getSrcSwitchId()));
-            Assert.assertTrue(resultLink.getDstPort().equals(
-                    reverseLink[i].getSrcPort()));
-            Assert.assertTrue(resultLink.getSrcSwitchId().equals(
-                    reverseLink[i].getDstSwitchId()));
-            Assert.assertTrue(resultLink.getSrcPort().equals(
-                    reverseLink[i].getDstPort()));
+            Assert.assertTrue(resultLink.getDstNodeConnector().equals(
+                    reverseLink[i].getSrcNodeConnector()));
+            Assert.assertTrue(resultLink.getSrcNodeConnector().equals(
+                    reverseLink[i].getDstNodeConnector()));
         }
     }
 
     @Test
     public void testHostLinkMethods() throws ConstructionException,
-            UnknownHostException {
+    UnknownHostException {
         TopologyManagerImpl topoManagerImpl = new TopologyManagerImpl();
         topoManagerImpl.nonClusterObjectCreate();
         int hostCounter = 0;
@@ -372,7 +360,7 @@ public class TopologyManagerImplTest {
             nc[i] = NodeConnectorCreator.createOFNodeConnector((short) (i + 1),
                     NodeCreator.createOFNode((long) (i + 1)));
             topoManagerImpl
-                    .updateHostLink(nc[i], h[i], UpdateType.ADDED, props);
+            .updateHostLink(nc[i], h[i], UpdateType.ADDED, props);
         }
 
         for (int i = 0; i < 5; i++) {