package org.opennaas.extensions.vcpe.manager;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import org.opennaas.extensions.vcpe.manager.model.VCPEManagerModel;
import org.opennaas.extensions.vcpe.model.VCPENetworkModel;
@Path("/")
public interface IVCPENetworkManager {
/**
* Create a VCPE infrastructure of VCPEResource from model
*
* @return the id if the VCPE has been created
* @throws VCPENetworkManagerException
*/
@Path("/create")
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public String create(VCPENetworkModel vcpeNetworkModel) throws VCPENetworkManagerException;
/**
* Update a VCPE infrastructure of VCPEResource from model
*
* @return the id if the VCPE has been created
* @throws VCPENetworkManagerException
*/
@Path("/update")
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public String update(VCPENetworkModel vcpeNetworkModel) throws VCPENetworkManagerException;
/**
* Remove a VCPE infrastructure of the resource with id = vcpeNetworkId
*
* @param vcpeNetworkId
* @return true if the VCPE has been removed, false otherwise
* @throws VCPENetworkManagerException
*/
@Path("/remove/{id}")
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Boolean remove(@PathParam("id") String vcpeNetworkId) throws VCPENetworkManagerException;
/**
* Get the VCPENetwork with id = vcpeNetworkId
*
* @param vcpeNetworkId
* @return VCPENetworkModel
* @throws VCPENetworkManagerException
*/
@Path("/getVCPENetworkById/{id}")
@GET
@Produces(MediaType.APPLICATION_XML)
public VCPENetworkModel getVCPENetworkById(@PathParam("id") String vcpeNetworkId) throws VCPENetworkManagerException;
/**
* Get all VCPENetworks
*
* @Consumes(MediaType.APPLICATION_XML)
* @Produces(MediaType.APPLICATION_XML)
* @return all the VCPENetworks
* @throws VCPENetworkManagerException
*/
@Path("/getAllVCPENetworks")
@GET
@Produces(MediaType.APPLICATION_XML)
public List<VCPENetworkModel> getAllVCPENetworks() throws VCPENetworkManagerException;
/**
* Get the VCPEManagerModel model
*
* @return the VCPEManagerModel model
*/
@Path("/getModel")
@GET
@Produces(MediaType.APPLICATION_XML)
public VCPEManagerModel getModel();
/**
* Get a suggestion for the physical infrastructure
*
* @param templateType
* whose physical infrastructure is desired.
* @return the physical infrastructure
* @throws VCPENetworkManagerException
*/
@Path("/getPhyInfrastructureSuggestion")
@GET
@Produces(MediaType.APPLICATION_XML)
public VCPENetworkModel getPhysicalInfrastructureSuggestion(@QueryParam("templateType") String templateType) throws VCPENetworkManagerException;
/**
* Get a suggestion for the logical infrastructure
*
* @param templateType
* whose physical infrastructure is desired.
* @param physicalInfrastructure
* supporting the logical infrastructure to obtain.
* @return the suggested logical infrastructure
* @throws VCPENetworkManagerException
*/
@Path("/getLogicalInfrastructureSuggestion")
@POST
@Produces(MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_XML)
public VCPENetworkModel getLogicalInfrastructureSuggestion(VCPENetworkModel physicalInfrastructure) throws VCPENetworkManagerException;
/**
* Check if a VLAN is available or not in a interface
*
* @param vcpeId
* @param router
* @param vlan
* @param ifaceName
* @return true if is available
* @throws VCPENetworkManagerException
*/
@Path("/isVLANFree")
@GET
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Boolean isVLANFree(@QueryParam("vcpeId") String vcpeId, @QueryParam("router") String router, @QueryParam("vlan") String vlan,
@QueryParam("ifaceName") String ifaceName)
throws VCPENetworkManagerException;
/**
* Check if an IP is available or not in the environment
*
* @param vcpeId
* @param router
* @param iface
* @return true if is available
* @throws VCPENetworkManagerException
*/
@Path("/isIPFree")
@GET
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Boolean isIPFree(@QueryParam("vcpeId") String vcpeId, @QueryParam("router") String router, @QueryParam("ip") String ip)
throws VCPENetworkManagerException;
/**
* Check if an interface is available or not in the environment
*
* @param vcpeId
* @param router
* @param iface
* @return true if is available
* @throws VCPENetworkManagerException
*/
@Path("/isInterfaceFree")
@GET
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Boolean isInterfaceFree(@QueryParam("vcpeId") String vcpeId, @QueryParam("router") String router, @QueryParam("iface") String iface)
throws VCPENetworkManagerException;
/**
*
* @param resourceId
* @return true if the build has finished (either by having completed the task or having failed), false otherwise.
* @throws VCPENetworkManagerException
* if there is no building execution for given resource id.
*/
@Path("/hasFinishedBuild/{id}")
@GET
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
boolean hasFinishedBuild(@PathParam("id") String resourceId) throws VCPENetworkManagerException;
/**
* This implementation consumes the task, so following invocations to this method with same resourceId throw an exception
*
* @param resourceId
* @return true if the build has been successful
* @throws VCPENetworkManagerException
* if building has failed, or there is no building execution for given resource id.
*/
@Path("/getBuildResult/{id}")
@GET
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
boolean getBuildResult(@PathParam("id") String resourceId) throws VCPENetworkManagerException;
@Path("/getUserFilteredVCPEModel/{id}")
@GET
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
VCPENetworkModel getUserFilteredVCPEModel(@PathParam("id") String vcpeNetworkId);
@Path("/editFilteredVCPE/{id}")
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
VCPENetworkModel editFilteredVCPE(@PathParam("id") String vcpeNetworkId, VCPENetworkModel filteredModel);
}