use of org.onosproject.net.intent.constraint.WaypointConstraint in project onos by opennetworkinglab.
the class EncodeConstraintCodecHelper method encodeWaypointConstraint.
/**
* Encodes a waypoint constraint.
*
* @return JSON ObjectNode representing the constraint
*/
private ObjectNode encodeWaypointConstraint() {
checkNotNull(constraint, "Waypoint constraint cannot be null");
final WaypointConstraint waypointConstraint = (WaypointConstraint) constraint;
final ObjectNode result = context.mapper().createObjectNode();
final ArrayNode jsonWaypoints = result.putArray("waypoints");
for (DeviceId did : waypointConstraint.waypoints()) {
jsonWaypoints.add(did.toString());
}
return result;
}
use of org.onosproject.net.intent.constraint.WaypointConstraint in project onos by opennetworkinglab.
the class ConstraintCodecTest method waypointConstraint.
/**
* Tests waypoint constaint.
*/
@Test
public void waypointConstraint() {
Constraint constraint = getConstraint("WaypointConstraint.json");
assertThat(constraint, instanceOf(WaypointConstraint.class));
WaypointConstraint waypointConstraint = (WaypointConstraint) constraint;
assertThat(waypointConstraint.waypoints(), hasItem(did("devA")));
assertThat(waypointConstraint.waypoints(), hasItem(did("devB")));
assertThat(waypointConstraint.waypoints(), hasItem(did("devC")));
}
use of org.onosproject.net.intent.constraint.WaypointConstraint in project onos by opennetworkinglab.
the class IntentCodecTest method intentWithTreatmentSelectorAndConstraints.
/**
* Tests the encoding of an intent with treatment, selector and constraints
* specified.
*/
@Test
public void intentWithTreatmentSelectorAndConstraints() {
ConnectPoint ingress = NetTestTools.connectPoint("ingress", 1);
ConnectPoint egress = NetTestTools.connectPoint("egress", 2);
DeviceId did1 = did("device1");
DeviceId did2 = did("device2");
DeviceId did3 = did("device3");
Lambda ochSignal = Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_100GHZ, 4, 8);
final TrafficSelector selector = DefaultTrafficSelector.builder().matchIPProtocol((byte) 3).matchMplsLabel(MplsLabel.mplsLabel(4)).add(Criteria.matchOchSignalType(OchSignalType.FIXED_GRID)).add(Criteria.matchLambda(ochSignal)).matchEthDst(MacAddress.BROADCAST).matchIPDst(IpPrefix.valueOf("1.2.3.4/24")).build();
final TrafficTreatment treatment = DefaultTrafficTreatment.builder().setMpls(MplsLabel.mplsLabel(44)).setOutput(PortNumber.CONTROLLER).setEthDst(MacAddress.BROADCAST).build();
final List<Constraint> constraints = ImmutableList.of(new BandwidthConstraint(Bandwidth.bps(1.0)), new AnnotationConstraint("key", 33.0), new AsymmetricPathConstraint(), new LatencyConstraint(Duration.ofSeconds(2)), new ObstacleConstraint(did1, did2), new WaypointConstraint(did3));
final PointToPointIntent intent = PointToPointIntent.builder().appId(appId).selector(selector).treatment(treatment).filteredIngressPoint(new FilteredConnectPoint(ingress)).filteredEgressPoint(new FilteredConnectPoint(egress)).constraints(constraints).build();
final JsonCodec<PointToPointIntent> intentCodec = context.codec(PointToPointIntent.class);
assertThat(intentCodec, notNullValue());
final ObjectNode intentJson = intentCodec.encode(intent, context);
assertThat(intentJson, matchesIntent(intent));
}
use of org.onosproject.net.intent.constraint.WaypointConstraint in project onos by opennetworkinglab.
the class DecodeConstraintCodecHelper method decodeWaypointConstraint.
/**
* Decodes a waypoint constraint.
*
* @return waypoint constraint object.
*/
private Constraint decodeWaypointConstraint() {
JsonNode waypoints = nullIsIllegal(json.get(ConstraintCodec.WAYPOINTS), ConstraintCodec.WAYPOINTS + ConstraintCodec.MISSING_MEMBER_MESSAGE);
if (waypoints.size() < 1) {
throw new IllegalArgumentException("obstacles array in obstacles constraint must have at least one value");
}
ArrayList<DeviceId> waypointEntries = new ArrayList<>(waypoints.size());
IntStream.range(0, waypoints.size()).forEach(index -> waypointEntries.add(DeviceId.deviceId(waypoints.get(index).asText())));
return new WaypointConstraint(waypointEntries.toArray(new DeviceId[waypoints.size()]));
}
use of org.onosproject.net.intent.constraint.WaypointConstraint in project onos by opennetworkinglab.
the class EncodeConstraintCodecHelper method encode.
/**
* Encodes the constraint in JSON.
*
* @return JSON node
*/
public ObjectNode encode() {
final ObjectNode result;
if (constraint instanceof BandwidthConstraint) {
result = encodeBandwidthConstraint();
} else if (constraint instanceof LinkTypeConstraint) {
result = encodeLinkTypeConstraint();
} else if (constraint instanceof AnnotationConstraint) {
result = encodeAnnotationConstraint();
} else if (constraint instanceof LatencyConstraint) {
result = encodeLatencyConstraint();
} else if (constraint instanceof ObstacleConstraint) {
result = encodeObstacleConstraint();
} else if (constraint instanceof WaypointConstraint) {
result = encodeWaypointConstraint();
} else if (constraint instanceof MeteredConstraint) {
result = encodeMeteredConstraint();
} else if (constraint instanceof TierConstraint) {
result = encodeTierConstraint();
} else {
result = context.mapper().createObjectNode();
}
result.put(ConstraintCodec.TYPE, constraint.getClass().getSimpleName());
return result;
}
Aggregations