X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fweb%2Fdevices%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fdevices%2Fweb%2FDevices.java;h=7898f78c6214466edba0383e7908f33336e23781;hb=44331939251d6c9f800f63076e9d51bd8263b526;hp=5be771af9636967e9e076de98bfc7b60a2895ab2;hpb=0462ef3bfb5ee79460e73e103e347ad8ec4a2e34;p=controller.git diff --git a/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/Devices.java b/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/Devices.java index 5be771af96..7898f78c62 100644 --- a/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/Devices.java +++ b/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/Devices.java @@ -16,11 +16,12 @@ import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; import java.util.concurrent.ConcurrentMap; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.codehaus.jackson.map.ObjectMapper; import org.opendaylight.controller.usermanager.IUserManager; -import org.opendaylight.controller.web.IOneWeb; -import org.springframework.security.core.context.SecurityContextHolder; +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; @@ -29,6 +30,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import org.opendaylight.controller.forwarding.staticrouting.IForwardingStaticRouting; import org.opendaylight.controller.forwarding.staticrouting.StaticRouteConfig; import org.opendaylight.controller.sal.authorization.UserLevel; +import org.opendaylight.controller.sal.core.Config; import org.opendaylight.controller.sal.core.Name; import org.opendaylight.controller.sal.core.Node; import org.opendaylight.controller.sal.core.NodeConnector; @@ -48,7 +50,7 @@ import com.google.gson.Gson; @Controller @RequestMapping("/") -public class Devices implements IOneWeb { +public class Devices implements IDaylightWeb { private static final UserLevel AUTH_LEVEL = UserLevel.CONTAINERUSER; private final String WEB_NAME = "Devices"; private final String WEB_ID = "devices"; @@ -56,7 +58,7 @@ public class Devices implements IOneWeb { private final String containerName = GlobalConstants.DEFAULT.toString(); public Devices() { - ServiceHelper.registerGlobalService(IOneWeb.class, this, null); + ServiceHelper.registerGlobalService(IDaylightWeb.class, this, null); } @Override @@ -86,6 +88,7 @@ public class Devices implements IOneWeb { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); List> nodeData = new ArrayList>(); + Map portListStatus = new HashMap(); for (Switch device : switchManager.getNetworkDevices()) { HashMap nodeDatum = new HashMap(); Node node = device.getNode(); @@ -94,14 +97,14 @@ public class Devices implements IOneWeb { nodeDatum.put("containerName", containerName); nodeDatum.put("nodeName", switchManager.getNodeDescription(node)); - nodeDatum.put("nodeId", node.getNodeIDString()); + nodeDatum.put("nodeId", node.toString()); int tierNumber = (tier == null) ? TierHelper.unknownTierNumber : tier.getValue(); nodeDatum.put("tierName", TierHelper.getTierName(tierNumber) + " (Tier-" + tierNumber + ")"); nodeDatum.put("tier", tierNumber + ""); SwitchConfig sc = switchManager.getSwitchConfig(device.getNode() - .getNodeIDString()); + .toString()); String modeStr = (sc != null) ? sc.getMode() : "0"; nodeDatum.put("mode", modeStr); @@ -109,6 +112,7 @@ public class Devices implements IOneWeb { nodeDatum.put("mac", HexEncode.bytesToHexString(device.getDataLayerAddress())); StringBuffer sb1 = new StringBuffer(); + StringBuffer sb2 = new StringBuffer(); Set nodeConnectorSet = device.getNodeConnectors(); String nodeConnectorName; String nodeConnectorNumberToStr; @@ -116,21 +120,30 @@ public class Devices implements IOneWeb { Map portList = new HashMap(); for (NodeConnector nodeConnector : nodeConnectorSet) { nodeConnectorNumberToStr = nodeConnector.getID().toString(); - Name ncName = ((Name) switchManager + Name ncName = ((Name) switchManager.getNodeConnectorProp( + nodeConnector, Name.NamePropName)); + Config portStatus = ((Config) switchManager .getNodeConnectorProp(nodeConnector, - Name.NamePropName)); - nodeConnectorName = (ncName != null) ? ncName.getValue() : ""; + Config.ConfigPropName)); + nodeConnectorName = (ncName != null) ? ncName.getValue() + : ""; portList.put(Short.parseShort(nodeConnectorNumberToStr), nodeConnectorName); + portListStatus + .put(nodeConnectorName, portStatus.toString()); } + Map sortedPortList = new TreeMap( portList); + for (Entry e : sortedPortList.entrySet()) { sb1.append(e.getValue() + "(" + e.getKey() + ")"); sb1.append("
"); + sb2.append(portListStatus.get(e.getValue()) + "
"); } } nodeDatum.put("ports", sb1.toString()); + nodeDatum.put("portStatus", sb2.toString()); nodeData.add(nodeDatum); } DevicesJsonBean result = new DevicesJsonBean(); @@ -141,7 +154,8 @@ public class Devices implements IOneWeb { columnNames.add("Tier"); columnNames.add("Mac Address"); columnNames.add("Ports"); - + columnNames.add("Port Status"); + result.setColumnNames(columnNames); return result; } @@ -151,19 +165,20 @@ public class Devices implements IOneWeb { public List getTiers() { return TierHelper.getTiers(); } - + @RequestMapping(value = "/nodesLearnt/update", method = RequestMethod.GET) @ResponseBody public StatusJsonBean updateLearntNode( @RequestParam("nodeName") String nodeName, @RequestParam("nodeId") String nodeId, @RequestParam("tier") String tier, - @RequestParam("operationMode") String operationMode) { - if (!authorize(UserLevel.NETWORKADMIN)) { - return unauthorizedMessage(); - } - - StatusJsonBean resultBean = new StatusJsonBean(); + @RequestParam("operationMode") String operationMode, + HttpServletRequest request) { + if (!authorize(UserLevel.NETWORKADMIN, request)) { + return unauthorizedMessage(); + } + + StatusJsonBean resultBean = new StatusJsonBean(); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); @@ -185,7 +200,8 @@ public class Devices implements IOneWeb { public DevicesJsonBean getStaticRoutes() { Gson gson = new Gson(); IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper - .getInstance(IForwardingStaticRouting.class, containerName, this); + .getInstance(IForwardingStaticRouting.class, containerName, + this); List> staticRoutes = new ArrayList>(); ConcurrentMap routeConfigs = staticRouting .getStaticRouteConfigs(); @@ -212,11 +228,11 @@ public class Devices implements IOneWeb { public StatusJsonBean addStaticRoute( @RequestParam("routeName") String routeName, @RequestParam("staticRoute") String staticRoute, - @RequestParam("nextHop") String nextHop) { - if (!authorize(UserLevel.NETWORKADMIN)) { - return unauthorizedMessage(); - } - + @RequestParam("nextHop") String nextHop, HttpServletRequest request) { + if (!authorize(UserLevel.NETWORKADMIN, request)) { + return unauthorizedMessage(); + } + StatusJsonBean result = new StatusJsonBean(); try { IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper @@ -244,11 +260,12 @@ public class Devices implements IOneWeb { @RequestMapping(value = "/staticRoute/delete", method = RequestMethod.GET) @ResponseBody public StatusJsonBean deleteStaticRoute( - @RequestParam("routesToDelete") String routesToDelete) { - if (!authorize(UserLevel.NETWORKADMIN)) { - return unauthorizedMessage(); - } - + @RequestParam("routesToDelete") String routesToDelete, + HttpServletRequest request) { + if (!authorize(UserLevel.NETWORKADMIN, request)) { + return unauthorizedMessage(); + } + StatusJsonBean resultBean = new StatusJsonBean(); try { IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper @@ -295,15 +312,16 @@ public class Devices implements IOneWeb { result.setNodeData(subnets); return result; } - + @RequestMapping(value = "/subnetGateway/add", method = RequestMethod.GET) @ResponseBody public StatusJsonBean addSubnetGateways( @RequestParam("gatewayName") String gatewayName, - @RequestParam("gatewayIPAddress") String gatewayIPAddress) { - if (!authorize(UserLevel.NETWORKADMIN)) { - return unauthorizedMessage(); - } + @RequestParam("gatewayIPAddress") String gatewayIPAddress, + HttpServletRequest request) { + if (!authorize(UserLevel.NETWORKADMIN, request)) { + return unauthorizedMessage(); + } StatusJsonBean resultBean = new StatusJsonBean(); try { @@ -329,11 +347,12 @@ public class Devices implements IOneWeb { @RequestMapping(value = "/subnetGateway/delete", method = RequestMethod.GET) @ResponseBody public StatusJsonBean deleteSubnetGateways( - @RequestParam("gatewaysToDelete") String gatewaysToDelete) { - if (!authorize(UserLevel.NETWORKADMIN)) { - return unauthorizedMessage(); - } - + @RequestParam("gatewaysToDelete") String gatewaysToDelete, + HttpServletRequest request) { + if (!authorize(UserLevel.NETWORKADMIN, request)) { + return unauthorizedMessage(); + } + StatusJsonBean resultBean = new StatusJsonBean(); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper @@ -361,11 +380,11 @@ public class Devices implements IOneWeb { public StatusJsonBean addSubnetGatewayPort( @RequestParam("portsName") String portsName, @RequestParam("ports") String ports, - @RequestParam("nodeId") String nodeId) { - if (!authorize(UserLevel.NETWORKADMIN)) { - return unauthorizedMessage(); - } - + @RequestParam("nodeId") String nodeId, HttpServletRequest request) { + if (!authorize(UserLevel.NETWORKADMIN, request)) { + return unauthorizedMessage(); + } + StatusJsonBean resultBean = new StatusJsonBean(); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper @@ -392,11 +411,12 @@ public class Devices implements IOneWeb { @ResponseBody public StatusJsonBean deleteSubnetGatewayPort( @RequestParam("gatewayName") String gatewayName, - @RequestParam("nodePort") String nodePort) { - if (!authorize(UserLevel.NETWORKADMIN)) { - return unauthorizedMessage(); - } - + @RequestParam("nodePort") String nodePort, + HttpServletRequest request) { + if (!authorize(UserLevel.NETWORKADMIN, request)) { + return unauthorizedMessage(); + } + StatusJsonBean resultBean = new StatusJsonBean(); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper @@ -487,11 +507,13 @@ public class Devices implements IOneWeb { @RequestMapping(value = "/spanPorts/add", method = RequestMethod.GET) @ResponseBody - public StatusJsonBean addSpanPort(@RequestParam("jsonData") String jsonData) { - if (!authorize(UserLevel.NETWORKADMIN)) { - return unauthorizedMessage(); - } - + public StatusJsonBean addSpanPort( + @RequestParam("jsonData") String jsonData, + HttpServletRequest request) { + if (!authorize(UserLevel.NETWORKADMIN, request)) { + return unauthorizedMessage(); + } + StatusJsonBean resultBean = new StatusJsonBean(); try { Gson gson = new Gson(); @@ -517,11 +539,12 @@ public class Devices implements IOneWeb { @RequestMapping(value = "/spanPorts/delete", method = RequestMethod.GET) @ResponseBody public StatusJsonBean deleteSpanPorts( - @RequestParam("spanPortsToDelete") String spanPortsToDelete) { - if (!authorize(UserLevel.NETWORKADMIN)) { - return unauthorizedMessage(); - } - + @RequestParam("spanPortsToDelete") String spanPortsToDelete, + HttpServletRequest request) { + if (!authorize(UserLevel.NETWORKADMIN, request)) { + return unauthorizedMessage(); + } + StatusJsonBean resultBean = new StatusJsonBean(); try { Gson gson = new Gson(); @@ -555,39 +578,56 @@ public class Devices implements IOneWeb { .getInstance(ISwitchManager.class, containerName, this); String description = ""; if (switchManager != null) { - description = switchManager - .getNodeDescription(Node.fromString(nodeId)); + description = switchManager.getNodeDescription(Node + .fromString(nodeId)); } - return (description.isEmpty() || description.equalsIgnoreCase("none"))? - nodeId : description; + return (description.isEmpty() || description.equalsIgnoreCase("none")) ? nodeId + : description; } - /** * Is the operation permitted for the given level * * @param level */ - private boolean authorize(UserLevel level) { - IUserManager userManager = (IUserManager) ServiceHelper + private boolean authorize(UserLevel level, HttpServletRequest request) { + IUserManager userManager = (IUserManager) ServiceHelper .getGlobalInstance(IUserManager.class, this); if (userManager == null) { - return false; + return false; } - - String username = SecurityContextHolder.getContext().getAuthentication().getName(); + + String username = request.getUserPrincipal().getName(); UserLevel userLevel = userManager.getUserLevel(username); if (userLevel.toNumber() <= level.toNumber()) { - return true; + return true; } return false; } - + private StatusJsonBean unauthorizedMessage() { - StatusJsonBean message = new StatusJsonBean(); - message.setStatus(false); - message.setMessage("Operation not authorized"); - return message; + StatusJsonBean message = new StatusJsonBean(); + message.setStatus(false); + message.setMessage("Operation not authorized"); + return message; + } + + @RequestMapping(value = "login") + public String login(final HttpServletRequest request, + final HttpServletResponse response) { + // response.setHeader("X-Page-Location", "/login"); + /* + * IUserManager userManager = (IUserManager) ServiceHelper + * .getGlobalInstance(IUserManager.class, this); if (userManager == + * null) { return "User Manager is not available"; } + * + * String username = request.getUserPrincipal().getName(); + * + * + * model.addAttribute("username", username); model.addAttribute("role", + * userManager.getUserLevel(username).toNumber()); + */ + return "forward:" + "/"; } }