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=ca1dd971378e490b6e096521071d622fe985a38d;hb=refs%2Fchanges%2F80%2F780%2F1;hp=188be8aee6f1ee4865b159d1f2225ec6f1534021;hpb=1e9531138e44cd757ca27b0d86e98eccb22ccd82;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 188be8aee6..ca1dd97137 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,26 +16,25 @@ 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.DaylightWebUtil; -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; -import org.springframework.web.bind.annotation.RequestParam; -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.Privilege; import org.opendaylight.controller.sal.authorization.UserLevel; 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.ServiceHelper; import org.opendaylight.controller.sal.utils.Status; @@ -45,6 +44,13 @@ 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.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; import com.google.gson.Gson; @@ -82,51 +88,55 @@ public class Devices implements IDaylightWeb { @RequestMapping(value = "/nodesLearnt", method = RequestMethod.GET) @ResponseBody - public DevicesJsonBean getNodesLearnt(HttpServletRequest request, @RequestParam(required = false) String container) { + 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); + 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) { + 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); - + Tier tier = (Tier) switchManager.getNodeProp(node, Tier.TierPropName); nodeDatum.put("containerName", containerName); - nodeDatum.put("nodeName", - switchManager.getNodeDescription(node)); + 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 + ")"); + 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"; + String modeStr = "0"; + ForwardingMode 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.bytesToHexString(device - .getDataLayerAddress())); + nodeDatum.put("mac", HexEncode.bytesToHexString(device.getDataLayerAddress())); StringBuffer sb1 = new StringBuffer(); - Set nodeConnectorSet = device - .getNodeConnectors(); + 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)); + String nodeConnectorNumberToStr = nodeConnector.getID().toString(); + Name ncName = ((Name) switchManager.getNodeConnectorProp(nodeConnector, Name.NamePropName)); Config portStatus = ((Config) switchManager .getNodeConnectorProp(nodeConnector, Config.ConfigPropName)); + State portState = ((State) switchManager + .getNodeConnectorProp(nodeConnector, + State.StatePropName)); String nodeConnectorName = (ncName != null) ? ncName .getValue() : ""; @@ -134,10 +144,15 @@ public class Devices implements IDaylightWeb { if (portStatus != null) { if (portStatus.getValue() == Config.ADMIN_UP) { - nodeConnectorName = "" - + nodeConnectorName + ""; + if (portState.getValue() == State.EDGE_UP) { + nodeConnectorName = "" + + nodeConnectorName + ""; + } else if (portState.getValue() == State.EDGE_DOWN) { + nodeConnectorName = "" + + nodeConnectorName + ""; + } } else if (portStatus.getValue() == Config.ADMIN_DOWN) { - nodeConnectorName = "" + nodeConnectorName = "" + nodeConnectorName + ""; } } @@ -174,6 +189,7 @@ public class Devices implements IDaylightWeb { DevicesJsonBean result = new DevicesJsonBean(); result.setNodeData(nodeData); + result.setPrivilege(privilege); List columnNames = new ArrayList(); columnNames.add("Node ID"); columnNames.add("Node Name"); @@ -199,21 +215,40 @@ public class Devices implements IDaylightWeb { @RequestParam("nodeId") String nodeId, @RequestParam("tier") String tier, @RequestParam("operationMode") String operationMode, - HttpServletRequest request, @RequestParam(required = false) String container) { - if (!authorize(UserLevel.NETWORKADMIN, request)) { + 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(); - String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); - SwitchConfig cfg = new SwitchConfig(nodeId, nodeName, tier, - operationMode); - switchManager.updateSwitchConfig(cfg); - resultBean.setStatus(true); - resultBean.setMessage("Updated node information successfully"); + 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"); + } } catch (Exception e) { resultBean.setStatus(false); resultBean.setMessage("Error updating node information. " @@ -224,9 +259,16 @@ public class Devices implements IDaylightWeb { @RequestMapping(value = "/staticRoutes", method = RequestMethod.GET) @ResponseBody - public DevicesJsonBean getStaticRoutes(HttpServletRequest request, @RequestParam(required = false) String container) { + public DevicesJsonBean getStaticRoutes(HttpServletRequest request, + @RequestParam(required = false) String container) { Gson gson = new Gson(); - String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); + 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); @@ -239,16 +281,19 @@ public class Devices implements IDaylightWeb { if (routeConfigs == null) { return null; } - 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); + 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; @@ -260,13 +305,19 @@ public class Devices implements IDaylightWeb { @RequestParam("routeName") String routeName, @RequestParam("staticRoute") String staticRoute, @RequestParam("nextHop") String nextHop, - HttpServletRequest request, @RequestParam(required = false) String container) { - if (!authorize(UserLevel.NETWORKADMIN, request)) { + 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(); - String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper .getInstance(IForwardingStaticRouting.class, containerName, @@ -294,13 +345,18 @@ public class Devices implements IDaylightWeb { @ResponseBody public StatusJsonBean deleteStaticRoute( @RequestParam("routesToDelete") String routesToDelete, - HttpServletRequest request, @RequestParam(required = false) String container) { - if (!authorize(UserLevel.NETWORKADMIN, request)) { + 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(); - String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { IForwardingStaticRouting staticRouting = (IForwardingStaticRouting) ServiceHelper .getInstance(IForwardingStaticRouting.class, containerName, @@ -329,22 +385,33 @@ public class Devices implements IDaylightWeb { @RequestMapping(value = "/subnets", method = RequestMethod.GET) @ResponseBody - public DevicesJsonBean getSubnetGateways(HttpServletRequest request, @RequestParam(required = false) String container) { + 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); - 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); + 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()); + subnet.put("json", gson.toJson(conf)); + subnets.add(subnet); + } } } DevicesJsonBean result = new DevicesJsonBean(); + result.setPrivilege(privilege); result.setColumnNames(SubnetConfig.getGuiFieldsNames()); result.setNodeData(subnets); return result; @@ -355,13 +422,18 @@ public class Devices implements IDaylightWeb { public StatusJsonBean addSubnetGateways( @RequestParam("gatewayName") String gatewayName, @RequestParam("gatewayIPAddress") String gatewayIPAddress, - HttpServletRequest request, @RequestParam(required = false) String container) { - if (!authorize(UserLevel.NETWORKADMIN, request)) { + 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(); - String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); @@ -386,13 +458,18 @@ public class Devices implements IDaylightWeb { @ResponseBody public StatusJsonBean deleteSubnetGateways( @RequestParam("gatewaysToDelete") String gatewaysToDelete, - HttpServletRequest request, @RequestParam(required = false) String container) { - if (!authorize(UserLevel.NETWORKADMIN, request)) { + 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(); - String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); @@ -419,14 +496,18 @@ public class Devices implements IDaylightWeb { public StatusJsonBean addSubnetGatewayPort( @RequestParam("portsName") String portsName, @RequestParam("ports") String ports, - @RequestParam("nodeId") String nodeId, - HttpServletRequest request, @RequestParam(required = false) String container) { - if (!authorize(UserLevel.NETWORKADMIN, request)) { + @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(); - String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); @@ -453,13 +534,18 @@ public class Devices implements IDaylightWeb { public StatusJsonBean deleteSubnetGatewayPort( @RequestParam("gatewayName") String gatewayName, @RequestParam("nodePort") String nodePort, - HttpServletRequest request, @RequestParam(required = false) String container) { - if (!authorize(UserLevel.NETWORKADMIN, request)) { + 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(); - String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); try { ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); @@ -483,38 +569,51 @@ public class Devices implements IDaylightWeb { @RequestMapping(value = "/spanPorts", method = RequestMethod.GET) @ResponseBody - public DevicesJsonBean getSpanPorts(HttpServletRequest request, @RequestParam(required = false) String container) { + 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); - if (switchManager != null) { - for (SpanConfig conf : switchManager.getSpanConfigList()) { - spanConfigs_json.add(gson.toJson(conf)); - } - } - ObjectMapper mapper = new ObjectMapper(); List> spanConfigs = new ArrayList>(); - 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 name value (non-configuration field) - config.put("nodeName", - getNodeDesc(config_data.get("nodeId"), containerName)); + 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 name value (non-configuration field) + config.put("nodeName", + getNodeDesc(config_data.get("nodeId"), containerName)); + } + config.put("json", config_json); + spanConfigs.add(config); + } catch (Exception e) { + // TODO: Handle the exception. } - 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; @@ -522,8 +621,18 @@ public class Devices implements IDaylightWeb { @RequestMapping(value = "/nodeports") @ResponseBody - public Map getNodePorts(HttpServletRequest request, @RequestParam(required = false) String container) { - String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); + public Map 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) { @@ -537,7 +646,7 @@ public class Devices implements IDaylightWeb { port = new HashMap(); // new port Set nodeConnectorSet = node.getNodeConnectors(); - if (nodeConnectorSet != null) + if (nodeConnectorSet != null) { for (NodeConnector nodeConnector : nodeConnectorSet) { String nodeConnectorName = ((Name) switchManager .getNodeConnectorProp(nodeConnector, @@ -545,6 +654,7 @@ public class Devices implements IDaylightWeb { port.put((Short) nodeConnector.getID(), nodeConnectorName + "(" + nodeConnector.getID() + ")"); } + } nodes.put(node.getNode().toString(), port); } @@ -556,15 +666,20 @@ public class Devices implements IDaylightWeb { @ResponseBody public StatusJsonBean addSpanPort( @RequestParam("jsonData") String jsonData, - HttpServletRequest request, @RequestParam(required = false) String container) { - if (!authorize(UserLevel.NETWORKADMIN, request)) { + 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(); - String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); SpanConfig cfgObject = gson.fromJson(jsonData, SpanConfig.class); @@ -588,15 +703,20 @@ public class Devices implements IDaylightWeb { @ResponseBody public StatusJsonBean deleteSpanPorts( @RequestParam("spanPortsToDelete") String spanPortsToDelete, - HttpServletRequest request, @RequestParam(required = false) String container) { - if (!authorize(UserLevel.NETWORKADMIN, request)) { + 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(); - String containerName = DaylightWebUtil.getAuthorizedContainer(request, container, this); ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); String[] spans = spanPortsToDelete.split("###"); @@ -627,33 +747,15 @@ public class Devices implements IDaylightWeb { .getInstance(ISwitchManager.class, containerName, this); String description = ""; if (switchManager != null) { - description = switchManager.getNodeDescription(Node - .fromString(nodeId)); + Description desc = (Description) switchManager.getNodeProp(Node.fromString(nodeId), Description.propertyName); + if(desc != null) { + description = desc.getValue(); + } } return (description.isEmpty() || description.equalsIgnoreCase("none")) ? nodeId : description; } - /** - * Is the operation permitted for the given level - * - * @param level - */ - private boolean authorize(UserLevel level, HttpServletRequest request) { - IUserManager userManager = (IUserManager) ServiceHelper - .getGlobalInstance(IUserManager.class, this); - if (userManager == null) { - return false; - } - - String username = request.getUserPrincipal().getName(); - UserLevel userLevel = userManager.getUserLevel(username); - if (userLevel.toNumber() <= level.toNumber()) { - return true; - } - return false; - } - private StatusJsonBean unauthorizedMessage() { StatusJsonBean message = new StatusJsonBean(); message.setStatus(false);