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;fp=opendaylight%2Fweb%2Fdevices%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fdevices%2Fweb%2FDevices.java;h=0000000000000000000000000000000000000000;hb=42c32160bfd41de57189bb246fec5ffb48ed8e9e;hp=a9f11fafb5c2ae2e9434dc24f232f21b1a3b59d1;hpb=edf5bfcee83c750853253ccfd991ba7000f5f65b;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 deleted file mode 100644 index a9f11fafb5..0000000000 --- a/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/Devices.java +++ /dev/null @@ -1,869 +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.devices.web; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -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.opendaylight.controller.connectionmanager.IConnectionManager; -import org.opendaylight.controller.forwarding.staticrouting.IForwardingStaticRouting; -import org.opendaylight.controller.forwarding.staticrouting.StaticRouteConfig; -import org.opendaylight.controller.sal.authorization.Privilege; -import org.opendaylight.controller.sal.authorization.UserLevel; -import org.opendaylight.controller.sal.connection.ConnectionConstants; -import org.opendaylight.controller.sal.core.Config; -import org.opendaylight.controller.sal.core.Description; -import org.opendaylight.controller.sal.core.ForwardingMode; -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.Property; -import org.opendaylight.controller.sal.core.State; -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.NetUtils; -import org.opendaylight.controller.sal.utils.ServiceHelper; -import org.opendaylight.controller.sal.utils.Status; -import org.opendaylight.controller.sal.utils.StatusCode; -import org.opendaylight.controller.sal.utils.TierHelper; -import org.opendaylight.controller.switchmanager.ISwitchManager; -import org.opendaylight.controller.switchmanager.SpanConfig; -import org.opendaylight.controller.switchmanager.SubnetConfig; -import org.opendaylight.controller.switchmanager.Switch; -import org.opendaylight.controller.switchmanager.SwitchConfig; -import org.opendaylight.controller.web.DaylightWebUtil; -import org.opendaylight.controller.web.IDaylightWeb; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PathVariable; -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; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; - -@Controller -@RequestMapping("/") -public class Devices implements IDaylightWeb { - private static final UserLevel AUTH_LEVEL = UserLevel.CONTAINERUSER; - private static final String WEB_NAME = "Devices"; - private static final String WEB_ID = "devices"; - private static final short WEB_ORDER = 1; - - public Devices() { - 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 = "/nodesLearnt", method = RequestMethod.GET) - @ResponseBody - public DevicesJsonBean getNodesLearnt(HttpServletRequest request, @RequestParam(required = false) String container) { - Gson gson = new Gson(); - 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); - - ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, containerName, - this); - List> nodeData = new ArrayList>(); - if (switchManager != null && privilege != Privilege.NONE) { - 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); - Description description = (Description) switchManager.getNodeProp(node, Description.propertyName); - String desc = (description == null) ? "" : description.getValue(); - nodeDatum.put("nodeName", desc); - 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 + ""); - String modeStr = "0"; - ForwardingMode mode = null; - if (!containerName.equals(GlobalConstants.DEFAULT.toString())) { - ISwitchManager switchManagerDefault = (ISwitchManager) ServiceHelper.getInstance( - ISwitchManager.class, GlobalConstants.DEFAULT.toString(), this); - mode = (ForwardingMode) switchManagerDefault.getNodeProp(node, ForwardingMode.name); - } else { - mode = (ForwardingMode) switchManager.getNodeProp(node, ForwardingMode.name); - } - if (mode != null) { - modeStr = String.valueOf(mode.getValue()); - } - nodeDatum.put("mode", modeStr); - - nodeDatum.put("json", gson.toJson(nodeDatum)); - nodeDatum.put("mac", HexEncode.bytesToHexStringFormat(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 portConfig = ((Config) switchManager.getNodeConnectorProp(nodeConnector, - Config.ConfigPropName)); - State portState = ((State) switchManager.getNodeConnectorProp(nodeConnector, - State.StatePropName)); - String nodeConnectorName = (ncName != null) ? ncName.getValue() : ""; - nodeConnectorName += " (" + nodeConnector.getID() + ")"; - - if (portConfig != null) { - if (portConfig.getValue() == Config.ADMIN_UP) { - if (portState != null && portState.getValue() == State.EDGE_UP) { - nodeConnectorName = "" + nodeConnectorName + ""; - } else if (portState == null || portState.getValue() == State.EDGE_DOWN) { - nodeConnectorName = "" + nodeConnectorName + ""; - } - } else if (portConfig.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); - } - } - - if (portList.size() > 0) { - Map sortedPortList = new TreeMap(portList); - - 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); - } - } - - DevicesJsonBean result = new DevicesJsonBean(); - result.setNodeData(nodeData); - result.setPrivilege(privilege); - List columnNames = new ArrayList(); - columnNames.add("Node ID"); - columnNames.add("Node Name"); - columnNames.add("Tier"); - columnNames.add("Mac Address"); - columnNames.add("Ports"); - columnNames.add("Port Status"); - - result.setColumnNames(columnNames); - return result; - } - - @RequestMapping(value = "/tiers", method = RequestMethod.GET) - @ResponseBody - 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, HttpServletRequest request, - @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container; - - // Authorization check - String userName = request.getUserPrincipal().getName(); - if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { - return unauthorizedMessage(); - } - - StatusJsonBean resultBean = new StatusJsonBean(); - try { - ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, - containerName, this); - Map nodeProperties = new HashMap(); - Property desc = new Description(nodeName); - nodeProperties.put(desc.getName(), desc); - Property nodeTier = new Tier(Integer.parseInt(tier)); - nodeProperties.put(nodeTier.getName(), nodeTier); - if (containerName.equals(GlobalConstants.DEFAULT.toString())) { - Property mode = new ForwardingMode(Integer.parseInt(operationMode)); - nodeProperties.put(mode.getName(), mode); - } - SwitchConfig cfg = new SwitchConfig(nodeId, nodeProperties); - Status result = switchManager.updateNodeConfig(cfg); - if (!result.isSuccess()) { - resultBean.setStatus(false); - resultBean.setMessage(result.getDescription()); - } else { - resultBean.setStatus(true); - resultBean.setMessage("Updated node information successfully"); - DaylightWebUtil.auditlog("Property", userName, "updated", - "of Node " + DaylightWebUtil.getNodeDesc(Node.fromString(nodeId), switchManager)); - } - } catch (Exception e) { - resultBean.setStatus(false); - resultBean.setMessage("Error updating node information. " + e.getMessage()); - } - return resultBean; - } - - @RequestMapping(value = "/staticRoutes", method = RequestMethod.GET) - @ResponseBody - public DevicesJsonBean getStaticRoutes(HttpServletRequest request, @RequestParam(required = false) String container) { - Gson gson = new Gson(); - 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); - - IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper.getInstance( - IForwardingStaticRouting.class, containerName, this); - if (staticRouting == null) { - return null; - } - List> staticRoutes = new ArrayList>(); - ConcurrentMap routeConfigs = staticRouting.getStaticRouteConfigs(); - if (routeConfigs == null) { - return null; - } - if (privilege != Privilege.NONE) { - for (StaticRouteConfig conf : routeConfigs.values()) { - Map staticRoute = new HashMap(); - staticRoute.put("name", conf.getName()); - staticRoute.put("staticRoute", conf.getStaticRoute()); - staticRoute.put("nextHopType", conf.getNextHopType()); - staticRoute.put("nextHop", conf.getNextHop()); - staticRoute.put("json", gson.toJson(conf)); - staticRoutes.add(staticRoute); - } - } - DevicesJsonBean result = new DevicesJsonBean(); - result.setPrivilege(privilege); - result.setColumnNames(StaticRouteConfig.getGuiFieldsNames()); - result.setNodeData(staticRoutes); - return result; - } - - @RequestMapping(value = "/staticRoute/add", method = RequestMethod.GET) - @ResponseBody - public StatusJsonBean addStaticRoute(@RequestParam("routeName") String routeName, - @RequestParam("staticRoute") String staticRoute, @RequestParam("nextHop") String nextHop, - HttpServletRequest request, @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container; - - // Authorization check - String userName = request.getUserPrincipal().getName(); - if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { - return unauthorizedMessage(); - } - - StatusJsonBean result = new StatusJsonBean(); - try { - IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper.getInstance( - IForwardingStaticRouting.class, containerName, this); - StaticRouteConfig config = new StaticRouteConfig(); - config.setName(routeName); - config.setStaticRoute(staticRoute); - config.setNextHop(nextHop); - Status addStaticRouteResult = staticRouting.addStaticRoute(config); - if (addStaticRouteResult.isSuccess()) { - result.setStatus(true); - result.setMessage("Static Route saved successfully"); - DaylightWebUtil.auditlog("Static Route", userName, "added", routeName, containerName); - } else { - result.setStatus(false); - result.setMessage(addStaticRouteResult.getDescription()); - } - } catch (Exception e) { - result.setStatus(false); - result.setMessage("Error - " + e.getMessage()); - } - return result; - } - - @RequestMapping(value = "/staticRoute/delete", method = RequestMethod.GET) - @ResponseBody - public StatusJsonBean deleteStaticRoute(@RequestParam("routesToDelete") String routesToDelete, - HttpServletRequest request, @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container; - - // Authorization check - String userName = request.getUserPrincipal().getName(); - if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { - return unauthorizedMessage(); - } - - StatusJsonBean resultBean = new StatusJsonBean(); - try { - IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper.getInstance( - IForwardingStaticRouting.class, containerName, this); - String[] routes = routesToDelete.split(","); - Status result; - resultBean.setStatus(true); - resultBean.setMessage("Successfully deleted selected static routes"); - for (String route : routes) { - result = staticRouting.removeStaticRoute(route); - if (!result.isSuccess()) { - resultBean.setStatus(false); - resultBean.setMessage(result.getDescription()); - break; - } - DaylightWebUtil.auditlog("Static Route", userName, "removed", route, containerName); - } - } catch (Exception e) { - resultBean.setStatus(false); - resultBean.setMessage("Error occurred while deleting static routes. " + e.getMessage()); - } - return resultBean; - } - - @RequestMapping(value = "/subnets", method = RequestMethod.GET) - @ResponseBody - public DevicesJsonBean getSubnetGateways(HttpServletRequest request, - @RequestParam(required = false) String container) { - Gson gson = new Gson(); - List> subnets = new ArrayList>(); - 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); - if (switchManager != null) { - for (SubnetConfig conf : switchManager.getSubnetsConfigList()) { - Map subnet = new HashMap(); - subnet.put("name", conf.getName()); - subnet.put("subnet", conf.getSubnet()); - List portsList = new ArrayList(); - Iterator itor = conf.getNodeConnectors().iterator(); - while (itor.hasNext()) { - SubnetGatewayPortBean bean = new SubnetGatewayPortBean(); - NodeConnector nodeConnector = itor.next(); - String nodeName = getNodeDesc(nodeConnector.getNode().toString(), containerName); - Name ncName = ((Name) switchManager.getNodeConnectorProp(nodeConnector, Name.NamePropName)); - String nodeConnectorName = (ncName != null) ? ncName.getValue() : ""; - bean.setNodeName(nodeName); - bean.setNodePortName(nodeConnectorName); - bean.setNodeId(nodeConnector.getNode().toString()); - bean.setNodePortId(nodeConnector.toString()); - portsList.add(bean); - } - subnet.put("nodePorts", gson.toJson(portsList)); - subnets.add(subnet); - } - } - } - DevicesJsonBean result = new DevicesJsonBean(); - result.setPrivilege(privilege); - result.setColumnNames(SubnetConfig.getGuiFieldsNames()); - result.setNodeData(subnets); - return result; - } - - @RequestMapping(value = "/subnetGateway/add", method = RequestMethod.GET) - @ResponseBody - public StatusJsonBean addSubnetGateways(@RequestParam("gatewayName") String gatewayName, - @RequestParam("gatewayIPAddress") String gatewayIPAddress, HttpServletRequest request, - @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container; - - // Authorization check - String userName = request.getUserPrincipal().getName(); - if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { - return unauthorizedMessage(); - } - - StatusJsonBean resultBean = new StatusJsonBean(); - try { - ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, - containerName, this); - SubnetConfig cfgObject = new SubnetConfig(gatewayName, gatewayIPAddress, new ArrayList()); - Status result = switchManager.addSubnet(cfgObject); - if (result.isSuccess()) { - resultBean.setStatus(true); - resultBean.setMessage("Added gateway address successfully"); - DaylightWebUtil.auditlog("Subnet Gateway", userName, "added", gatewayName, containerName); - } else { - resultBean.setStatus(false); - resultBean.setMessage(result.getDescription()); - } - } catch (Exception e) { - resultBean.setStatus(false); - resultBean.setMessage(e.getMessage()); - } - return resultBean; - } - - @RequestMapping(value = "/subnetGateway/delete", method = RequestMethod.GET) - @ResponseBody - public StatusJsonBean deleteSubnetGateways(@RequestParam("gatewaysToDelete") String gatewaysToDelete, - HttpServletRequest request, @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container; - - // Authorization check - String userName = request.getUserPrincipal().getName(); - if (DaylightWebUtil.getContainerPrivilege(userName, container, this) != Privilege.WRITE) { - return unauthorizedMessage(); - } - - StatusJsonBean resultBean = new StatusJsonBean(); - try { - ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, - containerName, this); - String[] subnets = gatewaysToDelete.split(","); - resultBean.setStatus(true); - resultBean.setMessage("Added gateway address successfully"); - for (String subnet : subnets) { - Status result = switchManager.removeSubnet(subnet); - if (!result.isSuccess()) { - resultBean.setStatus(false); - resultBean.setMessage(result.getDescription()); - break; - } - DaylightWebUtil.auditlog("Subnet Gateway", userName, "removed", subnet, containerName); - } - } catch (Exception e) { - resultBean.setStatus(false); - resultBean.setMessage(e.getMessage()); - } - return resultBean; - } - - @RequestMapping(value = "/subnetGateway/ports/add", method = RequestMethod.GET) - @ResponseBody - public StatusJsonBean addSubnetGatewayPort(@RequestParam("portsName") String portsName, - @RequestParam("ports") String ports, @RequestParam("nodeId") String nodeId, HttpServletRequest request, - @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container; - - // Authorization check - String userName = request.getUserPrincipal().getName(); - if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { - return unauthorizedMessage(); - } - - StatusJsonBean resultBean = new StatusJsonBean(); - try { - ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, - containerName, this); - List toAdd = new ArrayList(); - for (String port : ports.split(",")) { - toAdd.add(port); - } - Status result = switchManager.addPortsToSubnet(portsName, toAdd); - - if (result.isSuccess()) { - resultBean.setStatus(true); - resultBean.setMessage("Added ports to subnet gateway address successfully"); - for (String port : toAdd) { - DaylightWebUtil.auditlog("Port", userName, "added", - DaylightWebUtil.getPortName(NodeConnector.fromString(port), switchManager) - + " to Subnet Gateway " + portsName, containerName); - } - } else { - resultBean.setStatus(false); - resultBean.setMessage(result.getDescription()); - } - } catch (Exception e) { - resultBean.setStatus(false); - resultBean.setMessage(e.getMessage()); - } - return resultBean; - } - - @RequestMapping(value = "/subnetGateway/ports/delete", method = RequestMethod.GET) - @ResponseBody - public StatusJsonBean deleteSubnetGatewayPort(@RequestParam("gatewayName") String gatewayName, - @RequestParam("nodePort") String nodePort, HttpServletRequest request, - @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container; - - // Authorization check - String userName = request.getUserPrincipal().getName(); - if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { - return unauthorizedMessage(); - } - - StatusJsonBean resultBean = new StatusJsonBean(); - try { - ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, - containerName, this); - List toRemove = new ArrayList(); - for (String port : nodePort.split(",")) { - toRemove.add(port); - } - Status result = switchManager.removePortsFromSubnet(gatewayName, toRemove); - - if (result.isSuccess()) { - resultBean.setStatus(true); - resultBean.setMessage("Deleted port from subnet gateway address successfully"); - for (String port : toRemove) { - DaylightWebUtil.auditlog("Port", userName, "removed", - DaylightWebUtil.getPortName(NodeConnector.fromString(port), switchManager) - + " from Subnet Gateway " + gatewayName, containerName); - } - } else { - resultBean.setStatus(false); - resultBean.setMessage(result.getDescription()); - } - } catch (Exception e) { - resultBean.setStatus(false); - resultBean.setMessage(e.getMessage()); - } - return resultBean; - } - - @RequestMapping(value = "/spanPorts", method = RequestMethod.GET) - @ResponseBody - public DevicesJsonBean getSpanPorts(HttpServletRequest request, @RequestParam(required = false) String container) { - Gson gson = new Gson(); - List> spanConfigs = new ArrayList>(); - 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) { - List spanConfigs_json = new ArrayList(); - ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, - containerName, this); - if (switchManager != null) { - for (SpanConfig conf : switchManager.getSpanConfigList()) { - spanConfigs_json.add(gson.toJson(conf)); - } - } - ObjectMapper mapper = new ObjectMapper(); - - for (String config_json : spanConfigs_json) { - try { - @SuppressWarnings("unchecked") - Map config_data = mapper.readValue(config_json, HashMap.class); - Map config = new HashMap(); - for (String name : config_data.keySet()) { - config.put(name, config_data.get(name)); - // Add switch portName value (non-configuration field) - config.put("nodeName", getNodeDesc(config_data.get("nodeId"), containerName)); - NodeConnector spanPortNodeConnector = NodeConnector.fromString(config_data.get("spanPort")); - Name ncName = ((Name) switchManager.getNodeConnectorProp(spanPortNodeConnector, - Name.NamePropName)); - String spanPortName = (ncName != null) ? ncName.getValue() : ""; - config.put("spanPortName", spanPortName); - } - config.put("json", config_json); - spanConfigs.add(config); - } catch (Exception e) { - // TODO: Handle the exception. - } - } - } - - DevicesJsonBean result = new DevicesJsonBean(); - result.setPrivilege(privilege); - result.setColumnNames(SpanConfig.getGuiFieldsNames()); - result.setNodeData(spanConfigs); - return result; - } - - @RequestMapping(value = "/nodeports") - @ResponseBody - public String getNodePorts(HttpServletRequest request, @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container; - - // Derive the privilege this user has on the current container - String userName = request.getUserPrincipal().getName(); - if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) == Privilege.NONE) { - return null; - } - - ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, containerName, - this); - if (switchManager == null) { - return null; - } - List nodeJsonBeans = new ArrayList(); - - for (Switch node : switchManager.getNetworkDevices()) { - NodeJsonBean nodeJsonBean = new NodeJsonBean(); - List port = new ArrayList(); - Set nodeConnectorSet = node.getNodeConnectors(); - if (nodeConnectorSet != null) { - for (NodeConnector nodeConnector : nodeConnectorSet) { - String nodeConnectorName = ((Name) switchManager.getNodeConnectorProp(nodeConnector, - Name.NamePropName)).getValue(); - port.add(new PortJsonBean(nodeConnector.getID().toString(), nodeConnectorName, nodeConnector - .toString())); - } - } - nodeJsonBean.setNodeId(node.getNode().toString()); - nodeJsonBean.setNodeName(getNodeDesc(node.getNode().toString(), containerName)); - nodeJsonBean.setNodePorts(port); - nodeJsonBeans.add(nodeJsonBean); - } - - return new Gson().toJson(nodeJsonBeans); - } - - @RequestMapping(value = "/spanPorts/add", method = RequestMethod.GET) - @ResponseBody - public StatusJsonBean addSpanPort(@RequestParam("jsonData") String jsonData, HttpServletRequest request, - @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container; - - // Authorization check - String userName = request.getUserPrincipal().getName(); - if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { - return unauthorizedMessage(); - } - - StatusJsonBean resultBean = new StatusJsonBean(); - try { - Gson gson = new Gson(); - ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, - containerName, this); - SpanConfig cfgObject = gson.fromJson(jsonData, SpanConfig.class); - Status result = switchManager.addSpanConfig(cfgObject); - if (result.isSuccess()) { - resultBean.setStatus(true); - resultBean.setMessage("SPAN Port added successfully"); - DaylightWebUtil.auditlog("SPAN Port", userName, "added", - DaylightWebUtil.getPortName(NodeConnector.fromString(cfgObject.getSpanPort()), switchManager), - containerName); - } else { - resultBean.setStatus(false); - resultBean.setMessage(result.getDescription()); - } - } catch (Exception e) { - resultBean.setStatus(false); - resultBean.setMessage("Error occurred while adding span port. " + e.getMessage()); - } - return resultBean; - } - - @RequestMapping(value = "/spanPorts/delete", method = RequestMethod.GET) - @ResponseBody - public StatusJsonBean deleteSpanPorts(@RequestParam("spanPortsToDelete") String spanPortsToDelete, - HttpServletRequest request, @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container; - - // Authorization check - String userName = request.getUserPrincipal().getName(); - if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { - return unauthorizedMessage(); - } - - StatusJsonBean resultBean = new StatusJsonBean(); - try { - Gson gson = new Gson(); - ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, - containerName, this); - Type collectionType = new TypeToken>() { - }.getType(); - List jsonBeanList = gson.fromJson(spanPortsToDelete, collectionType); - for (SpanPortJsonBean jsonBean : jsonBeanList) { - SpanConfig cfgObject = gson.fromJson(gson.toJson(jsonBean), SpanConfig.class); - Status result = switchManager.removeSpanConfig(cfgObject); - if (!result.isSuccess()) { - resultBean.setStatus(false); - resultBean.setMessage(result.getDescription()); - break; - } - DaylightWebUtil.auditlog("SPAN Port", userName, "removed", - DaylightWebUtil.getPortName(NodeConnector.fromString(cfgObject.getSpanPort()), switchManager), - containerName); - } - resultBean.setStatus(true); - resultBean.setMessage("SPAN Port(s) deleted successfully"); - } catch (Exception e) { - resultBean.setStatus(false); - resultBean.setMessage("Error occurred while deleting span port. " + e.getMessage()); - } - return resultBean; - } - - @RequestMapping(value = "/connect/nodes", method = RequestMethod.GET) - @ResponseBody - public List getNodes(HttpServletRequest request) { - IConnectionManager connectionManager = (IConnectionManager) ServiceHelper.getGlobalInstance( - IConnectionManager.class, this); - if (connectionManager == null) { - return null; - } - ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, - GlobalConstants.DEFAULT.toString(), this); - if (switchManager == null) { - return null; - } - - Set nodes = connectionManager.getLocalNodes(); - List result = new LinkedList(); - if (nodes == null) { - return result; - } - for (Node node : nodes) { - Description descriptionProperty = (Description) switchManager.getNodeProp(node, "description"); - String description = node.toString(); - if (descriptionProperty != null) { - description = descriptionProperty.getValue(); - } - NodeJsonBean nodeBean = new NodeJsonBean(); - nodeBean.setNodeId(node.getNodeIDString()); - nodeBean.setNodeType(node.getType()); - if (description.equals("None")) { - nodeBean.setNodeName(node.toString()); - } else { - nodeBean.setNodeName(description); - } - result.add(nodeBean); - } - - return result; - } - - @RequestMapping(value = "/connect/{nodeId:.+}", method = RequestMethod.POST) - @ResponseBody - public Status addNode(HttpServletRequest request, @PathVariable("nodeId") String nodeId, - @RequestParam(required = true) String ipAddress, @RequestParam(required = true) String port, - @RequestParam(required = false) String nodeType) { - IConnectionManager connectionManager = (IConnectionManager) ServiceHelper.getGlobalInstance( - IConnectionManager.class, this); - if (connectionManager == null) { - return new Status(StatusCode.NOTFOUND, "Service not found"); - } - - if (!NetUtils.isIPv4AddressValid(ipAddress)) { - return new Status(StatusCode.NOTACCEPTABLE, "Invalid IP Address: " + ipAddress); - } - - try { - Integer.parseInt(port); - } catch (Exception e) { - return new Status(StatusCode.NOTACCEPTABLE, "Invalid Layer 4 Port: " + port); - } - - Map params = new HashMap(); - params.put(ConnectionConstants.ADDRESS, ipAddress); - params.put(ConnectionConstants.PORT, port); - - Node node = null; - if (nodeType != null) { - node = connectionManager.connect(nodeType, nodeId, params); - } else { - node = connectionManager.connect(nodeId, params); - } - if (node == null) { - return new Status(StatusCode.NOTFOUND, "Failed to connect to Node at " + ipAddress + ":" + port); - } - return new Status(StatusCode.SUCCESS); - } - - @RequestMapping(value = "/disconnect/{nodeId:.+}", method = RequestMethod.POST) - @ResponseBody - public Status removeNode(HttpServletRequest request, @PathVariable("nodeId") String nodeId, - @RequestParam(required = true) String nodeType) { - IConnectionManager connectionManager = (IConnectionManager) ServiceHelper.getGlobalInstance( - IConnectionManager.class, this); - if (connectionManager == null) { - return new Status(StatusCode.NOTFOUND, "Service not found"); - } - - try { - Node node = new Node(nodeType, nodeId); - return connectionManager.disconnect(node); - } catch (Exception e) { - return new Status(StatusCode.NOTFOUND, "Resource not found"); - } - } - - private String getNodeDesc(String nodeId, String containerName) { - ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, containerName, - this); - String description = ""; - if (switchManager != null) { - Description desc = (Description) switchManager.getNodeProp(Node.fromString(nodeId), - Description.propertyName); - if (desc != null) { - description = desc.getValue(); - } - } - return (description.isEmpty() || description.equalsIgnoreCase("none")) ? nodeId : description; - } - - private StatusJsonBean unauthorizedMessage() { - 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) { - /* - * 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:" + "/"; - } - -}