X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fweb%2Fdevices%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fdevices%2Fweb%2FDevices.java;h=6ca60e857d8a86963be038ca1c4714050d7bff39;hp=ca1dd971378e490b6e096521071d622fe985a38d;hb=e383b2e0b9072b7b5b3e3903b8a42ab3917b7f63;hpb=d4c36ceaa53ca2d748d8c53920617d746bb4fecb 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 ca1dd97137..6ca60e857d 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 @@ -8,8 +8,10 @@ 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.List; import java.util.Map; import java.util.Map.Entry; @@ -53,14 +55,15 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; 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 final String WEB_NAME = "Devices"; - private final String WEB_ID = "devices"; - private final short WEB_ORDER = 1; + 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); @@ -115,7 +118,14 @@ public class Devices implements IDaylightWeb { nodeDatum.put("tierName", TierHelper.getTierName(tierNumber) + " (Tier-" + tierNumber + ")"); nodeDatum.put("tier", tierNumber + ""); String modeStr = "0"; - ForwardingMode mode = (ForwardingMode) switchManager.getNodeProp(node, ForwardingMode.name); + 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()); } @@ -137,7 +147,6 @@ public class Devices implements IDaylightWeb { State portState = ((State) switchManager .getNodeConnectorProp(nodeConnector, State.StatePropName)); - String nodeConnectorName = (ncName != null) ? ncName .getValue() : ""; nodeConnectorName += " (" + nodeConnector.getID() + ")"; @@ -248,6 +257,7 @@ public class Devices implements IDaylightWeb { } else { resultBean.setStatus(true); resultBean.setMessage("Updated node information successfully"); + DaylightWebUtil.auditlog("Node", userName, "updated", nodeId + " to "+ nodeName, containerName); } } catch (Exception e) { resultBean.setStatus(false); @@ -330,6 +340,7 @@ public class Devices implements IDaylightWeb { 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()); @@ -373,6 +384,7 @@ public class Devices implements IDaylightWeb { resultBean.setMessage(result.getDescription()); break; } + DaylightWebUtil.auditlog("Static Route", userName, "removed", route, containerName); } } catch (Exception e) { resultBean.setStatus(false); @@ -389,23 +401,35 @@ public class Devices implements IDaylightWeb { @RequestParam(required = false) String container) { Gson gson = new Gson(); List> subnets = new ArrayList>(); - String containerName = (container == null) ? GlobalConstants.DEFAULT - .toString() : container; + 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); + Privilege privilege = DaylightWebUtil.getContainerPrivilege(userName, containerName, this); if (privilege != Privilege.NONE) { - ISwitchManager switchManager = (ISwitchManager) ServiceHelper - .getInstance(ISwitchManager.class, containerName, this); + 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()); - subnet.put("json", gson.toJson(conf)); + 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); } } @@ -443,6 +467,7 @@ public class Devices implements IDaylightWeb { 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()); @@ -483,6 +508,7 @@ public class Devices implements IDaylightWeb { resultBean.setMessage(result.getDescription()); break; } + DaylightWebUtil.auditlog("Subnet Gateway", userName, "removed", subnet, containerName); } } catch (Exception e) { resultBean.setStatus(false); @@ -511,13 +537,17 @@ public class Devices implements IDaylightWeb { try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); - Status result = switchManager.addPortsToSubnet(portsName, nodeId - + "/" + ports); + 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"); + DaylightWebUtil.auditlog("Ports to Subnet Gateway", userName, "added", ports, containerName); } else { resultBean.setStatus(false); resultBean.setMessage(result.getDescription()); @@ -549,13 +579,16 @@ public class Devices implements IDaylightWeb { try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); - Status result = switchManager.removePortsFromSubnet(gatewayName, - nodePort); + 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"); + resultBean.setMessage("Deleted port from subnet gateway address successfully"); + DaylightWebUtil.auditlog("Ports from Subnet Gateway", userName, "removed", nodePort, containerName); } else { resultBean.setStatus(false); resultBean.setMessage(result.getDescription()); @@ -600,9 +633,14 @@ public class Devices implements IDaylightWeb { Map config = new HashMap(); for (String name : config_data.keySet()) { config.put(name, config_data.get(name)); - // Add switch name value (non-configuration field) + // 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); @@ -621,10 +659,8 @@ public class Devices implements IDaylightWeb { @RequestMapping(value = "/nodeports") @ResponseBody - public Map getNodePorts(HttpServletRequest request, - @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT - .toString() : container; + 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(); @@ -632,34 +668,31 @@ public class Devices implements IDaylightWeb { return null; } - ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); if (switchManager == null) { return null; } - - Map nodes = new HashMap(); - Map port; + List nodeJsonBeans = new ArrayList(); for (Switch node : switchManager.getNetworkDevices()) { - port = new HashMap(); // new port + 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.put((Short) nodeConnector.getID(), nodeConnectorName - + "(" + nodeConnector.getID() + ")"); + .getNodeConnectorProp(nodeConnector, Name.NamePropName)).getValue(); + port.add(new PortJsonBean(nodeConnector.getID().toString(), nodeConnectorName, nodeConnector.toString())); } } - - nodes.put(node.getNode().toString(), port); + nodeJsonBean.setNodeId(node.getNode().toString()); + nodeJsonBean.setNodeName(getNodeDesc(node.getNode().toString(), containerName)); + nodeJsonBean.setNodePorts(port); + nodeJsonBeans.add(nodeJsonBean); } - return nodes; + return new Gson().toJson(nodeJsonBeans); } @RequestMapping(value = "/spanPorts/add", method = RequestMethod.GET) @@ -687,6 +720,7 @@ public class Devices implements IDaylightWeb { if (result.isSuccess()) { resultBean.setStatus(true); resultBean.setMessage("SPAN Port added successfully"); + DaylightWebUtil.auditlog("SPAN Port", userName, "added", cfgObject.getNodeId(), containerName); } else { resultBean.setStatus(false); resultBean.setMessage(result.getDescription()); @@ -719,21 +753,21 @@ public class Devices implements IDaylightWeb { Gson gson = new Gson(); ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); - String[] spans = spanPortsToDelete.split("###"); - resultBean.setStatus(true); - resultBean.setMessage("SPAN Port(s) deleted successfully"); - for (String span : spans) { - if (!span.isEmpty()) { - SpanConfig cfgObject = gson - .fromJson(span, SpanConfig.class); - Status result = switchManager.removeSpanConfig(cfgObject); - if (!result.isSuccess()) { - resultBean.setStatus(false); - resultBean.setMessage(result.getDescription()); - break; - } + 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", cfgObject.getNodeId(), 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. "