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=188be8aee6f1ee4865b159d1f2225ec6f1534021;hb=1e9531138e44cd757ca27b0d86e98eccb22ccd82;hp=c7ba7aab1e4b258706c82055e99a81f4edf14aaa;hpb=af028c0b2ac4f25f3c7076a977bc30d1766fe782;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 c7ba7aab1e..188be8aee6 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 @@ -21,6 +21,7 @@ import javax.servlet.http.HttpServletResponse; import org.codehaus.jackson.map.ObjectMapper; import org.opendaylight.controller.usermanager.IUserManager; +import org.opendaylight.controller.web.DaylightWebUtil; import org.opendaylight.controller.web.IDaylightWeb; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -35,7 +36,6 @@ import org.opendaylight.controller.sal.core.Name; import org.opendaylight.controller.sal.core.Node; import org.opendaylight.controller.sal.core.NodeConnector; import org.opendaylight.controller.sal.core.Tier; -import org.opendaylight.controller.sal.utils.GlobalConstants; import org.opendaylight.controller.sal.utils.HexEncode; import org.opendaylight.controller.sal.utils.ServiceHelper; import org.opendaylight.controller.sal.utils.Status; @@ -55,7 +55,6 @@ public class Devices implements IDaylightWeb { private final String WEB_NAME = "Devices"; private final String WEB_ID = "devices"; private final short WEB_ORDER = 1; - private final String containerName = GlobalConstants.DEFAULT.toString(); public Devices() { ServiceHelper.registerGlobalService(IDaylightWeb.class, this, null); @@ -83,71 +82,96 @@ public class Devices implements IDaylightWeb { @RequestMapping(value = "/nodesLearnt", method = RequestMethod.GET) @ResponseBody - public DevicesJsonBean getNodesLearnt() { + public DevicesJsonBean getNodesLearnt(HttpServletRequest request, @RequestParam(required = false) String container) { Gson gson = new Gson(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); List> nodeData = new ArrayList>(); - for (Switch device : switchManager.getNetworkDevices()) { - HashMap nodeDatum = new HashMap(); - Node node = device.getNode(); - Tier tier = (Tier) switchManager.getNodeProp(node, - Tier.TierPropName); - - nodeDatum.put("containerName", containerName); - nodeDatum.put("nodeName", switchManager.getNodeDescription(node)); - 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() - .toString()); - String modeStr = (sc != null) ? sc.getMode() : "0"; - nodeDatum.put("mode", modeStr); - - nodeDatum.put("json", gson.toJson(nodeDatum)); - nodeDatum.put("mac", - HexEncode.bytesToHexString(device.getDataLayerAddress())); - StringBuffer sb1 = new StringBuffer(); - Set nodeConnectorSet = device.getNodeConnectors(); - if (nodeConnectorSet != null && nodeConnectorSet.size() > 0) { - Map portList = new HashMap(); - for (NodeConnector nodeConnector : nodeConnectorSet) { - String nodeConnectorNumberToStr = nodeConnector.getID().toString(); - Name ncName = ((Name) switchManager.getNodeConnectorProp( - nodeConnector, Name.NamePropName)); - Config portStatus = ((Config) switchManager - .getNodeConnectorProp(nodeConnector, - Config.ConfigPropName)); - - String nodeConnectorName = (ncName != null) ? ncName.getValue() - : ""; - nodeConnectorName += " ("+nodeConnector.getID()+")"; - - if (portStatus != null) { - if (portStatus.getValue() == Config.ADMIN_UP) { - nodeConnectorName = ""+nodeConnectorName+""; - } else if (portStatus.getValue() == Config.ADMIN_DOWN) { - nodeConnectorName = ""+nodeConnectorName+""; + if (switchManager != null) { + for (Switch device : switchManager.getNetworkDevices()) { + HashMap nodeDatum = new HashMap(); + Node node = device.getNode(); + Tier tier = (Tier) switchManager.getNodeProp(node, + Tier.TierPropName); + + nodeDatum.put("containerName", containerName); + nodeDatum.put("nodeName", + switchManager.getNodeDescription(node)); + 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().toString()); + String modeStr = (sc != null) ? sc.getMode() : "0"; + nodeDatum.put("mode", modeStr); + + nodeDatum.put("json", gson.toJson(nodeDatum)); + nodeDatum.put("mac", HexEncode.bytesToHexString(device + .getDataLayerAddress())); + StringBuffer sb1 = new StringBuffer(); + Set nodeConnectorSet = device + .getNodeConnectors(); + if (nodeConnectorSet != null && nodeConnectorSet.size() > 0) { + Map portList = new HashMap(); + List intfList = new ArrayList(); + for (NodeConnector nodeConnector : nodeConnectorSet) { + String nodeConnectorNumberToStr = nodeConnector.getID() + .toString(); + Name ncName = ((Name) switchManager + .getNodeConnectorProp(nodeConnector, + Name.NamePropName)); + Config portStatus = ((Config) switchManager + .getNodeConnectorProp(nodeConnector, + Config.ConfigPropName)); + + String nodeConnectorName = (ncName != null) ? ncName + .getValue() : ""; + nodeConnectorName += " (" + nodeConnector.getID() + ")"; + + if (portStatus != null) { + if (portStatus.getValue() == Config.ADMIN_UP) { + nodeConnectorName = "" + + nodeConnectorName + ""; + } else if (portStatus.getValue() == Config.ADMIN_DOWN) { + nodeConnectorName = "" + + nodeConnectorName + ""; + } + } + + Class idClass = nodeConnector.getID().getClass(); + if (idClass.equals(Short.class)) { + portList.put( + Short.parseShort(nodeConnectorNumberToStr), + nodeConnectorName); + } else { + intfList.add(nodeConnectorName); } } - - portList.put(Short.parseShort(nodeConnectorNumberToStr), - nodeConnectorName); - } - Map sortedPortList = new TreeMap(portList); + if (portList.size() > 0) { + Map sortedPortList = new TreeMap( + portList); - for (Entry e : sortedPortList.entrySet()) { - sb1.append(e.getValue()); - sb1.append("
"); + for (Entry e : sortedPortList.entrySet()) { + sb1.append(e.getValue()); + sb1.append("
"); + } + } else if (intfList.size() > 0) { + for (String intf : intfList) { + sb1.append(intf); + sb1.append("
"); + } + } } + nodeDatum.put("ports", sb1.toString()); + nodeData.add(nodeDatum); } - nodeDatum.put("ports", sb1.toString()); - nodeData.add(nodeDatum); } + DevicesJsonBean result = new DevicesJsonBean(); result.setNodeData(nodeData); List columnNames = new ArrayList(); @@ -175,12 +199,13 @@ public class Devices implements IDaylightWeb { @RequestParam("nodeId") String nodeId, @RequestParam("tier") String tier, @RequestParam("operationMode") String operationMode, - HttpServletRequest request) { + HttpServletRequest request, @RequestParam(required = false) String container) { if (!authorize(UserLevel.NETWORKADMIN, request)) { return unauthorizedMessage(); } StatusJsonBean resultBean = new StatusJsonBean(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); @@ -199,11 +224,15 @@ public class Devices implements IDaylightWeb { @RequestMapping(value = "/staticRoutes", method = RequestMethod.GET) @ResponseBody - public DevicesJsonBean getStaticRoutes() { + public DevicesJsonBean getStaticRoutes(HttpServletRequest request, @RequestParam(required = false) String container) { Gson gson = new Gson(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper .getInstance(IForwardingStaticRouting.class, containerName, this); + if (staticRouting == null) { + return null; + } List> staticRoutes = new ArrayList>(); ConcurrentMap routeConfigs = staticRouting .getStaticRouteConfigs(); @@ -230,12 +259,14 @@ public class Devices implements IDaylightWeb { public StatusJsonBean addStaticRoute( @RequestParam("routeName") String routeName, @RequestParam("staticRoute") String staticRoute, - @RequestParam("nextHop") String nextHop, HttpServletRequest request) { + @RequestParam("nextHop") String nextHop, + HttpServletRequest request, @RequestParam(required = false) String container) { if (!authorize(UserLevel.NETWORKADMIN, request)) { return unauthorizedMessage(); } StatusJsonBean result = new StatusJsonBean(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper .getInstance(IForwardingStaticRouting.class, containerName, @@ -263,12 +294,13 @@ public class Devices implements IDaylightWeb { @ResponseBody public StatusJsonBean deleteStaticRoute( @RequestParam("routesToDelete") String routesToDelete, - HttpServletRequest request) { + HttpServletRequest request, @RequestParam(required = false) String container) { if (!authorize(UserLevel.NETWORKADMIN, request)) { return unauthorizedMessage(); } StatusJsonBean resultBean = new StatusJsonBean(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper .getInstance(IForwardingStaticRouting.class, containerName, @@ -297,17 +329,20 @@ public class Devices implements IDaylightWeb { @RequestMapping(value = "/subnets", method = RequestMethod.GET) @ResponseBody - public DevicesJsonBean getSubnetGateways() { + public DevicesJsonBean getSubnetGateways(HttpServletRequest request, @RequestParam(required = false) String container) { Gson gson = new Gson(); List> subnets = new ArrayList>(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); - for (SubnetConfig conf : switchManager.getSubnetsConfigList()) { - Map subnet = new HashMap(); - subnet.put("name", conf.getName()); - subnet.put("subnet", conf.getSubnet()); - subnet.put("json", gson.toJson(conf)); - subnets.add(subnet); + if (switchManager != null) { + for (SubnetConfig conf : switchManager.getSubnetsConfigList()) { + Map subnet = new HashMap(); + subnet.put("name", conf.getName()); + subnet.put("subnet", conf.getSubnet()); + subnet.put("json", gson.toJson(conf)); + subnets.add(subnet); + } } DevicesJsonBean result = new DevicesJsonBean(); result.setColumnNames(SubnetConfig.getGuiFieldsNames()); @@ -320,12 +355,13 @@ public class Devices implements IDaylightWeb { public StatusJsonBean addSubnetGateways( @RequestParam("gatewayName") String gatewayName, @RequestParam("gatewayIPAddress") String gatewayIPAddress, - HttpServletRequest request) { + HttpServletRequest request, @RequestParam(required = false) String container) { if (!authorize(UserLevel.NETWORKADMIN, request)) { return unauthorizedMessage(); } StatusJsonBean resultBean = new StatusJsonBean(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); @@ -350,12 +386,13 @@ public class Devices implements IDaylightWeb { @ResponseBody public StatusJsonBean deleteSubnetGateways( @RequestParam("gatewaysToDelete") String gatewaysToDelete, - HttpServletRequest request) { + HttpServletRequest request, @RequestParam(required = false) String container) { if (!authorize(UserLevel.NETWORKADMIN, request)) { return unauthorizedMessage(); } StatusJsonBean resultBean = new StatusJsonBean(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); @@ -382,12 +419,14 @@ public class Devices implements IDaylightWeb { public StatusJsonBean addSubnetGatewayPort( @RequestParam("portsName") String portsName, @RequestParam("ports") String ports, - @RequestParam("nodeId") String nodeId, HttpServletRequest request) { + @RequestParam("nodeId") String nodeId, + HttpServletRequest request, @RequestParam(required = false) String container) { if (!authorize(UserLevel.NETWORKADMIN, request)) { return unauthorizedMessage(); } StatusJsonBean resultBean = new StatusJsonBean(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); @@ -414,12 +453,13 @@ public class Devices implements IDaylightWeb { public StatusJsonBean deleteSubnetGatewayPort( @RequestParam("gatewayName") String gatewayName, @RequestParam("nodePort") String nodePort, - HttpServletRequest request) { + HttpServletRequest request, @RequestParam(required = false) String container) { if (!authorize(UserLevel.NETWORKADMIN, request)) { return unauthorizedMessage(); } StatusJsonBean resultBean = new StatusJsonBean(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); @@ -443,13 +483,16 @@ public class Devices implements IDaylightWeb { @RequestMapping(value = "/spanPorts", method = RequestMethod.GET) @ResponseBody - public DevicesJsonBean getSpanPorts() { + public DevicesJsonBean getSpanPorts(HttpServletRequest request, @RequestParam(required = false) String container) { Gson gson = new Gson(); List spanConfigs_json = new ArrayList(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); - for (SpanConfig conf : switchManager.getSpanConfigList()) { - spanConfigs_json.add(gson.toJson(conf)); + if (switchManager != null) { + for (SpanConfig conf : switchManager.getSpanConfigList()) { + spanConfigs_json.add(gson.toJson(conf)); + } } ObjectMapper mapper = new ObjectMapper(); List> spanConfigs = new ArrayList>(); @@ -463,7 +506,7 @@ public class Devices implements IDaylightWeb { config.put(name, config_data.get(name)); // Add switch name value (non-configuration field) config.put("nodeName", - getNodeDesc(config_data.get("nodeId"))); + getNodeDesc(config_data.get("nodeId"), containerName)); } config.put("json", config_json); spanConfigs.add(config); @@ -479,11 +522,13 @@ public class Devices implements IDaylightWeb { @RequestMapping(value = "/nodeports") @ResponseBody - public Map getNodePorts() { + public Map getNodePorts(HttpServletRequest request, @RequestParam(required = false) String container) { + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); - if (switchManager == null) + if (switchManager == null) { return null; + } Map nodes = new HashMap(); Map port; @@ -511,7 +556,7 @@ public class Devices implements IDaylightWeb { @ResponseBody public StatusJsonBean addSpanPort( @RequestParam("jsonData") String jsonData, - HttpServletRequest request) { + HttpServletRequest request, @RequestParam(required = false) String container) { if (!authorize(UserLevel.NETWORKADMIN, request)) { return unauthorizedMessage(); } @@ -519,6 +564,7 @@ public class Devices implements IDaylightWeb { StatusJsonBean resultBean = new StatusJsonBean(); try { Gson gson = new Gson(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); SpanConfig cfgObject = gson.fromJson(jsonData, SpanConfig.class); @@ -542,7 +588,7 @@ public class Devices implements IDaylightWeb { @ResponseBody public StatusJsonBean deleteSpanPorts( @RequestParam("spanPortsToDelete") String spanPortsToDelete, - HttpServletRequest request) { + HttpServletRequest request, @RequestParam(required = false) String container) { if (!authorize(UserLevel.NETWORKADMIN, request)) { return unauthorizedMessage(); } @@ -550,6 +596,7 @@ public class Devices implements IDaylightWeb { StatusJsonBean resultBean = new StatusJsonBean(); try { Gson gson = new Gson(); + String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); String[] spans = spanPortsToDelete.split("###"); @@ -575,7 +622,7 @@ public class Devices implements IDaylightWeb { return resultBean; } - private String getNodeDesc(String nodeId) { + private String getNodeDesc(String nodeId, String containerName) { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); String description = ""; @@ -589,7 +636,7 @@ public class Devices implements IDaylightWeb { /** * Is the operation permitted for the given level - * + * * @param level */ private boolean authorize(UserLevel level, HttpServletRequest request) { @@ -622,10 +669,10 @@ public class Devices implements IDaylightWeb { * 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()); */