use of org.onosproject.segmentrouting.policy.api.RedirectPolicy in project trellis-control by opennetworkinglab.
the class RedirectPolicyCodecTest method setUp.
@Before
public void setUp() throws Exception {
context = new MockCodecContext();
codec = new RedirectPolicyCodec();
List<DeviceId> deviceIds = new LinkedList<>();
deviceIds.add(DeviceId.deviceId("of:0000000000000001"));
deviceIds.add(DeviceId.deviceId("of:0000000000000002"));
deviceIds.add(DeviceId.deviceId("of:0000000000000003"));
redirectPolicy = new RedirectPolicy(Set.copyOf(deviceIds));
}
use of org.onosproject.segmentrouting.policy.api.RedirectPolicy 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.RedirectPolicy 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.RedirectPolicy 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