Search in sources :

Example 11 with PolicyService

use of org.onosproject.segmentrouting.policy.api.PolicyService in project trellis-control by opennetworkinglab.

the class PolicyWebResource method getPolicies.

/**
 * Get all Policies.
 *
 * @return 200 OK will a collection of Policies
 */
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getPolicies() {
    PolicyService policyService = get(PolicyService.class);
    ObjectNode root = mapper().createObjectNode();
    ArrayNode policiesArr = root.putArray(POLICY);
    // Create a filter set contains all PolicyType
    Set<PolicyType> policyTypes = Set.of(PolicyType.values());
    for (PolicyData policyData : policyService.policies(policyTypes)) {
        Policy policy = policyData.policy();
        switch(policy.policyType()) {
            case DROP:
                policiesArr.add(codec(DropPolicy.class).encode((DropPolicy) policy, this));
                break;
            case REDIRECT:
                policiesArr.add(codec(RedirectPolicy.class).encode((RedirectPolicy) policy, this));
                break;
            default:
                continue;
        }
    }
    return Response.ok(root).build();
}
Also used : DropPolicy(org.onosproject.segmentrouting.policy.api.DropPolicy) Policy(org.onosproject.segmentrouting.policy.api.Policy) RedirectPolicy(org.onosproject.segmentrouting.policy.api.RedirectPolicy) PolicyType(org.onosproject.segmentrouting.policy.api.Policy.PolicyType) RedirectPolicy(org.onosproject.segmentrouting.policy.api.RedirectPolicy) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) PolicyService(org.onosproject.segmentrouting.policy.api.PolicyService) PolicyData(org.onosproject.segmentrouting.policy.api.PolicyData) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) DropPolicy(org.onosproject.segmentrouting.policy.api.DropPolicy) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET)

Example 12 with PolicyService

use of org.onosproject.segmentrouting.policy.api.PolicyService in project trellis-control by opennetworkinglab.

the class PolicyWebResource method getDropPolicies.

/**
 * Get all Drop Policies.
 *
 * @return 200 OK will a collection of Dop Policies
 */
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("drop")
public Response getDropPolicies() {
    PolicyService policyService = get(PolicyService.class);
    ObjectNode root = mapper().createObjectNode();
    ArrayNode policiesArr = root.putArray(POLICY);
    Set<PolicyType> policyTypes = Set.of(PolicyType.DROP);
    for (PolicyData policyData : policyService.policies(policyTypes)) {
        Policy policy = policyData.policy();
        policiesArr.add(codec(DropPolicy.class).encode((DropPolicy) policy, this));
    }
    return Response.ok(root).build();
}
Also used : DropPolicy(org.onosproject.segmentrouting.policy.api.DropPolicy) Policy(org.onosproject.segmentrouting.policy.api.Policy) RedirectPolicy(org.onosproject.segmentrouting.policy.api.RedirectPolicy) PolicyType(org.onosproject.segmentrouting.policy.api.Policy.PolicyType) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) PolicyService(org.onosproject.segmentrouting.policy.api.PolicyService) PolicyData(org.onosproject.segmentrouting.policy.api.PolicyData) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) DropPolicy(org.onosproject.segmentrouting.policy.api.DropPolicy) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET)

Example 13 with PolicyService

use of org.onosproject.segmentrouting.policy.api.PolicyService in project trellis-control by opennetworkinglab.

the class PolicyWebResource method createRedirectPolicy.

/**
 * Create a new Redirect Policy.
 *
 * @param input Json for the Redirect Policy
 * @return 200 OK and policyId
 * @onos.rsModel RedirectPolicyCreate
 */
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("redirect")
public Response createRedirectPolicy(InputStream input) {
    PolicyService policyService = get(PolicyService.class);
    ObjectNode root = mapper().createObjectNode();
    try {
        ObjectNode jsonTree = readTreeFromStream(mapper(), input);
        RedirectPolicy redirectPolicy = codec(RedirectPolicy.class).decode(jsonTree, this);
        policyService.addOrUpdatePolicy(redirectPolicy);
        root.put(POLICY_ID, redirectPolicy.policyId().toString());
    } catch (IOException ex) {
        throw new IllegalArgumentException(ex);
    }
    return Response.ok(root).build();
}
Also used : RedirectPolicy(org.onosproject.segmentrouting.policy.api.RedirectPolicy) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) PolicyService(org.onosproject.segmentrouting.policy.api.PolicyService) IOException(java.io.IOException) Path(javax.ws.rs.Path) POST(javax.ws.rs.POST) Consumes(javax.ws.rs.Consumes) Produces(javax.ws.rs.Produces)

Example 14 with PolicyService

use of org.onosproject.segmentrouting.policy.api.PolicyService in project trellis-control by opennetworkinglab.

the class PolicyWebResource method getRedirectPolicies.

/**
 * Get all Redirect Policies.
 *
 * @return 200 OK will a collection of Redirect Policies
 */
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("redirect")
public Response getRedirectPolicies() {
    PolicyService policyService = get(PolicyService.class);
    ObjectNode root = mapper().createObjectNode();
    ArrayNode policiesArr = root.putArray(POLICY);
    Set<PolicyType> policyTypes = Set.of(PolicyType.REDIRECT);
    for (PolicyData policyData : policyService.policies(policyTypes)) {
        Policy policy = policyData.policy();
        policiesArr.add(codec(RedirectPolicy.class).encode((RedirectPolicy) policy, this));
    }
    return Response.ok(root).build();
}
Also used : DropPolicy(org.onosproject.segmentrouting.policy.api.DropPolicy) Policy(org.onosproject.segmentrouting.policy.api.Policy) RedirectPolicy(org.onosproject.segmentrouting.policy.api.RedirectPolicy) PolicyType(org.onosproject.segmentrouting.policy.api.Policy.PolicyType) RedirectPolicy(org.onosproject.segmentrouting.policy.api.RedirectPolicy) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) PolicyService(org.onosproject.segmentrouting.policy.api.PolicyService) PolicyData(org.onosproject.segmentrouting.policy.api.PolicyData) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET)

Example 15 with PolicyService

use of org.onosproject.segmentrouting.policy.api.PolicyService in project trellis-control by opennetworkinglab.

the class PolicyWebResource method createTrafficMatch.

/**
 * Create a new Traffic Match.
 *
 * @param input Json for the Traffic Match
 * @return status of the request - CREATED and TrafficMatchId if the JSON is correct,
 * BAD_REQUEST if the JSON is invalid
 * @onos.rsModel TrafficMatchCreate
 */
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("trafficmatch")
public Response createTrafficMatch(InputStream input) {
    PolicyService policyService = get(PolicyService.class);
    ObjectNode root = mapper().createObjectNode();
    try {
        ObjectNode jsonTree = readTreeFromStream(mapper(), input);
        TrafficMatch trafficMatch = codec(TrafficMatch.class).decode(jsonTree, this);
        if (trafficMatch.trafficSelector().equals(DefaultTrafficSelector.emptySelector())) {
            throw new IllegalArgumentException(EMPTY_TRAFFIC_SELECTOR);
        }
        policyService.addOrUpdateTrafficMatch(trafficMatch);
        root.put(TRAFFIC_MATCH_ID, trafficMatch.trafficMatchId().toString());
    } catch (IOException | IllegalArgumentException ex) {
        throw new IllegalArgumentException(ex);
    }
    return Response.ok(root).build();
}
Also used : TrafficMatch(org.onosproject.segmentrouting.policy.api.TrafficMatch) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) PolicyService(org.onosproject.segmentrouting.policy.api.PolicyService) IOException(java.io.IOException) Path(javax.ws.rs.Path) POST(javax.ws.rs.POST) Consumes(javax.ws.rs.Consumes) Produces(javax.ws.rs.Produces)

Aggregations

PolicyService (org.onosproject.segmentrouting.policy.api.PolicyService)15 Produces (javax.ws.rs.Produces)9 Path (javax.ws.rs.Path)8 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)7 DropPolicy (org.onosproject.segmentrouting.policy.api.DropPolicy)5 RedirectPolicy (org.onosproject.segmentrouting.policy.api.RedirectPolicy)5 ArrayNode (com.fasterxml.jackson.databind.node.ArrayNode)4 GET (javax.ws.rs.GET)4 Consumes (javax.ws.rs.Consumes)3 POST (javax.ws.rs.POST)3 Policy (org.onosproject.segmentrouting.policy.api.Policy)3 PolicyType (org.onosproject.segmentrouting.policy.api.Policy.PolicyType)3 PolicyData (org.onosproject.segmentrouting.policy.api.PolicyData)3 TrafficMatch (org.onosproject.segmentrouting.policy.api.TrafficMatch)3 IOException (java.io.IOException)2 DELETE (javax.ws.rs.DELETE)2 PolicyId (org.onosproject.segmentrouting.policy.api.PolicyId)2 DeviceId (org.onosproject.net.DeviceId)1 DefaultTrafficSelector (org.onosproject.net.flow.DefaultTrafficSelector)1 TrafficSelector (org.onosproject.net.flow.TrafficSelector)1