X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fweb%2Fflows%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fflows%2Fweb%2FFlows.java;h=d75d14c623da8bb8c4d1331415f6988a2d8c35af;hb=f69c674bc091ea5f70bde33fc45ca7e181c2f6e0;hp=297c99c0b282e02a726f0d3a532b3e70735f116a;hpb=29f7cfb54b580928c7feac63abce028a7014b0d5;p=controller.git diff --git a/opendaylight/web/flows/src/main/java/org/opendaylight/controller/flows/web/Flows.java b/opendaylight/web/flows/src/main/java/org/opendaylight/controller/flows/web/Flows.java index 297c99c0b2..d75d14c623 100644 --- a/opendaylight/web/flows/src/main/java/org/opendaylight/controller/flows/web/Flows.java +++ b/opendaylight/web/flows/src/main/java/org/opendaylight/controller/flows/web/Flows.java @@ -21,6 +21,7 @@ import org.opendaylight.controller.sal.authorization.UserLevel; 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.utils.GlobalConstants; import org.opendaylight.controller.sal.utils.ServiceHelper; import org.opendaylight.controller.sal.utils.Status; import org.opendaylight.controller.sal.utils.StatusCode; @@ -43,9 +44,10 @@ import com.google.gson.Gson; @RequestMapping("/") public class Flows implements IOneWeb { private static final UserLevel AUTH_LEVEL = UserLevel.CONTAINERUSER; - private final String WEB_NAME = "Flows"; - private final String WEB_ID = "flows"; - private final short WEB_ORDER = 2; + private static final String WEB_NAME = "Flows"; + private static final String WEB_ID = "flows"; + private static final short WEB_ORDER = 2; + private final String containerName = GlobalConstants.DEFAULT.toString(); public Flows() { ServiceHelper.registerGlobalService(IOneWeb.class, this, null); @@ -76,15 +78,13 @@ public class Flows implements IOneWeb { public Set> getFlows() { // fetch frm IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper - .getInstance(IForwardingRulesManager.class, "default", this); - if (frm == null) - return null; + .getInstance(IForwardingRulesManager.class, containerName, this); + if (frm == null) { return null; } // fetch sm ISwitchManager switchManager = (ISwitchManager) ServiceHelper - .getInstance(ISwitchManager.class, "default", this); - if (switchManager == null) - return null; + .getInstance(ISwitchManager.class, containerName, this); + if (switchManager == null) { return null; } // get static flow list List staticFlowList = frm.getStaticFlows(); @@ -93,12 +93,12 @@ public class Flows implements IOneWeb { Map entry = new HashMap(); entry.put("flow", flowConfig); entry.put("name", flowConfig.getName()); - - Node node = flowConfig.getNode(); - SwitchConfig switchConfig = switchManager.getSwitchConfig(node.getNodeIDString()); - String nodeName = node.toString(); - if (switchConfig != null) { nodeName = switchConfig.getNodeName(); } - entry.put("node", nodeName); + Node node = flowConfig.getNode(); + String description = switchManager.getNodeDescription(node); + entry.put("node", + (description.isEmpty() || + description.equalsIgnoreCase("none"))? + node.toString() : description); entry.put("nodeId", node.toString()); output.add(entry); } @@ -110,9 +110,8 @@ public class Flows implements IOneWeb { @ResponseBody public Map getNodePorts() { ISwitchManager switchManager = (ISwitchManager) ServiceHelper - .getInstance(ISwitchManager.class, "default", this); - if (switchManager == null) - return null; + .getInstance(ISwitchManager.class, containerName, this); + if (switchManager == null) { return null; } Map nodes = new HashMap(); Map port; @@ -121,7 +120,7 @@ public class Flows implements IOneWeb { 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, @@ -130,18 +129,18 @@ public class Flows implements IOneWeb { nodeConnectorName + "(" + nodeConnector.getNodeConnectorIDString() + ")"); } + } // add ports Map entry = new HashMap(); entry.put("ports", port); // add name - String nodeName = node.getNode().toString(); - SwitchConfig config = switchManager.getSwitchConfig(node.getNode().getNodeIDString()); - if (config != null) { - nodeName = config.getNodeName(); - } - entry.put("name", nodeName); + String description = switchManager + .getNodeDescription(node.getNode()); + entry.put("name", (description.isEmpty() || + description.equalsIgnoreCase("none"))? + node.getNode().toString() : description); // add to the node nodes.put(node.getNode().toString(), entry); @@ -154,7 +153,7 @@ public class Flows implements IOneWeb { @ResponseBody public Map getNodeFlows() { ISwitchManager switchManager = (ISwitchManager) ServiceHelper - .getInstance(ISwitchManager.class, "default", this); + .getInstance(ISwitchManager.class, containerName, this); if (switchManager == null) { return null; } IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper .getInstance(IForwardingRulesManager.class, "default", this); @@ -167,13 +166,13 @@ public class Flows implements IOneWeb { List flows = frm.getStaticFlows(node); - String nodeName = node.toString(); + String nodeDesc = node.toString(); SwitchConfig config = switchManager.getSwitchConfig(node.getNodeIDString()); if (config != null) { - nodeName = config.getNodeName(); + nodeDesc = config.getNodeDescription(); } - nodes.put(nodeName, flows.size()); + nodes.put(nodeDesc, flows.size()); } return nodes; @@ -183,71 +182,64 @@ public class Flows implements IOneWeb { @ResponseBody public String actionFlow(@RequestParam(required = true) String action, @RequestParam(required = false) String body, @RequestParam(required = true) String nodeId) { - if (!authorize(UserLevel.NETWORKADMIN)) { + if (!isUserAuthorized(UserLevel.NETWORKADMIN)) { return "Operation not authorized"; } IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper - .getInstance(IForwardingRulesManager.class, "default", this); + .getInstance(IForwardingRulesManager.class, containerName, this); if (frm == null) { return null; } Gson gson = new Gson(); FlowConfig flow = gson.fromJson(body, FlowConfig.class); Node node = Node.fromString(nodeId); flow.setNode(node); - Status result = null; + Status result = new Status(StatusCode.BADREQUEST, "Invalid request"); if (action.equals("add")) { result = frm.addStaticFlow(flow, false); } - return result.getDescription(); + return (result.isSuccess())? StatusCode.SUCCESS.toString(): result.getDescription(); } @RequestMapping(value = "/flow/{nodeId}/{name}", method = RequestMethod.POST) @ResponseBody public String removeFlow(@PathVariable("nodeId") String nodeId, @PathVariable("name") String name, @RequestParam(required = true) String action) { - if (!authorize(UserLevel.NETWORKADMIN)) { return "Operation not authorized"; } + if (!isUserAuthorized(UserLevel.NETWORKADMIN)) { return "Operation not authorized"; } IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper - .getInstance(IForwardingRulesManager.class, "default", this); + .getInstance(IForwardingRulesManager.class, containerName, this); if (frm == null) { return null; } Status result = null; Node node = Node.fromString(nodeId); - if (node == null) { - return null; - } + if (node == null) { return null; } if (action.equals("remove")) { result = frm.removeStaticFlow(name, node); } else if (action.equals("toggle")) { - FlowConfig config = frm.getStaticFlow(name, node); - result = frm.toggleStaticFlowStatus(config); + result = frm.toggleStaticFlowStatus(name, node); } else { result = new Status(StatusCode.BADREQUEST, "Unknown action"); } - return result.getDescription(); + return (result.isSuccess())? StatusCode.SUCCESS.toString(): result.getDescription(); } /** - * Is the operation permitted for the given level + * Returns whether the current user's level is same or above + * the required authorization level. * - * @param level + * @param requiredLevel the authorization level required */ - private boolean authorize(UserLevel level) { + private boolean isUserAuthorized(UserLevel requiredLevel) { IUserManager userManager = (IUserManager) ServiceHelper .getGlobalInstance(IUserManager.class, this); - if (userManager == null) { - return false; - } + if (userManager == null) { return false; } String username = SecurityContextHolder.getContext().getAuthentication().getName(); UserLevel userLevel = userManager.getUserLevel(username); - if (userLevel.toNumber() <= level.toNumber()) { - return true; - } - return false; + return (userLevel.ordinal() <= requiredLevel.ordinal()); } }