package org.opennaas.extensions.sdnnetwork.capability.ofprovision; import java.util.Collection; 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.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.opennaas.core.resources.capability.CapabilityException; import org.opennaas.core.resources.capability.ICapability; import org.opennaas.extensions.sdnnetwork.model.SDNNetworkOFFlow; /** * * @author Isart Canyameres Gimenez (i2cat) * @author Julio Carlos Barrera * */ @Path("/") public interface IOFProvisioningNetworkCapability extends ICapability { /** * Allocates a flow in the network * * @param flowWithRoute * A Flow with a defined route * @return flowId of created SDNNetworkOFFlow * @throws CapabilityException */ @Path("/allocateOFFlow") @POST @Consumes(MediaType.APPLICATION_XML) @Produces(MediaType.APPLICATION_XML) public String allocateOFFlow(SDNNetworkOFFlow flowWithRoute) throws CapabilityException; /** * Deallocates an existing flow in the network * * @param flowId * @throws CapabilityException */ @Path("/deallocateOFFlow/{flowId}") @DELETE public void deallocateOFFlow(@PathParam("flowId") String flowId) throws CapabilityException; /** * * @return allocated flows * @throws CapabilityException */ @Path("/getAllocatedFlows") @GET @Produces(MediaType.APPLICATION_XML) public Collection<SDNNetworkOFFlow> getAllocatedFlows() throws CapabilityException; /** * Updates an allocated flow in the network * * @param flowId * of the already allocated flow to update * @param flowWithRoute * A Flow with a defined route * @return flowId of created SDNNetworkOFFlow * @throws CapabilityException */ @Path("/updateAllocatedOFFlow/{flowId}") @PUT @Consumes(MediaType.APPLICATION_XML) @Produces(MediaType.APPLICATION_XML) public String updateAllocatedOFFlow(@PathParam("flowId") String flowId, SDNNetworkOFFlow flowWithRoute) throws CapabilityException; /** * Maps a Floodlight device with an OpenNaaS resource * * @param deviceId * of the Floodlight device * @param resourceID * of the OpenNaaS resource * @throws org.opennaas.core.resources.capability.CapabilityException */ @Path("/mapDeviceResource/{deviceId}/{resourceID}") @GET @Consumes(MediaType.APPLICATION_XML) public void mapDeviceResource(@PathParam("deviceId") String deviceId, @PathParam("resourceID") String resourceID) throws CapabilityException; /** * Maps a Floodlight device with an OpenNaaS resource * * @param deviceId * of the Floodlight device * @return * @throws org.opennaas.core.resources.capability.CapabilityException */ @Path("/mapDeviceResource/{deviceId}") @GET @Consumes(MediaType.APPLICATION_XML) public String getMapDeviceResource(@PathParam("deviceId") String deviceId) throws CapabilityException; /** * Get the entire list of devices * @return * @throws CapabilityException */ @Path("/mapDeviceResource") @GET @Consumes(MediaType.APPLICATION_XML) public Response getMapDevices() throws CapabilityException; /** * Get the resource name given the DPID * @param deviceId * @return * @throws CapabilityException */ @Path("/getDeviceResourceName/{deviceId}") @GET @Consumes(MediaType.APPLICATION_XML) public String getNameDevice(@PathParam("deviceId") String deviceId) throws CapabilityException; /** * Clears the map of Floodlight devices - OpenNaaS resources */ @Path("/mapDeviceResource") @DELETE public void clearMap(); }