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;
}
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();
}
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();
}
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();
}
Aggregations