Search in sources :

Example 1 with PolicyData

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

the class PolicyManager method policies.

@Override
public Set<PolicyData> policies(Set<PolicyType> filter) {
    Set<PolicyData> policyData = Sets.newHashSet();
    List<DeviceId> edgeDeviceIds = getEdgeDeviceIds();
    Set<PolicyRequest> policyRequests;
    if (filter.isEmpty()) {
        policyRequests = ImmutableSet.copyOf(policiesMap.values());
    } else {
        policyRequests = policiesMap.values().stream().filter(policyRequest -> filter.contains(policyRequest.policyType())).collect(Collectors.toSet());
    }
    PolicyKey policyKey;
    List<String> ops;
    for (PolicyRequest policyRequest : policyRequests) {
        ops = Lists.newArrayList();
        for (DeviceId deviceId : edgeDeviceIds) {
            policyKey = new PolicyKey(deviceId, policyRequest.policyId());
            Operation operation = Versioned.valueOrNull(operations.get(policyKey.toString()));
            if (operation != null) {
                ops.add(deviceId + " -> " + operation.toStringMinimal());
            }
        }
        policyData.add(new PolicyData(policyRequest.policyState(), policyRequest.policy(), ops));
    }
    return policyData;
}
Also used : DeviceId(org.onosproject.net.DeviceId) PolicyData(org.onosproject.segmentrouting.policy.api.PolicyData)

Example 2 with PolicyData

use of org.onosproject.segmentrouting.policy.api.PolicyData 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 3 with PolicyData

use of org.onosproject.segmentrouting.policy.api.PolicyData 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 4 with PolicyData

use of org.onosproject.segmentrouting.policy.api.PolicyData 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)

Aggregations

PolicyData (org.onosproject.segmentrouting.policy.api.PolicyData)4 ArrayNode (com.fasterxml.jackson.databind.node.ArrayNode)3 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)3 GET (javax.ws.rs.GET)3 Produces (javax.ws.rs.Produces)3 DropPolicy (org.onosproject.segmentrouting.policy.api.DropPolicy)3 Policy (org.onosproject.segmentrouting.policy.api.Policy)3 PolicyType (org.onosproject.segmentrouting.policy.api.Policy.PolicyType)3 PolicyService (org.onosproject.segmentrouting.policy.api.PolicyService)3 RedirectPolicy (org.onosproject.segmentrouting.policy.api.RedirectPolicy)3 Path (javax.ws.rs.Path)2 DeviceId (org.onosproject.net.DeviceId)1