From 4f54aad3558664e4e36c8cdb0cfedcbce87ff446 Mon Sep 17 00:00:00 2001 From: Jason Ye Date: Mon, 3 Jun 2013 19:41:32 -0700 Subject: [PATCH] - Added osgi cmds so that user is able to configure a link. The link is added to the main Topology if it's not a Production link. Usage: addUserLink deleteUserLink printUserLink - Fixed an exception in SwitchManager osgi cmd pns Signed-off-by: Jason Ye --- .../internal/SwitchManagerImpl.java | 7 +- .../internal/TopologyManagerImpl.java | 117 ++++++++---------- 2 files changed, 53 insertions(+), 71 deletions(-) diff --git a/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerImpl.java b/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerImpl.java index 2937fe7e14..1b1a47bf23 100644 --- a/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerImpl.java +++ b/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerImpl.java @@ -1457,10 +1457,11 @@ CommandProvider { String nodeName = (desc == null) ? "" : desc.getValue(); MacAddress mac = (MacAddress) getNodeProp(node, MacAddress.name); + String macAddr = (mac == null) ? "" : HexEncode + .bytesToHexStringFormat(mac.getMacAddress()); int tierNum = (tier == null) ? 0 : tier.getValue(); - ci.println(node + " " + node.getType() + " " - + HexEncode.bytesToHexStringFormat(mac.getMacAddress()) - + " " + nodeName + " " + tierNum ); + ci.println(node + " " + node.getType() + " " + macAddr + + " " + nodeName + " " + tierNum); } ci.println("Total number of Nodes: " + nodeSet.size()); } diff --git a/opendaylight/topologymanager/src/main/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImpl.java b/opendaylight/topologymanager/src/main/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImpl.java index 2002158bbb..8c39098a5e 100644 --- a/opendaylight/topologymanager/src/main/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImpl.java +++ b/opendaylight/topologymanager/src/main/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImpl.java @@ -136,7 +136,7 @@ public class TopologyManagerImpl implements ITopologyManager, /** * Function called by the dependency manager when all the required * dependencies are satisfied - * + * */ void init(Component c) { String containerName = null; @@ -204,7 +204,7 @@ public class TopologyManagerImpl implements ITopologyManager, /** * Function called after the topology manager has registered the service in * OSGi service registry. - * + * */ void started() { // SollicitRefresh MUST be called here else if called at init @@ -217,7 +217,7 @@ public class TopologyManagerImpl implements ITopologyManager, * Function called by the dependency manager when at least one dependency * become unsatisfied or when the component is shutting down because for * example bundle is being stopped. - * + * */ void destroy() { if (this.clusterContainerService == null) { @@ -257,7 +257,7 @@ public class TopologyManagerImpl implements ITopologyManager, // Publish the save config event to the cluster nodes /** * Get the CLUSTERING SERVICES WORKING BEFORE TRYING THIS - * + * * configSaveEvent.put(new Date().getTime(), SAVE); */ return saveConfigInternal(); @@ -327,7 +327,7 @@ public class TopologyManagerImpl implements ITopologyManager, /** * This method returns true if the edge is an ISL link. - * + * * @param e * The edge * @return true if it is an ISL link @@ -338,7 +338,7 @@ public class TopologyManagerImpl implements ITopologyManager, /** * This method returns true if the edge is a production link. - * + * * @param e * The edge * @return true if it is a production link @@ -353,7 +353,7 @@ public class TopologyManagerImpl implements ITopologyManager, /** * The Map returned is a copy of the current topology hence if the topology * changes the copy doesn't - * + * * @return A Map representing the current topology expressed as edges of the * network */ @@ -699,13 +699,16 @@ public class TopologyManagerImpl implements ITopologyManager, Edge linkTuple = getLinkTuple(link); if (linkTuple != null) { - try { - linkTuple = getReverseLinkTuple(link); + if (!isProductionLink(linkTuple)) { + edgeUpdate(linkTuple, UpdateType.ADDED, new HashSet()); + } + + linkTuple = getReverseLinkTuple(link); + if (linkTuple != null) { link.setStatus(TopologyUserLinkConfig.STATUS.SUCCESS); - } catch (Exception e) { - return new Status(StatusCode.INTERNALERROR, - "Exception while adding custom link : " - + e.getMessage()); + if (!isProductionLink(linkTuple)) { + edgeUpdate(linkTuple, UpdateType.ADDED, new HashSet()); + } } } return new Status(StatusCode.SUCCESS, null); @@ -723,20 +726,13 @@ public class TopologyManagerImpl implements ITopologyManager, Edge linkTuple = getLinkTuple(link); userLinks.remove(linkName); if (linkTuple != null) { - try { - // oneTopology.deleteUserConfiguredLink(linkTuple); - } catch (Exception e) { - log.warn( - "Harmless : Exception while Deleting User Configured link {} {}", - link, e.toString()); + if (!isProductionLink(linkTuple)) { + edgeUpdate(linkTuple, UpdateType.REMOVED, null); } + linkTuple = getReverseLinkTuple(link); - try { - // oneTopology.deleteUserConfiguredLink(linkTuple); - } catch (Exception e) { - log.warn( - "Harmless : Exception while Deleting User Configured Reverse link {} {}", - link, e.toString()); + if ((linkTuple != null) && !isProductionLink(linkTuple)) { + edgeUpdate(linkTuple, UpdateType.REMOVED, null); } } return new Status(StatusCode.SUCCESS, null); @@ -753,14 +749,14 @@ public class TopologyManagerImpl implements ITopologyManager, public String getHelp() { StringBuffer help = new StringBuffer(); help.append("---Topology Manager---\n"); - help.append("\t addTopo name \n"); - help.append("\t delTopo name\n"); - help.append("\t printTopo\n"); + help.append("\t addUserLink \n"); + help.append("\t deleteUserLink \n"); + help.append("\t printUserLink\n"); help.append("\t printNodeEdges\n"); return help.toString(); } - public void _printTopo(CommandInterpreter ci) { + public void _printUserLink(CommandInterpreter ci) { for (String name : this.userLinks.keySet()) { TopologyUserLinkConfig linkConfig = userLinks.get(name); ci.println("Name : " + name); @@ -770,67 +766,52 @@ public class TopologyManagerImpl implements ITopologyManager, } } - public void _addTopo(CommandInterpreter ci) { + public void _addUserLink(CommandInterpreter ci) { String name = ci.nextArgument(); if ((name == null)) { ci.println("Please enter a valid Name"); return; } - String srcNodeIDType = ci.nextArgument(); - if (srcNodeIDType == null) { - ci.println("Null source node ID Type. Example: OF or PR"); + String ncStr1 = ci.nextArgument(); + if (ncStr1 == null) { + ci.println("Please enter two node connector strings"); return; } - - String dpid = ci.nextArgument(); - if (dpid == null) { - ci.println("Null source node id"); + String ncStr2 = ci.nextArgument(); + if (ncStr2 == null) { + ci.println("Please enter second node connector string"); return; } - String srcNodeConnectorIDType = ci.nextArgument(); - if (srcNodeConnectorIDType == null) { - ci.println("Null source node connector ID Type. Example: OF or PR"); + NodeConnector nc1 = NodeConnector.fromString(ncStr1); + if (nc1 == null) { + ci.println("Invalid input node connector 1 string: " + ncStr1); return; } - - String port = ci.nextArgument(); - if (port == null) { - ci.println("Null source port number"); + NodeConnector nc2 = NodeConnector.fromString(ncStr2); + if (nc2 == null) { + ci.println("Invalid input node connector 2 string: " + ncStr2); return; } - String dstNodeIDType = ci.nextArgument(); - if (dstNodeIDType == null) { - ci.println("Null destination node ID Type. Example: OF or PR"); - return; - } + String nodeType1 = nc1.getNode().getType().toString(); + String nid1 = nc1.getNode().getID().toString(); + String ncType1 = nc1.getType().toString(); + String ncid1 = nc1.getID().toString(); - String ddpid = ci.nextArgument(); - if (ddpid == null) { - ci.println("Null destination node ID"); - return; - } + String nodeType2 = nc2.getNode().getType().toString(); + String nid2 = nc2.getNode().getID().toString(); + String ncType2 = nc2.getType().toString(); + String ncid2 = nc2.getID().toString(); - String dstNodeConnectorIDType = ci.nextArgument(); - if (dstNodeConnectorIDType == null) { - ci.println("Null destination node connector ID Type. Example: OF or PR"); - return; - } - - String dport = ci.nextArgument(); - if (dport == null) { - ci.println("Null destination port number"); - return; - } TopologyUserLinkConfig config = new TopologyUserLinkConfig(name, - srcNodeIDType, dpid, srcNodeConnectorIDType, port, - dstNodeIDType, ddpid, dstNodeConnectorIDType, dport); + nodeType1, nid1, ncType1, ncid1, nodeType2, nid2, ncType2, + ncid2); ci.println(this.addUserLink(config)); } - public void _delTopo(CommandInterpreter ci) { + public void _deleteUserLink(CommandInterpreter ci) { String name = ci.nextArgument(); if ((name == null)) { ci.println("Please enter a valid Name"); -- 2.36.6