X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fweb%2Ftroubleshoot%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Ftroubleshoot%2Fweb%2FTroubleshoot.java;h=f145c568b58b18bf62efdda84eadbadefb5934b7;hb=refs%2Fchanges%2F49%2F449%2F1;hp=c2d96148793efe68a4b2b3a5c3131786668cc4df;hpb=cffdfafd2b23b24025f5ba4b32f16bca501bfeb5;p=controller.git diff --git a/opendaylight/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/Troubleshoot.java b/opendaylight/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/Troubleshoot.java index c2d9614879..f145c568b5 100644 --- a/opendaylight/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/Troubleshoot.java +++ b/opendaylight/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/Troubleshoot.java @@ -16,6 +16,8 @@ import java.util.HashMap; import java.util.List; import java.util.Set; +import javax.servlet.http.HttpServletRequest; + import org.opendaylight.controller.sal.action.Action; import org.opendaylight.controller.sal.action.Output; import org.opendaylight.controller.sal.action.SetVlanId; @@ -32,10 +34,12 @@ import org.opendaylight.controller.sal.utils.EtherTypes; import org.opendaylight.controller.sal.utils.GlobalConstants; import org.opendaylight.controller.sal.utils.HexEncode; import org.opendaylight.controller.sal.utils.IPProtocols; +import org.opendaylight.controller.sal.utils.NetUtils; import org.opendaylight.controller.sal.utils.ServiceHelper; import org.opendaylight.controller.statisticsmanager.IStatisticsManager; import org.opendaylight.controller.switchmanager.ISwitchManager; -import org.opendaylight.controller.web.IOneWeb; +import org.opendaylight.controller.web.DaylightWebUtil; +import org.opendaylight.controller.web.IDaylightWeb; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -44,15 +48,14 @@ import org.springframework.web.bind.annotation.ResponseBody; @Controller @RequestMapping("/") -public class Troubleshoot implements IOneWeb { +public class Troubleshoot implements IDaylightWeb { private static final UserLevel AUTH_LEVEL = UserLevel.CONTAINERUSER; private final String WEB_NAME = "Troubleshoot"; private final String WEB_ID = "troubleshoot"; private final short WEB_ORDER = 4; - private final String containerName = GlobalConstants.DEFAULT.toString(); public Troubleshoot() { - ServiceHelper.registerGlobalService(IOneWeb.class, this, null); + ServiceHelper.registerGlobalService(IDaylightWeb.class, this, null); } @Override @@ -77,7 +80,8 @@ public class Troubleshoot implements IOneWeb { @RequestMapping(value = "/existingNodes", method = RequestMethod.GET) @ResponseBody - public TroubleshootingJsonBean getExistingNodes() { + public TroubleshootingJsonBean getExistingNodes(HttpServletRequest request, @RequestParam(required = false) String container) { + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); List> lines = new ArrayList>(); @@ -107,7 +111,8 @@ public class Troubleshoot implements IOneWeb { @RequestMapping(value = "/uptime", method = RequestMethod.GET) @ResponseBody - public TroubleshootingJsonBean getUptime() { + public TroubleshootingJsonBean getUptime(HttpServletRequest request, @RequestParam(required = false) String container) { + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); List> lines = new ArrayList>(); @@ -143,15 +148,17 @@ public class Troubleshoot implements IOneWeb { @RequestMapping(value = "/flowStats", method = RequestMethod.GET) @ResponseBody public TroubleshootingJsonBean getFlowStats( - @RequestParam("nodeId") String nodeId) { + @RequestParam("nodeId") String nodeId, + HttpServletRequest request, @RequestParam(required = false) String container) { Node node = Node.fromString(nodeId); List> cells = new ArrayList>(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); IStatisticsManager statisticsManager = (IStatisticsManager) ServiceHelper .getInstance(IStatisticsManager.class, containerName, this); List statistics = statisticsManager.getFlows(node); for (FlowOnNode stats : statistics) { - cells.add(this.convertFlowStatistics(node, stats)); + cells.add(this.convertFlowStatistics(node, stats, containerName)); } List columnNames = new ArrayList(); columnNames.addAll(Arrays.asList(new String[] { "Node", "In Port", @@ -168,9 +175,11 @@ public class Troubleshoot implements IOneWeb { @RequestMapping(value = "/portStats", method = RequestMethod.GET) @ResponseBody public TroubleshootingJsonBean getPortStats( - @RequestParam("nodeId") String nodeId) { + @RequestParam("nodeId") String nodeId, + HttpServletRequest request, @RequestParam(required = false) String container) { Node node = Node.fromString(nodeId); List> cells = new ArrayList>(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); IStatisticsManager statisticsManager = (IStatisticsManager) ServiceHelper .getInstance(IStatisticsManager.class, containerName, this); List statistics = statisticsManager @@ -215,7 +224,8 @@ public class Troubleshoot implements IOneWeb { } private HashMap convertFlowStatistics(Node node, - FlowOnNode flowOnNode) { + FlowOnNode flowOnNode, + String containerName) { HashMap row = new HashMap(); Flow flow = flowOnNode.getFlow(); Match match = flow.getMatch(); @@ -228,7 +238,8 @@ public class Troubleshoot implements IOneWeb { row.put("nodeName", desc); if (match.isPresent(MatchType.IN_PORT)) { row.put(MatchType.IN_PORT.id(), ((NodeConnector) flow.getMatch() - .getField(MatchType.IN_PORT).getValue()).getID().toString()); + .getField(MatchType.IN_PORT).getValue()) + .getNodeConnectorIdAsString()); } else { row.put(MatchType.IN_PORT.id(), "*"); } @@ -288,26 +299,16 @@ public class Troubleshoot implements IOneWeb { if (match.isPresent(MatchType.TP_SRC)) { Short tpSrc = (Short) (flow.getMatch().getField(MatchType.TP_SRC) .getValue()); - if (tpSrc < 0) { - row.put(MatchType.TP_SRC.id(), - ((Integer) (tpSrc.intValue() & 0x7FFF | 0x8000)) - .toString()); - } else { - row.put(MatchType.TP_SRC.id(), tpSrc.toString()); - } + row.put(MatchType.TP_SRC.id(), + String.valueOf(NetUtils.getUnsignedShort(tpSrc))); } else { row.put(MatchType.TP_SRC.id(), "*"); } if (match.isPresent(MatchType.TP_DST)) { Short tpDst = (Short) (flow.getMatch().getField(MatchType.TP_DST) .getValue()); - if (tpDst < 0) { - row.put(MatchType.TP_DST.id(), - ((Integer) (tpDst.intValue() & 0x7FFF | 0x8000)) - .toString()); - } else { - row.put(MatchType.TP_DST.id(), tpDst.toString()); - } + row.put(MatchType.TP_DST.id(), + String.valueOf(NetUtils.getUnsignedShort(tpDst))); } else { row.put(MatchType.TP_DST.id(), "*"); }