import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
-import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.core.UriInfo;
-import javax.xml.bind.JAXBElement;
import org.codehaus.enunciate.jaxrs.ResponseCode;
import org.codehaus.enunciate.jaxrs.StatusCodes;
import org.codehaus.enunciate.jaxrs.TypeHint;
+import org.opendaylight.controller.containermanager.ContainerConfig;
+import org.opendaylight.controller.containermanager.ContainerFlowConfig;
import org.opendaylight.controller.containermanager.IContainerAuthorization;
+import org.opendaylight.controller.containermanager.IContainerManager;
import org.opendaylight.controller.northbound.commons.RestMessages;
import org.opendaylight.controller.northbound.commons.exception.BadRequestException;
import org.opendaylight.controller.northbound.commons.exception.InternalServerErrorException;
import org.opendaylight.controller.sal.utils.Status;
import org.opendaylight.controller.usermanager.IUserManager;
-import org.opendaylight.controller.containermanager.ContainerFlowConfig;
-import org.opendaylight.controller.containermanager.IContainerManager;
-import org.opendaylight.controller.containermanager.ContainerConfig;
-
/**
* Container Manager Northbound API
*
* Request URL:
* http://localhost:8080/controller/nb/v2/containermanager/containers
*
- * Response Payload in XML:
+ * Response body in XML:
* <container-config-list>
*    <container-config>
*       <container>black</container>
*     </container-config>
* </container-config-list>
*
- * Response Payload in JSON:
- * { "container-config" : [ { "container" : "black", "nodeConnectors" : ["OF|1@OF|00:00:00:00:00:00:00:01", "OF|23@OF|00:00:00:00:00:00:20:21"], "staticVlan" : "10", "flowSpecs : [{ "name": "udp", "protocol": "UDP" }] } ] }
- * { "container-config" : [ { "container" : "red", "nodeConnectors" : ["OF|1@OF|00:00:00:00:00:00:00:01", "OF|23@OF|00:00:00:00:00:00:20:21"], "staticVlan" : "20", "flowSpecs": [{ "name": "tcp", "protocol": "TCP" }] } ] }
- *
+ * Response body in JSON:
+ * { "container-config" : [
+ * { "container" : "black",
+ * "nodeConnectors" : [
+ * "OF|1@OF|00:00:00:00:00:00:00:01", "OF|23@OF|00:00:00:00:00:00:20:21"
+ * ],
+ * "staticVlan" : "10",
+ * "flowSpecs : [
+ * { "name": "udp",
+ * "protocol": "UDP" }
+ * ]
+ * },
+ * { "container" : "red",
+ * "nodeConnectors" : [
+ * "OF|1@OF|00:00:00:00:00:00:00:01",
+ * "OF|23@OF|00:00:00:00:00:00:20:21"
+ * ],
+ * "staticVlan" : "20",
+ * "flowSpecs": [
+ * { "name": "tcp",
+ * "protocol": "TCP"
+ * }
+ * ]
+ * }
+ * ]
+ * }
* </pre>
*/
@Path("/containers")
* Request URL:
* http://localhost:8080/controller/nb/v2/containermanager/container/blue
*
- * Response Payload in XML:
+ * Response body in XML:
* <container-config>
*     <container>blue</container>
*     <staticVlan>10</staticVlan>
*     <nodeConnectors>OF|23@OF|00:00:00:00:00:00:20:21</nodeConnectors>
* </container-config>
*
- * Response Payload in JSON:
- * { "container" : "blue", "nodeConnectors" : ["OF|1@OF|00:00:00:00:00:00:00:01", "OF|23@OF|00:00:00:00:00:00:20:21"], "staticVlan" : "10" }
- *
+ * Response body in JSON:
+ * {
+ * "container-config": [
+ * {
+ * "container": "yellow",
+ * "staticVlan": "10",
+ * "nodeConnectors": [
+ * "OF|1@OF|00:00:00:00:00:00:00:01",
+ * "OF|2@OF|00:00:00:00:00:00:00:02"
+ * ],
+ * "flowSpecs": []
+ * }
+ * ]
+ * }
* </pre>
*/
@Path("/container/{container}")
* Request URL:
* http://localhost:8080/controller/nb/v2/containermanager/container/yellow
*
- * Request Payload in XML:
+ * Request body in XML:
* <container-config>
*     <container>yellow</container>
*     <staticVlan>10</staticVlan>
*     <nodeConnectors></nodeConnectors>
* </container-config>
*
- * Request Payload in JSON:
- * { "container" : "yellow", "nodeConnectors" : ["OF|1@OF|00:00:00:00:00:00:00:01", "OF|23@OF|00:00:00:00:00:00:20:21"], "staticVlan" : "10"}
+ * Request body in JSON:
+ * {
+ * "container" : "yellow",
+ * "nodeConnectors" : [
+ * "OF|1@OF|00:00:00:00:00:00:00:01",
+ * "OF|23@OF|00:00:00:00:00:00:20:21"
+ * ],
+ * "staticVlan" : "10"
+ * }
*
* </pre>
*/
* Request URL:
* http://localhost:8080/controller/nb/v2/containermanager/container/green/flowspec/ssh
*
- * Response Payload in XML:
- * <container-flowconfig>
+ * Response body in XML:
+ * <flow-spec-config>
*     <name>ssh</name>
*     <nwSrc>10.0.0.101</nwSrc>
*     <nwDst>10.0.0.102</nwDst>
*     <protocol>IPv4</protocol>
*     <tpSrc>80</tpSrc>
*     <tpDst>100</tpDst>
- * </container-flowconfig>
- *
- * Response Payload in JSON:
- * { "protocol" : "IPv4", "nwDst" : "10.0.0.102", "name" : "ssh", "nwSrc" : "10.0.0.101", "tpSrc" : "80", "tpDst" : "100" }
+ * </flow-spec-config>
+ *
+ * Response body in JSON:
+ * {
+ * "protocol" : "IPv4",
+ * "nwDst" : "10.0.0.102",
+ * "name" : "ssh",
+ * "nwSrc" : "10.0.0.101",
+ * "tpSrc" : "80",
+ * "tpDst" : "100"
+ * }
*
* </pre>
*/
* Request URL:
* http://localhost:8080/controller/nb/v2/containermanager/container/red/flowspec
*
- * Response Payload in XML:
- * <container-flowconfigs>
- *     <container-flowconfig>
+ * Response body in XML:
+ * <flow-spec-configs>
+ *     <flow-spec-config>
*       <name>ssh</name>
*       <nwSrc>10.0.0.101</nwSrc>
*       <nwDst>10.0.0.102</nwDst>
*       <protocol>IPv4</protocol>
*       <tpSrc>23</tpSrc>
*       <tpDst>100</tpDst>
- *     </container-flowconfig>
- *     <container-flowconfig>
+ *     </flow-spec-config>
+ *     <flow-spec-config>
*       <name>http2</name>
*       <nwSrc>10.0.0.201</nwSrc>
*       <nwDst>10.0.0.202</nwDst>
*       <protocol></protocol>
*       <tpSrc>80</tpSrc>
*       <tpDst>100</tpDst>
- *     </container-flowconfig>
- * </container-flowconfigs>
- *
- * Response Payload in JSON:
- * { "protocol" : "IPv4", "nwDst" : "10.0.0.102", "name" : "ssh" , "nwSrc" : "10.0.0.101", "tpSrc" : "23", "tpDst" : "100" }
- * { "protocol" : "", "nwDst" : "10.0.0.202", "name" : "http" , "nwSrc" : "10.0.0.201", "tpSrc" : "80", "tpDst" : "100" }
+ *     </flow-spec-config>
+ * </flow-spec-configs>
+ *
+ * Response body in JSON:
+ * {
+ * "flow-spec-config": [
+ * {
+ * "name": "http",
+ * "nwSrc": "10.0.0.201",
+ * "nwDst": "10.0.0.202",
+ * "protocol": "",
+ * "tpSrc": "80",
+ * "tpDst": "100"
+ * },
+ * {
+ * "name": "ssh",
+ * "nwSrc": "10.0.0.101",
+ * "nwDst": "10.0.0.102",
+ * "protocol": "IPv4",
+ * "tpSrc": "23",
+ * "tpDst": "100"
+ * }
+ * ]
+ * }
*
* </pre>
*/
* Request URL:
* http://localhost:8080/controller/nb/v2/containermanager/container/purple/flowspec/http
*
- * Request Payload in XML:
- * <container-flowconfig>
+ * Request body in XML:
+ * <flow-spec-config>
*     <name>http</name>
*     <nwSrc>10.0.0.101</nwSrc>
*     <nwDst>10.0.0.102</nwDst>
*     <protocol></protocol>
*     <tpSrc>80</tpSrc>
*     <tpDst>100</tpDst>
- * </container-flowconfig>
- *
- * Request Payload in JSON:
- * { "protocol" : "", "nwDst" : "10.0.0.102", "name" : "http", "nwSrc" : "10.0.0.101", "tpSrc" : "80", "tpDst" : "100" }
+ * </flow-spec-config>
+ *
+ * Request body in JSON:
+ * {
+ * "protocol" : "",
+ * "nwDst" : "10.0.0.102",
+ * "name" : "http",
+ * "nwSrc" : "10.0.0.101",
+ * "tpSrc" : "80",
+ * "tpDst" : "100"
+ * }
*
* </pre>
*/
* Request URL:
* http://localhost:8080/controller/nb/v2/containermanager/container/green/nodeconnector
*
- * Request Payload in XML:
- * <list>
+ * Request body in XML:
+ * <nodeConnectors>
* <nodeConnectors>OF|1@OF|00:00:00:00:00:00:00:01</nodeConnectors>
* <nodeConnectors>OF|2@OF|00:00:00:00:00:00:00:01</nodeConnectors>
* <nodeConnectors>OF|3@OF|00:00:00:00:00:00:00:22</nodeConnectors>
* <nodeConnectors>OF|4@OF|00:00:00:00:00:00:00:22</nodeConnectors>
- * </list>
- *
- * Request Payload in JSON:
- * { "nodeConnectors" : ["OF|1@OF|00:00:00:00:00:00:00:01", "OF|2@OF|00:00:00:00:00:00:00:01", "OF|3@OF|00:00:00:00:00:00:00:22", "OF|4@OF|00:00:00:00:00:00:00:22" }
+ * </nodeConnectors>
+ *
+ * Request body in JSON:
+ * {
+ * "nodeConnectors" : [
+ * "OF|1@OF|00:00:00:00:00:00:00:01",
+ * "OF|2@OF|00:00:00:00:00:00:00:01",
+ * "OF|3@OF|00:00:00:00:00:00:00:22",
+ * "OF|4@OF|00:00:00:00:00:00:00:22"
+ * ]
+ * }
*
* </pre>
*/
* Request URL:
* http://localhost:8080/controller/nb/v2/containermanager/container/red/nodeconnector
*
- * Request Payload in XML:
- * <list>
+ * Request body in XML:
+ * <nodeConnectors>
* <nodeConnectors>OF|1@OF|00:00:00:00:00:00:00:01</nodeConnectors>
* <nodeConnectors>OF|2@OF|00:00:00:00:00:00:00:01</nodeConnectors>
* <nodeConnectors>OF|3@OF|00:00:00:00:00:00:00:22</nodeConnectors>
* <nodeConnectors>OF|4@OF|00:00:00:00:00:00:00:22</nodeConnectors>
- * </list>
- *
- * Request Payload in JSON:
- * { "nodeConnectors" : ["OF|1@OF|00:00:00:00:00:00:00:01", "OF|2@OF|00:00:00:00:00:00:00:01", "OF|3@OF|00:00:00:00:00:00:00:22", "OF|4@OF|00:00:00:00:00:00:00:22" }
+ * </nodeConnectors>
+ *
+ * Request body in JSON:
+ * {
+ * "nodeConnectors" : [
+ * "OF|1@OF|00:00:00:00:00:00:00:01",
+ * "OF|2@OF|00:00:00:00:00:00:00:01",
+ * "OF|3@OF|00:00:00:00:00:00:00:22",
+ * "OF|4@OF|00:00:00:00:00:00:00:22"
+ * ]
+ * }
*
* </pre>
*/