Bug 868: Remove AD-SAL components which were deprecated in Lithium
[controller.git] / opendaylight / adsal / web / troubleshoot / src / main / java / org / opendaylight / controller / troubleshoot / web / Troubleshoot.java
diff --git a/opendaylight/adsal/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/Troubleshoot.java b/opendaylight/adsal/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/Troubleshoot.java
deleted file mode 100644 (file)
index 04fbf84..0000000
+++ /dev/null
@@ -1,459 +0,0 @@
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.controller.troubleshoot.web;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-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.SetDlDst;
-import org.opendaylight.controller.sal.action.SetDlSrc;
-import org.opendaylight.controller.sal.action.SetNwDst;
-import org.opendaylight.controller.sal.action.SetNwSrc;
-import org.opendaylight.controller.sal.action.SetNwTos;
-import org.opendaylight.controller.sal.action.SetTpDst;
-import org.opendaylight.controller.sal.action.SetTpSrc;
-import org.opendaylight.controller.sal.action.SetVlanId;
-import org.opendaylight.controller.sal.action.SetVlanPcp;
-import org.opendaylight.controller.sal.authorization.Privilege;
-import org.opendaylight.controller.sal.authorization.UserLevel;
-import org.opendaylight.controller.sal.core.Description;
-import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.controller.sal.core.NodeConnector;
-import org.opendaylight.controller.sal.core.TimeStamp;
-import org.opendaylight.controller.sal.flowprogrammer.Flow;
-import org.opendaylight.controller.sal.match.Match;
-import org.opendaylight.controller.sal.match.MatchType;
-import org.opendaylight.controller.sal.reader.FlowOnNode;
-import org.opendaylight.controller.sal.reader.NodeConnectorStatistics;
-import org.opendaylight.controller.sal.reader.NodeDescription;
-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.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;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-@Controller
-@RequestMapping("/")
-public class Troubleshoot implements IDaylightWeb {
-    private static final UserLevel AUTH_LEVEL = UserLevel.CONTAINERUSER;
-    private static final List<String> flowStatsColumnNames = Arrays.asList("Node", "In Port",
-            "DL Src", "DL Dst", "DL Type", "DL Vlan","Vlan Priority", "NW Src", "NW Dst","ToS Bits",
-            "NW Proto", "TP Src", "TP Dst", "Actions", "Bytes", "Packets",
-            "Time (s)", "Timeout (s)",
-            "Priority");
-    private static final List<String> portStatsColumnNames = Arrays.asList("Node Connector",
-            "Rx Pkts", "Tx Pkts", "Rx Bytes", "Tx Bytes", "Rx Drops",
-            "Tx Drops", "Rx Errs", "Tx Errs", "Rx Frame Errs",
-            "Rx OverRun Errs", "Rx CRC Errs", "Collisions");
-    private static final List<String> nodesColumnNames = Arrays.asList("Node", "Node ID", "Statistics");
-    private static final List<String> nodeStatsColumnNames = Arrays.asList("Node", "Node ID", "Statistics");
-    private final String WEB_NAME = "Troubleshoot";
-    private final String WEB_ID = "troubleshoot";
-    private final short WEB_ORDER = 4;
-
-
-    public Troubleshoot() {
-        ServiceHelper.registerGlobalService(IDaylightWeb.class, this, null);
-    }
-
-    @Override
-    public String getWebName() {
-        return WEB_NAME;
-    }
-
-    @Override
-    public String getWebId() {
-        return WEB_ID;
-    }
-
-    @Override
-    public short getWebOrder() {
-        return WEB_ORDER;
-    }
-
-    @Override
-    public boolean isAuthorized(UserLevel userLevel) {
-        return userLevel.ordinal() <= AUTH_LEVEL.ordinal();
-    }
-
-    @RequestMapping(value = "/nodeInfo", method = RequestMethod.GET)
-    @ResponseBody
-    public NodeDescription getNodeInfo(HttpServletRequest request, @RequestParam(required = false) String container,
-            @RequestParam(required = true) String nodeId) {
-        List<Map<String, String>> lines = new ArrayList<Map<String, String>>();
-        String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container;
-
-        // Derive the privilege this user has on the current container
-        String userName = request.getUserPrincipal().getName();
-        Privilege privilege = DaylightWebUtil.getContainerPrivilege(userName, containerName, this);
-
-        if (privilege != Privilege.NONE) {
-            IStatisticsManager statisticsManager = (IStatisticsManager) ServiceHelper
-                    .getInstance(IStatisticsManager.class, containerName, this);
-            if(statisticsManager != null){
-                Node node = Node.fromString(nodeId);
-                NodeDescription nodeDesc = statisticsManager.getNodeDescription(node);
-                return nodeDesc;
-            }
-        }
-
-        return new NodeDescription();
-    }
-
-    @RequestMapping(value = "/existingNodes", method = RequestMethod.GET)
-    @ResponseBody
-    public TroubleshootingJsonBean getExistingNodes(HttpServletRequest request, @RequestParam(required = false) String container) {
-        List<Map<String, String>> lines = new ArrayList<Map<String, String>>();
-        String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container;
-
-        // Derive the privilege this user has on the current container
-        String userName = request.getUserPrincipal().getName();
-        Privilege privilege = DaylightWebUtil.getContainerPrivilege(userName, containerName, this);
-
-        if (privilege != Privilege.NONE) {
-            ISwitchManager switchManager = (ISwitchManager) ServiceHelper
-                    .getInstance(ISwitchManager.class, containerName, this);
-            Set<Node> nodeSet = (switchManager != null) ? switchManager.getNodes() : null;
-            if (nodeSet != null) {
-                for (Node node : nodeSet) {
-                    Map<String, String> device = new HashMap<String, String>();
-                    device.put("nodeName", getNodeDesc(node, switchManager));
-                    device.put("nodeId", node.toString());
-                    lines.add(device);
-                }
-            }
-        }
-
-        TroubleshootingJsonBean result = new TroubleshootingJsonBean();
-        result.setColumnNames(nodesColumnNames);
-        result.setNodeData(lines);
-        return result;
-    }
-
-    @RequestMapping(value = "/uptime", method = RequestMethod.GET)
-    @ResponseBody
-    public TroubleshootingJsonBean getUptime(HttpServletRequest request, @RequestParam(required = false) String container) {
-        List<Map<String, String>> lines = new ArrayList<Map<String, String>>();
-        String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container;
-
-        // Derive the privilege this user has on the current container
-        String userName = request.getUserPrincipal().getName();
-        Privilege privilege = DaylightWebUtil.getContainerPrivilege(userName, containerName, this);
-
-        if (privilege != Privilege.NONE) {
-            ISwitchManager switchManager = (ISwitchManager) ServiceHelper
-                    .getInstance(ISwitchManager.class, containerName, this);
-            Set<Node> nodeSet = (switchManager != null) ? switchManager.getNodes() : null;
-            if (nodeSet != null) {
-                for (Node node : nodeSet) {
-                    Map<String, String> device = new HashMap<String, String>();
-                    device.put("nodeName", getNodeDesc(node, switchManager));
-                    device.put("nodeId", node.toString());
-                    TimeStamp timeStamp = (TimeStamp) switchManager.getNodeProp(
-                            node, TimeStamp.TimeStampPropName);
-                    Long time = (timeStamp == null) ? 0 : timeStamp.getValue();
-                    String date = (time == 0) ? "" : (new Date(time)).toString();
-                    device.put("connectedSince", date);
-                    lines.add(device);
-                }
-            }
-        }
-
-        TroubleshootingJsonBean result = new TroubleshootingJsonBean();
-        result.setColumnNames(nodeStatsColumnNames);
-        result.setNodeData(lines);
-        return result;
-    }
-
-    @RequestMapping(value = "/flowStats", method = RequestMethod.GET)
-    @ResponseBody
-    public TroubleshootingJsonBean getFlowStats(
-            @RequestParam("nodeId") String nodeId,
-            HttpServletRequest request, @RequestParam(required = false) String container) {
-        List<Map<String, String>> cells = new ArrayList<Map<String, String>>();
-        String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container;
-
-        // Derive the privilege this user has on the current container
-        String userName = request.getUserPrincipal().getName();
-        Privilege privilege = DaylightWebUtil.getContainerPrivilege(userName, containerName, this);
-
-        if (privilege != Privilege.NONE) {
-            IStatisticsManager statisticsManager = (IStatisticsManager) ServiceHelper
-                    .getInstance(IStatisticsManager.class, containerName, this);
-            if (statisticsManager != null) {
-                Node node = Node.fromString(nodeId);
-                List<FlowOnNode> statistics = statisticsManager.getFlows(node);
-                for (FlowOnNode stats : statistics) {
-                    cells.add(this.convertFlowStatistics(node, stats, containerName));
-                }
-            }
-        }
-
-        TroubleshootingJsonBean result = new TroubleshootingJsonBean();
-        result.setColumnNames(flowStatsColumnNames);
-        result.setNodeData(cells);
-        return result;
-    }
-
-    @RequestMapping(value = "/portStats", method = RequestMethod.GET)
-    @ResponseBody
-    public TroubleshootingJsonBean getPortStats(
-            @RequestParam("nodeId") String nodeId,
-            HttpServletRequest request, @RequestParam(required = false) String container) {
-        List<Map<String, String>> cells = new ArrayList<Map<String, String>>();
-        String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container;
-
-        // Derive the privilege this user has on the current container
-        String userName = request.getUserPrincipal().getName();
-        Privilege privilege = DaylightWebUtil.getContainerPrivilege(userName, containerName, this);
-
-        if (privilege != Privilege.NONE) {
-            IStatisticsManager statisticsManager = (IStatisticsManager) ServiceHelper
-                    .getInstance(IStatisticsManager.class, containerName, this);
-            if (statisticsManager != null) {
-                Node node = Node.fromString(nodeId);
-                List<NodeConnectorStatistics> statistics = statisticsManager
-                        .getNodeConnectorStatistics(node);
-                for (NodeConnectorStatistics stats : statistics) {
-                    cells.add(this.convertPortsStatistics(stats, containerName));
-                }
-            }
-        }
-
-        TroubleshootingJsonBean result = new TroubleshootingJsonBean();
-        result.setColumnNames(portStatsColumnNames);
-        result.setNodeData(cells);
-        return result;
-    }
-
-    private Map<String, String> convertPortsStatistics(
-            NodeConnectorStatistics ncStats, String containerName) {
-
-        Map<String, String> row = new HashMap<String, String>();
-
-        ISwitchManager switchManager = (ISwitchManager) ServiceHelper
-                .getInstance(ISwitchManager.class, containerName, this);
-        NodeConnector nodeConnector = ncStats.getNodeConnector();
-        Description description = (Description) switchManager.getNodeProp(nodeConnector.getNode(), Description.propertyName);
-        String desc = (description == null) ? "" : description.getValue();
-        String nodeName = desc.equalsIgnoreCase("none") ? nodeConnector.getNode().getNodeIDString() : desc;
-        String nodeConnectorDisplayName = nodeConnector.getType() + "|" + nodeConnector.getID() + "@" + nodeName;
-        row.put("nodeConnector",
-                String.valueOf(nodeConnectorDisplayName));
-
-        row.put("rxPkts", String.valueOf(ncStats.getReceivePacketCount()));
-        row.put("txPkts", String.valueOf(ncStats.getTransmitPacketCount()));
-        row.put("rxBytes", String.valueOf(ncStats.getReceiveByteCount()));
-        row.put("txBytes", String.valueOf(ncStats.getTransmitByteCount()));
-        row.put("rxDrops", String.valueOf(ncStats.getReceiveDropCount()));
-        row.put("txDrops", String.valueOf(ncStats.getTransmitDropCount()));
-        row.put("rxErrors", String.valueOf(ncStats.getReceiveErrorCount()));
-        row.put("txErrors", String.valueOf(ncStats.getTransmitErrorCount()));
-        row.put("rxFrameErrors",
-                String.valueOf(ncStats.getReceiveFrameErrorCount()));
-        row.put("rxOverRunErrors",
-                String.valueOf(ncStats.getReceiveOverRunErrorCount()));
-        row.put("rxCRCErrors",
-                String.valueOf(ncStats.getReceiveCRCErrorCount()));
-        row.put("collisions", String.valueOf(ncStats.getCollisionCount()));
-
-        return row;
-    }
-
-    private Map<String, String> convertFlowStatistics(Node node,
-            FlowOnNode flowOnNode,
-            String containerName) {
-        Map<String, String> row = new HashMap<String, String>();
-        Flow flow = flowOnNode.getFlow();
-        Match match = flow.getMatch();
-        ISwitchManager switchManager = (ISwitchManager) ServiceHelper
-                .getInstance(ISwitchManager.class, containerName, this);
-        String desc = getNodeDesc(node, switchManager);
-        desc = (desc == null || desc.isEmpty() || desc.equalsIgnoreCase("none"))?
-                        node.toString() : desc;
-        row.put("nodeName", desc);
-        if (match.isPresent(MatchType.IN_PORT)) {
-            row.put(MatchType.IN_PORT.id(), ((NodeConnector) flow.getMatch()
-                    .getField(MatchType.IN_PORT).getValue())
-                    .getNodeConnectorIdAsString());
-        } else {
-            row.put(MatchType.IN_PORT.id(), "*");
-        }
-        if (match.isPresent(MatchType.DL_SRC)) {
-            row.put(MatchType.DL_SRC.id(),
-                    (HexEncode.bytesToHexString(((byte[]) flow.getMatch()
-                            .getField(MatchType.DL_SRC).getValue()))));
-        } else {
-            row.put(MatchType.DL_SRC.id(), "*");
-        }
-        if (match.isPresent(MatchType.DL_DST)) {
-            row.put(MatchType.DL_DST.id(),
-                    (HexEncode.bytesToHexString(((byte[]) flow.getMatch()
-                            .getField(MatchType.DL_DST).getValue()))));
-        } else {
-            row.put(MatchType.DL_DST.id(), "*");
-        }
-        if (match.isPresent(MatchType.DL_TYPE)) {
-            row.put(MatchType.DL_TYPE.id(),
-                    EtherTypes.getEtherTypeName(((Short) flow.getMatch()
-                            .getField(MatchType.DL_TYPE).getValue())));
-        } else {
-            row.put(MatchType.DL_TYPE.id(), "*");
-        }
-
-        // Some physical switch has vlan as ffff to show "any" vlan
-        if (match.isPresent(MatchType.DL_VLAN)) {
-            if (((Short) flow.getMatch().getField(MatchType.DL_VLAN).getValue())
-                    .shortValue() < 0) {
-                row.put(MatchType.DL_VLAN.id(), "0");
-            } else {
-                row.put(MatchType.DL_VLAN.id(), ((Short) flow.getMatch()
-                        .getField(MatchType.DL_VLAN).getValue()).toString());
-            }
-        } else {
-            row.put(MatchType.DL_VLAN.id(), "*");
-        }
-        //Vlan Priority
-        if (match.isPresent(MatchType.DL_VLAN_PR)) {
-            if (((Byte) flow.getMatch().getField(MatchType.DL_VLAN_PR).getValue())
-                    .shortValue() < 0) {
-                row.put(MatchType.DL_VLAN_PR.id(), "0");
-            } else {
-                row.put(MatchType.DL_VLAN_PR.id(), ((Byte) flow.getMatch()
-                        .getField(MatchType.DL_VLAN_PR).getValue()).toString());
-            }
-        } else {
-            row.put(MatchType.DL_VLAN_PR.id(), "*");
-        }
-
-        if (match.isPresent(MatchType.NW_SRC)) {
-            row.put(MatchType.NW_SRC.id(), ((InetAddress) flow.getMatch()
-                    .getField(MatchType.NW_SRC).getValue()).getHostAddress());
-        } else {
-            row.put(MatchType.NW_SRC.id(), "*");
-        }
-        if (match.isPresent(MatchType.NW_DST)) {
-            row.put(MatchType.NW_DST.id(), ((InetAddress) flow.getMatch()
-                    .getField(MatchType.NW_DST).getValue()).getHostAddress());
-        } else {
-            row.put(MatchType.NW_DST.id(), "*");
-        }
-        if (match.isPresent(MatchType.NW_TOS)) {
-            row.put(MatchType.NW_TOS.id(), ((Byte) flow.getMatch()
-                        .getField(MatchType.NW_TOS).getValue()).toString());
-        } else {
-            row.put(MatchType.NW_TOS.id(), "*");
-        }
-        if (match.isPresent(MatchType.NW_PROTO)) {
-            row.put(MatchType.NW_PROTO.id(),
-                    IPProtocols.getProtocolName(((Byte) flow.getMatch()
-                            .getField(MatchType.NW_PROTO).getValue())));
-        } else {
-            row.put(MatchType.NW_PROTO.id(), "*");
-        }
-        if (match.isPresent(MatchType.TP_SRC)) {
-            Short tpSrc = (Short) (flow.getMatch().getField(MatchType.TP_SRC)
-                    .getValue());
-            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());
-            row.put(MatchType.TP_DST.id(),
-                        String.valueOf(NetUtils.getUnsignedShort(tpDst)));
-        } else {
-            row.put(MatchType.TP_DST.id(), "*");
-        }
-
-        row.put("byteCount", ((Long) flowOnNode.getByteCount()).toString());
-        row.put("packetCount", ((Long) flowOnNode.getPacketCount()).toString());
-
-        StringBuffer actions = new StringBuffer();
-        StringBuffer outPorts = new StringBuffer();
-        for (Action action : flow.getActions()) {
-
-            if (action instanceof Output) {
-                Output ao = (Output) action;
-                if (outPorts.length() > 0) {
-                    outPorts.append(" ");
-                }
-                actions.append(action.getType().toString()).append(" = ").append(ao.getPort().getNodeConnectorIdAsString()).append("<br>");
-            } else if (action instanceof SetVlanId) {
-                SetVlanId av = (SetVlanId) action;
-                String outVlanId = String.valueOf(av.getVlanId());
-                actions.append(action.getType().toString()).append(" = ").append(outVlanId).append("<br>");
-            } else if (action instanceof SetDlSrc) {
-                SetDlSrc ads = (SetDlSrc) action;
-                actions.append(action.getType().toString()).append(" = ").append(HexEncode.bytesToHexStringFormat(ads.getDlAddress())).append("<br>");
-            } else if (action instanceof SetDlDst) {
-                SetDlDst add = (SetDlDst) action;
-                actions.append(action.getType().toString()).append(" = ").append(HexEncode.bytesToHexStringFormat(add.getDlAddress())).append("<br>");
-            } else if (action instanceof SetNwSrc) {
-                SetNwSrc ans = (SetNwSrc) action;
-                actions.append(action.getType().toString()).append(" = ").append(ans.getAddressAsString()).append("<br>");
-            } else if (action instanceof SetNwDst) {
-                SetNwDst and = (SetNwDst) action;
-                actions.append(action.getType().toString()).append(" = ").append(and.getAddressAsString()).append("<br>");
-            } else if (action instanceof SetNwTos) {
-                SetNwTos ant = (SetNwTos) action;
-                actions.append(action.getType().toString()).append(" = ").append(ant.getNwTos()).append("<br>");
-            } else if (action instanceof SetTpSrc) {
-                SetTpSrc ads = (SetTpSrc) action;
-                actions.append(action.getType().toString()).append(" = ").append(ads.getPort()).append("<br>");
-            } else if (action instanceof SetTpDst) {
-                SetTpDst atd = (SetTpDst) action;
-                actions.append(action.getType().toString()).append(" = ").append(atd.getPort()).append("<br>");
-            } else if (action instanceof SetVlanPcp) {
-                SetVlanPcp avp = (SetVlanPcp) action;
-                actions.append(action.getType().toString()).append(" = ").append(avp.getPcp()).append("<br>");
-                // } else if (action instanceof SetDlSrc) {
-                // SetDlSrc ads = (SetDlSrc) action;
-            } else {
-                actions.append(action.getType().toString()).append("<br>");
-            }
-        }
-        row.put("actions", actions.toString());
-        row.put("durationSeconds",
-                ((Integer) flowOnNode.getDurationSeconds()).toString());
-        row.put("idleTimeout", ((Short) flow.getIdleTimeout()).toString());
-        row.put("priority", String.valueOf(NetUtils.getUnsignedShort(flow.getPriority())));
-        return row;
-    }
-
-    private String getNodeDesc(Node node, ISwitchManager switchManager) {
-        if (switchManager == null) {
-            return null;
-        }
-        Description desc = (Description) switchManager.getNodeProp(node, Description.propertyName);
-        return (desc == null) ? "" : desc.getValue();
-    }
-}