Merge "Fixed deserialization of IdentityRefs in Restconf URI."
[controller.git] / opendaylight / web / flows / src / main / java / org / opendaylight / controller / flows / web / Flows.java
index 4cd71a37640ba2f303c04570eb9549c845a82816..259ffde4b447e1d5d8c916ff96a26ee38198b3bf 100644 (file)
@@ -81,29 +81,26 @@ public class Flows implements IDaylightWeb {
 
     @RequestMapping(value = "/main")
     @ResponseBody
-    public Map<String, Object> getFlows(HttpServletRequest request,
-            @RequestParam(required = false) String container) {
-        String containerName = (container == null) ? GlobalConstants.DEFAULT
-                .toString() : container;
+    public Map<String, Object> 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;
         }
@@ -129,39 +126,34 @@ public class Flows implements IDaylightWeb {
 
     @RequestMapping(value = "/node-ports")
     @ResponseBody
-    public Map<String, Object> getNodePorts(HttpServletRequest request,
-            @RequestParam(required = false) String container) {
-        String containerName = (container == null) ? GlobalConstants.DEFAULT
-                .toString() : container;
+    public Map<String, Object> 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<String, Object> nodes = new HashMap<String, Object>();
-        Map<Short, String> port;
+        Map<String, String> port;
 
         for (Switch node : switchManager.getNetworkDevices()) {
-            port = new HashMap<Short, String>(); // new port
+            port = new HashMap<String, String>(); // new port
             Set<NodeConnector> 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() + ")");
                 }
             }
 
@@ -181,25 +173,22 @@ public class Flows implements IDaylightWeb {
 
     @RequestMapping(value = "/node-flows")
     @ResponseBody
-    public Map<String, Object> getNodeFlows(HttpServletRequest request,
-            @RequestParam(required = false) String container) {
-        String containerName = (container == null) ? GlobalConstants.DEFAULT
-                .toString() : container;
+    public Map<String, Object> 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;
         }
@@ -212,12 +201,9 @@ public class Flows implements IDaylightWeb {
             List<FlowConfig> 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());
@@ -226,25 +212,22 @@ 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;
         }
@@ -253,36 +236,40 @@ public class Flows implements IDaylightWeb {
 
         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;
         }
@@ -295,42 +282,36 @@ 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";
         }
@@ -343,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;
     }
 
 }