X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnorthbound%2Fflowprogrammer%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fflowprogrammer%2Fnorthbound%2FFlowProgrammerNorthbound.java;h=ea3f748dcc02e820c6b88aab5f2a10a73fef0cdf;hb=refs%2Fchanges%2F49%2F1149%2F2;hp=2d270b44f98e23d65c0f03bddab1f913aabda7d5;hpb=6806719ffe0a4ac6d0585faeadc86fc947e8095b;p=controller.git
diff --git a/opendaylight/northbound/flowprogrammer/src/main/java/org/opendaylight/controller/flowprogrammer/northbound/FlowProgrammerNorthbound.java b/opendaylight/northbound/flowprogrammer/src/main/java/org/opendaylight/controller/flowprogrammer/northbound/FlowProgrammerNorthbound.java
index 2d270b44f9..ea3f748dcc 100644
--- a/opendaylight/northbound/flowprogrammer/src/main/java/org/opendaylight/controller/flowprogrammer/northbound/FlowProgrammerNorthbound.java
+++ b/opendaylight/northbound/flowprogrammer/src/main/java/org/opendaylight/controller/flowprogrammer/northbound/FlowProgrammerNorthbound.java
@@ -48,7 +48,7 @@ import org.opendaylight.controller.sal.utils.Status;
import org.opendaylight.controller.switchmanager.ISwitchManager;
/**
- * Flow Configuration Northbound API
+ * Flow Configuration Northbound API provides capabilities to program flows.
*
*
*
@@ -56,11 +56,7 @@ import org.opendaylight.controller.switchmanager.ISwitchManager;
* Authentication realm : opendaylight
* Transport : HTTP and HTTPS
*
- * HTTPS Authentication is disabled by default. Administrator can enable it in
- * tomcat-server.xml after adding a proper keystore / SSL certificate from a
- * trusted authority.
- * More info :
- * http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html#Configuration
+ * HTTPS Authentication is disabled by default.
*
*/
@Path("/")
@@ -158,7 +154,7 @@ public class FlowProgrammerNorthbound {
* Example:
*
* RequestURL:
- * http://localhost:8080/controller/nb/v2/flow/default
+ * http://localhost:8080/controller/nb/v2/flowprogrammer/default
*
* Response in XML:
* <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
@@ -223,7 +219,7 @@ public class FlowProgrammerNorthbound {
* Example:
*
* RequestURL:
- * http://localhost:8080/controller/nb/v2/flow/default/node/OF/00:00:00:00:00:00:00:01
+ * http://localhost:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:01
*
* Response in XML:
* <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
@@ -296,7 +292,7 @@ public class FlowProgrammerNorthbound {
* Example:
*
* RequestURL:
- * http://localhost:8080/controller/nb/v2/flow/default/node/OF/00:00:00:00:00:00:00:01/static-flow/flow1
+ * http://localhost:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:01/staticFlow/flow1
*
* Response in XML:
* <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
@@ -320,7 +316,7 @@ public class FlowProgrammerNorthbound {
*
*
*/
- @Path("/{containerName}/node/{nodeType}/{nodeId}/static-flow/{name}")
+ @Path("/{containerName}/node/{nodeType}/{nodeId}/staticFlow/{name}")
@GET
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@TypeHint(FlowConfig.class)
@@ -357,7 +353,8 @@ public class FlowProgrammerNorthbound {
}
/**
- * Add a flow configuration
+ * Add a flow configuration. If a flow by the given name already
+ * exists, this method will respond with a non-successful status response.
*
* @param containerName
* Name of the Container (Eg. 'default')
@@ -376,7 +373,7 @@ public class FlowProgrammerNorthbound {
* Example:
*
* RequestURL:
- * http://localhost:8080/controller/nb/v2/flow/default/node/OF/00:00:00:00:00:00:00:01/static-flow/flow1
+ * http://localhost:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:01/staticFlow/flow1
*
* Request in XML:
* <flowConfig>
@@ -400,7 +397,7 @@ public class FlowProgrammerNorthbound {
*
*/
- @Path("/{containerName}/node/{nodeType}/{nodeId}/static-flow/{name}")
+ @Path("/{containerName}/node/{nodeType}/{nodeId}/staticFlow/{name}")
@PUT
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@StatusCodes({
@@ -417,7 +414,7 @@ public class FlowProgrammerNorthbound {
@PathParam(value = "name") String name,
@PathParam("nodeType") String nodeType,
@PathParam(value = "nodeId") String nodeId,
- @TypeHint(FlowConfig.class) JAXBElement flowConfig) {
+ @TypeHint(FlowConfig.class) FlowConfig flowConfig) {
if (!NorthboundUtils.isAuthorized(
getUserName(), containerName, Privilege.WRITE, this)) {
@@ -425,8 +422,13 @@ public class FlowProgrammerNorthbound {
"User is not authorized to perform this operation on container "
+ containerName);
}
- handleResourceCongruence(name, flowConfig.getValue().getName());
- handleResourceCongruence(nodeId, flowConfig.getValue().getNode().getNodeIDString());
+
+ if (flowConfig.getNode() == null) {
+ return Response.status(Response.Status.BAD_REQUEST).entity("Invalid Configuration. Node is null or empty")
+ .build();
+ }
+ handleResourceCongruence(name, flowConfig.getName());
+ handleResourceCongruence(nodeId, flowConfig.getNode().getNodeIDString());
handleDefaultDisabled(containerName);
IForwardingRulesManager frm = getForwardingRulesManagerService(containerName);
@@ -444,7 +446,7 @@ public class FlowProgrammerNorthbound {
+ RestMessages.RESOURCECONFLICT.toString());
}
- Status status = frm.addStaticFlow(flowConfig.getValue());
+ Status status = frm.addStaticFlow(flowConfig);
if (status.isSuccess()) {
NorthboundUtils.auditlog("Flow", username, "added", name, containerName);
@@ -471,16 +473,16 @@ public class FlowProgrammerNorthbound {
* Example:
*
* RequestURL:
- * http://localhost:8080/controller/nb/v2/flow/default/node/OF/00:00:00:00:00:00:00:01/static-flow/flow1
+ * http://localhost:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:01/staticFlow/flow1
*
*
*/
- @Path("/{containerName}/node/{nodeType}/{nodeId}/static-flow/{name}")
+ @Path("/{containerName}/node/{nodeType}/{nodeId}/staticFlow/{name}")
@DELETE
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@StatusCodes({
- @ResponseCode(code = 200, condition = "Flow Config deleted successfully"),
+ @ResponseCode(code = 204, condition = "Flow Config deleted successfully"),
@ResponseCode(code = 401, condition = "User not authorized to perform this operation"),
@ResponseCode(code = 404, condition = "The Container Name or Node-id or Flow Name passed is not found"),
@ResponseCode(code = 406, condition = "Failed to delete Flow config due to invalid operation. Failure details included in HTTP Error response"),
@@ -518,6 +520,7 @@ public class FlowProgrammerNorthbound {
Status status = frm.removeStaticFlow(name, node);
if (status.isSuccess()) {
NorthboundUtils.auditlog("Flow", username, "removed", name, containerName);
+ return Response.noContent().build();
}
return NorthboundUtils.getResponse(status);
}
@@ -540,11 +543,11 @@ public class FlowProgrammerNorthbound {
* Example:
*
* RequestURL:
- * http://localhost:8080/controller/nb/v2/flow/default/node/OF/00:00:00:00:00:00:00:01/static-flow/flow1
+ * http://localhost:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:01/staticFlow/flow1
*
*
*/
- @Path("/{containerName}/node/{nodeType}/{nodeId}/static-flow/{name}")
+ @Path("/{containerName}/node/{nodeType}/{nodeId}/staticFlow/{name}")
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@StatusCodes({