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=259ffde4b447e1d5d8c916ff96a26ee38198b3bf;hb=03abf047ba966c53f4901d36ae5198156d66dc05;hp=a96d3efcec698d80a243969fd2c1c3df9ee1e2cf;hpb=9822a34fdd144aeb9932492e1605715eb472ecad;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 a96d3efcec..259ffde4b4 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 @@ -52,8 +52,11 @@ public class Flows implements IDaylightWeb { private static final String WEB_ID = "flows"; private static final short WEB_ORDER = 2; + private final Gson gson; + public Flows() { ServiceHelper.registerGlobalService(IDaylightWeb.class, this, null); + gson = new Gson(); } @Override @@ -78,29 +81,26 @@ public class Flows implements IDaylightWeb { @RequestMapping(value = "/main") @ResponseBody - public Map getFlows(HttpServletRequest request, - @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT - .toString() : container; + public Map getFlows(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(); - Privilege privilege = DaylightWebUtil.getContainerPrivilege(userName, - containerName, this); + Privilege privilege = DaylightWebUtil.getContainerPrivilege(userName, containerName, this); if (privilege == Privilege.NONE) { return null; } // fetch frm - IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper - .getInstance(IForwardingRulesManager.class, containerName, this); + IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper.getInstance( + IForwardingRulesManager.class, containerName, this); if (frm == null) { return null; } // fetch sm - ISwitchManager switchManager = (ISwitchManager) ServiceHelper - .getInstance(ISwitchManager.class, containerName, this); + ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, containerName, + this); if (switchManager == null) { return null; } @@ -126,39 +126,34 @@ public class Flows implements IDaylightWeb { @RequestMapping(value = "/node-ports") @ResponseBody - public Map getNodePorts(HttpServletRequest request, - @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT - .toString() : container; + 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) { + if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) == Privilege.NONE) { return null; } - ISwitchManager switchManager = (ISwitchManager) ServiceHelper - .getInstance(ISwitchManager.class, containerName, this); + ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, containerName, + this); if (switchManager == null) { return null; } Map nodes = new HashMap(); - Map port; + Map port; for (Switch node : switchManager.getNetworkDevices()) { - port = new HashMap(); // new port + port = new HashMap(); // new port 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.getNodeConnectorIDString() - + ")"); + String nodeConnectorName = ((Name) switchManager.getNodeConnectorProp(nodeConnector, + Name.NamePropName)).getValue(); + port.put( nodeConnector.getID().toString(), + nodeConnectorName + "(" + nodeConnector.getNodeConnectorIDString() + ")"); } } @@ -178,25 +173,22 @@ public class Flows implements IDaylightWeb { @RequestMapping(value = "/node-flows") @ResponseBody - public Map getNodeFlows(HttpServletRequest request, - @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT - .toString() : container; + public Map getNodeFlows(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) { + if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) == Privilege.NONE) { return null; } - ISwitchManager switchManager = (ISwitchManager) ServiceHelper - .getInstance(ISwitchManager.class, containerName, this); + ISwitchManager switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, containerName, + this); if (switchManager == null) { return null; } - IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper - .getInstance(IForwardingRulesManager.class, containerName, this); + IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper.getInstance( + IForwardingRulesManager.class, containerName, this); if (frm == null) { return null; } @@ -209,12 +201,9 @@ public class Flows implements IDaylightWeb { List flows = frm.getStaticFlows(node); String nodeDesc = node.toString(); - SwitchConfig config = switchManager - .getSwitchConfig(node.toString()); - if ((config != null) - && (config.getProperty(Description.propertyName) != null)) { - nodeDesc = ((Description) config - .getProperty(Description.propertyName)).getValue(); + SwitchConfig config = switchManager.getSwitchConfig(node.toString()); + if ((config != null) && (config.getProperty(Description.propertyName) != null)) { + nodeDesc = ((Description) config.getProperty(Description.propertyName)).getValue(); } nodes.put(nodeDesc, flows.size()); @@ -223,63 +212,64 @@ public class Flows implements IDaylightWeb { return nodes; } + @RequestMapping(value = "/flow", method = RequestMethod.POST) @ResponseBody - public String actionFlow(@RequestParam(required = true) String action, - @RequestParam(required = false) String body, - @RequestParam(required = true) String nodeId, - HttpServletRequest request, + public String actionFlow(@RequestParam(required = true) String action, @RequestParam(required = false) String body, + @RequestParam(required = true) String nodeId, HttpServletRequest request, @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT - .toString() : container; + String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container; // Authorization check String userName = request.getUserPrincipal().getName(); - if (DaylightWebUtil - .getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { + if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { return "Operation not authorized"; } - IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper - .getInstance(IForwardingRulesManager.class, containerName, this); + IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper.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 = new Status(StatusCode.BADREQUEST, "Invalid request"); if (action.equals("add")) { result = frm.addStaticFlow(flow); - DaylightWebUtil.auditlog("Flow", userName, "added", flow.getName(), - containerName); + if (result.isSuccess()) { + DaylightWebUtil.auditlog("Flow Entry", userName, "added", flow.getName() + " on Node " + + DaylightWebUtil.getNodeDesc(node, containerName, this), containerName); + } + } else if (action.equals("edit")){ + result = frm.modifyStaticFlow(flow); + if (result.isSuccess()) { + DaylightWebUtil.auditlog("Flow Entry", userName, "updated", flow.getName() + " on Node " + + DaylightWebUtil.getNodeDesc(node, containerName, this), containerName); + } } - return (result.isSuccess()) ? StatusCode.SUCCESS.toString() : 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, - HttpServletRequest request, + public String removeFlow(@PathVariable("nodeId") String nodeId, @PathVariable("name") String name, + @RequestParam(required = true) String action, HttpServletRequest request, @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT - .toString() : container; + String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container; // Authorization check String userName = request.getUserPrincipal().getName(); - if (DaylightWebUtil - .getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { + if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { return "Operation not authorized"; } - IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper - .getInstance(IForwardingRulesManager.class, containerName, this); + IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper.getInstance( + IForwardingRulesManager.class, containerName, this); if (frm == null) { return null; } @@ -292,47 +282,40 @@ public class Flows implements IDaylightWeb { if (action.equals("remove")) { result = frm.removeStaticFlow(name, node); if (result.isSuccess()) { - DaylightWebUtil.auditlog("Flow", userName, "removed", name, - containerName); + DaylightWebUtil.auditlog("Flow Entry", userName, "removed", + name + " on Node " + DaylightWebUtil.getNodeDesc(node, containerName, this), containerName); } } else if (action.equals("toggle")) { result = frm.toggleStaticFlowStatus(name, node); if (result.isSuccess()) { - DaylightWebUtil.auditlog("Flow", userName, "toggled", name, - containerName); + DaylightWebUtil.auditlog("Flow Entry", userName, "toggled", + name + " on Node " + DaylightWebUtil.getNodeDesc(node, containerName, this), containerName); } } else { result = new Status(StatusCode.BADREQUEST, "Unknown action"); } - return (result.isSuccess()) ? StatusCode.SUCCESS.toString() : result - .getDescription(); + return (result.isSuccess()) ? StatusCode.SUCCESS.toString() : result.getDescription(); } @SuppressWarnings("unchecked") @RequestMapping(value = "/flow/deleteFlows", method = RequestMethod.POST) @ResponseBody - public String removeSelectedFlows( - @RequestParam(required = false) String body, - HttpServletRequest request, + public String removeSelectedFlows(@RequestParam(required = false) String body, HttpServletRequest request, @RequestParam(required = false) String container) { - String containerName = (container == null) ? GlobalConstants.DEFAULT - .toString() : container; + String containerName = (container == null) ? GlobalConstants.DEFAULT.toString() : container; // Authorization check String userName = request.getUserPrincipal().getName(); - if (DaylightWebUtil - .getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { + if (DaylightWebUtil.getContainerPrivilege(userName, containerName, this) != Privilege.WRITE) { return "Operation not authorized"; } - - IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper - .getInstance(IForwardingRulesManager.class, containerName, this); + IForwardingRulesManager frm = (IForwardingRulesManager) ServiceHelper.getInstance( + IForwardingRulesManager.class, containerName, this); if (frm == null) { return "Forwarding Rules Manager is not available"; } - Gson gson = new Gson(); List> flowList = new ArrayList>(); flowList = gson.fromJson(body, flowList.getClass()); Status result = new Status(StatusCode.BADREQUEST, "Invalid request"); @@ -341,26 +324,23 @@ public class Flows implements IDaylightWeb { Node node = Node.fromString(flowEntry.get("node")); result = frm.removeStaticFlow(flowEntry.get("name"), node); if (result.isSuccess()) { - DaylightWebUtil.auditlog("Flow", userName, "removed", - flowEntry.get("name"), containerName); + DaylightWebUtil.auditlog("Flow Entry", userName, "removed", flowEntry.get("name") + " on Node " + + DaylightWebUtil.getNodeDesc(node, containerName, this), containerName); } else { status = flowEntry.get("name") + ", " + status; } } if (!status.equals("")) { - return "Could not remove " - + status.substring(0, status.length() - 2) + " Flow(s)"; + return "Could not remove " + status.substring(0, status.length() - 2) + " Flow(s)"; } else { return "Success"; } } private String getNodeDesc(Node node, ISwitchManager switchManager) { - Description desc = (Description) switchManager.getNodeProp(node, - Description.propertyName); + Description desc = (Description) switchManager.getNodeProp(node, Description.propertyName); String description = (desc == null) ? "" : desc.getValue(); - return (description.isEmpty() || description.equalsIgnoreCase("none")) ? node - .toString() : description; + return (description.isEmpty() || description.equalsIgnoreCase("none")) ? node.toString() : description; } }