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