package org.opennaas.extensions.router.capability.ospf;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import org.opennaas.core.resources.capability.CapabilityException;
import org.opennaas.core.resources.capability.ICapability;
import org.opennaas.extensions.router.model.LogicalPort;
import org.opennaas.extensions.router.model.OSPFArea;
import org.opennaas.extensions.router.model.OSPFAreaConfiguration;
import org.opennaas.extensions.router.model.OSPFProtocolEndpoint;
import org.opennaas.extensions.router.model.OSPFService;
import org.opennaas.extensions.router.model.wrappers.AddInterfacesInOSPFAreaRequest;
import org.opennaas.extensions.router.model.wrappers.RemoveInterfacesInOSPFAreaRequest;
/**
* @author Jordi Puig
* @author Isart Canyameres
*/
@Path("/")
public interface IOSPFCapability extends ICapability {
/**
* Enable OSPF on the router.
*
* @throws CapabilityException
*/
@Path("/activateOSPF")
@POST
public void activateOSPF() throws CapabilityException;
/**
* Disable OSPF on the router.
*
* @throws CapabilityException
*/
@Path("/deactivateOSPF")
@POST
public void deactivateOSPF() throws CapabilityException;
/**
* Configure OSPF service.
*
* This configuration applies to the OSPF Service itself, but does not affect areas nor interfaces.
*
* @param ospfService
* @throws CapabilityException
*/
@Path("/configureOSPF")
@Consumes(MediaType.APPLICATION_XML)
@POST
public void configureOSPF(OSPFService ospfService) throws CapabilityException;
/**
* Removes all OSPF configuration.
*
* @param ospfService
* @throws CapabilityException
*/
@Path("/clearOSPFconfiguration")
@Consumes(MediaType.APPLICATION_XML)
@POST
public void clearOSPFconfiguration(OSPFService ospfService) throws CapabilityException;
/**
* Configures an OSPF area.
*
* @param ospfAreaConfiguration
* @throws CapabilityException
*/
@Path("/configureOSPFArea")
@Consumes(MediaType.APPLICATION_XML)
@POST
public void configureOSPFArea(OSPFAreaConfiguration ospfAreaConfiguration) throws CapabilityException;
/**
* Remove an OSPF area.
*
* @param ospfAreaConfiguration
* @throws CapabilityException
*/
@Path("/removeOSPFArea")
@Consumes(MediaType.APPLICATION_XML)
@POST
public void removeOSPFArea(OSPFAreaConfiguration ospfAreaConfiguration) throws CapabilityException;
/**
* Adds given interfaces to given OSPF area
*
* @param addInterfacesOSPFRequest
* @throws CapabilityException
*/
@Path("/addInterfacesInOSPFArea")
@POST
@Consumes(MediaType.APPLICATION_XML)
public void addInterfacesInOSPFArea(AddInterfacesInOSPFAreaRequest addInterfacesInOSPFAreaRequest)
throws CapabilityException;
/**
* Adds given interfaces to given OSPF area
*
* @param interfaces
* @param ospfArea
* @throws CapabilityException
*/
public void addInterfacesInOSPFArea(List<LogicalPort> interfaces, OSPFArea ospfArea)
throws CapabilityException;
/**
* Remove given interfaces from given OSPF area
*
* @param removeInterfacesOSPFRequest
* @throws CapabilityException
*/
@Path("/removeInterfacesInOSPFArea")
@POST
@Consumes(MediaType.APPLICATION_XML)
public void removeInterfacesInOSPFArea(RemoveInterfacesInOSPFAreaRequest removeInterfacesInOSPFAreaRequest)
throws CapabilityException;
/**
* Remove given interfaces from given OSPF area
*
* @param interfaces
* @param ospfArea
* @throws CapabilityException
*/
public void removeInterfacesInOSPFArea(List<LogicalPort> interfaces, OSPFArea ospfArea)
throws CapabilityException;
/**
* Enable OSPF in given interfaces, if they are already configured.
*
* @param interfaces
* @throws CapabilityException
*/
@Path("/enableOSPFInterfaces")
@POST
@Consumes(MediaType.APPLICATION_XML)
public void enableOSPFInterfaces(List<OSPFProtocolEndpoint> interfaces) throws CapabilityException;
/**
* Disable OSPF in given interfaces, if they are already configured.
*
* @param interfaces
* @throws CapabilityException
*/
@Path("/disableOSPFInterfaces")
@POST
@Consumes(MediaType.APPLICATION_XML)
public void disableOSPFInterfaces(List<OSPFProtocolEndpoint> interfaces) throws CapabilityException;
/**
* Returns OSPF full configuration from the router
*
* This includes service, areas, and interface status.
*
* @throws CapabilityException
*/
@Path("/getOSPFConfiguration")
@POST
public void getOSPFConfiguration() throws CapabilityException;
/**
* Returns OSPF full configuration from the model
*
* This includes service, areas, and interface status.
*
* @return ospfService
* @throws CapabilityException
*/
// TODO: export this method using rest too
public OSPFService showOSPFConfiguration() throws CapabilityException;
}