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;
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;
@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
@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<HashMap<String, String>> lines = new ArrayList<HashMap<String, String>>();
@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<HashMap<String, String>> lines = new ArrayList<HashMap<String, String>>();
@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<HashMap<String, String>> cells = new ArrayList<HashMap<String, String>>();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
IStatisticsManager statisticsManager = (IStatisticsManager) ServiceHelper
.getInstance(IStatisticsManager.class, containerName, this);
List<FlowOnNode> statistics = statisticsManager.getFlows(node);
for (FlowOnNode stats : statistics) {
- cells.add(this.convertFlowStatistics(node, stats));
+ cells.add(this.convertFlowStatistics(node, stats, containerName));
}
List<String> columnNames = new ArrayList<String>();
columnNames.addAll(Arrays.asList(new String[] { "Node", "In Port",
@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<HashMap<String, String>> cells = new ArrayList<HashMap<String, String>>();
+ String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this);
IStatisticsManager statisticsManager = (IStatisticsManager) ServiceHelper
.getInstance(IStatisticsManager.class, containerName, this);
List<NodeConnectorStatistics> statistics = statisticsManager
}
private HashMap<String, String> convertFlowStatistics(Node node,
- FlowOnNode flowOnNode) {
+ FlowOnNode flowOnNode,
+ String containerName) {
HashMap<String, String> row = new HashMap<String, String>();
Flow flow = flowOnNode.getFlow();
Match match = flow.getMatch();
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(), "*");
}
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(), "*");
}