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=781242a969b0a0f5964a7223672e1b08a74f60fb;hb=33446bc3f844db6d0f4763d7c3080499c6d6543f;hpb=b919fb3aefb42e1207d757e8bb6386e8251e479a 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 781242a969..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,9 +8,10 @@ package org.opendaylight.controller.devices.web; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -54,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); @@ -145,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() + ")"; @@ -400,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); } } @@ -449,7 +462,7 @@ public class Devices implements IDaylightWeb { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); SubnetConfig cfgObject = new SubnetConfig(gatewayName, - gatewayIPAddress, new HashSet()); + gatewayIPAddress, new ArrayList()); Status result = switchManager.addSubnet(cfgObject); if (result.isSuccess()) { resultBean.setStatus(true); @@ -524,14 +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",nodeId+"/"+ ports, containerName); + DaylightWebUtil.auditlog("Ports to Subnet Gateway", userName, "added", ports, containerName); } else { resultBean.setStatus(false); resultBean.setMessage(result.getDescription()); @@ -563,13 +579,15 @@ 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); @@ -615,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); @@ -636,10 +659,8 @@ public class Devices implements IDaylightWeb { @RequestMapping(value = "/nodeports") @ResponseBody - public List 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(); @@ -656,16 +677,13 @@ public class Devices implements IDaylightWeb { for (Switch node : switchManager.getNetworkDevices()) { NodeJsonBean nodeJsonBean = new NodeJsonBean(); - List port = new ArrayList(); + 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(nodeConnectorName - + "(" + nodeConnector.getID() + ")"); + .getNodeConnectorProp(nodeConnector, Name.NamePropName)).getValue(); + port.add(new PortJsonBean(nodeConnector.getID().toString(), nodeConnectorName, nodeConnector.toString())); } } nodeJsonBean.setNodeId(node.getNode().toString()); @@ -674,7 +692,7 @@ public class Devices implements IDaylightWeb { nodeJsonBeans.add(nodeJsonBean); } - return nodeJsonBeans; + return new Gson().toJson(nodeJsonBeans); } @RequestMapping(value = "/spanPorts/add", method = RequestMethod.GET) @@ -735,22 +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; - } - DaylightWebUtil.auditlog("SPAN Port", userName, "removed", cfgObject.getNodeId(), containerName); + 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. "