use of org.openkilda.rulemanager.group.Bucket in project open-kilda by telstra.
the class OfGroupConverterTest method testConvertDeleteGroupCommand.
@Test
public void testConvertDeleteGroupCommand() {
List<Bucket> buckets = new ArrayList<>();
buckets.add(Bucket.builder().watchPort(WatchPort.ANY).watchGroup(WatchGroup.ALL).writeActions(Sets.newHashSet(new PortOutAction(new PortNumber(2, null)))).build());
buckets.add(Bucket.builder().watchPort(WatchPort.ANY).watchGroup(WatchGroup.ALL).writeActions(Sets.newHashSet(new PortOutAction(new PortNumber(1, null)))).build());
GroupSpeakerData groupSpeakerData = GroupSpeakerData.builder().groupId(new GroupId(GROUP_ID)).type(GroupType.ALL).buckets(buckets).build();
OFFactoryVer13 factory = new OFFactoryVer13();
OFGroupDelete ofGroupDelete = OfGroupConverter.INSTANCE.convertDeleteGroupCommand(groupSpeakerData, factory);
assertEquals(OFGroup.of(GROUP_ID), ofGroupDelete.getGroup());
assertEquals(OFGroupType.ALL, ofGroupDelete.getGroupType());
}
use of org.openkilda.rulemanager.group.Bucket in project open-kilda by telstra.
the class Utils method buildMirrorBuckets.
/**
* Builds group buckets for flow mirror points (only for sink endpoints. Flow bucket must be build separately).
*/
public static List<Bucket> buildMirrorBuckets(FlowMirrorPoints flowMirrorPoints) {
List<Bucket> buckets = new ArrayList<>();
Set<MirrorConfigData> mirrorConfigDataSet = flowMirrorPoints.getMirrorPaths().stream().map(mirrorPath -> new MirrorConfigData(mirrorPath.getEgressPort(), mirrorPath.getEgressOuterVlan())).collect(Collectors.toSet());
for (MirrorConfigData mirrorConfig : mirrorConfigDataSet) {
Set<Action> actions = new HashSet<>(makeVlanReplaceActions(new ArrayList<>(), makeVlanStack(mirrorConfig.getMirrorVlan())));
actions.add(new PortOutAction(new PortNumber(mirrorConfig.getMirrorPort())));
buckets.add(Bucket.builder().writeActions(actions).watchGroup(WatchGroup.ANY).watchPort(WatchPort.ANY).build());
}
return buckets;
}
use of org.openkilda.rulemanager.group.Bucket in project open-kilda by telstra.
the class BroadCastDiscoveryRuleGeneratorTest method checkGroupCommand.
private void checkGroupCommand(GroupSpeakerData groupCommandData) {
assertEquals(GroupId.ROUND_TRIP_LATENCY_GROUP_ID, groupCommandData.getGroupId());
assertEquals(GroupType.ALL, groupCommandData.getType());
List<Bucket> buckets = groupCommandData.getBuckets();
assertEquals(2, buckets.size());
Bucket first = buckets.get(0);
assertEquals(2, first.getWriteActions().size());
SetFieldAction setEthDstAction = getActionByType(SetFieldAction.class, first.getWriteActions());
assertEquals(Field.ETH_DST, setEthDstAction.getField());
assertEquals(sw.getSwitchId().toLong(), setEthDstAction.getValue());
PortOutAction sendToControllerAction = getActionByType(PortOutAction.class, first.getWriteActions());
assertEquals(SpecialPortType.CONTROLLER, sendToControllerAction.getPortNumber().getPortType());
Bucket second = buckets.get(1);
assertEquals(2, second.getWriteActions().size());
SetFieldAction setUdpDstAction = getActionByType(SetFieldAction.class, second.getWriteActions());
assertEquals(Field.UDP_DST, setUdpDstAction.getField());
assertEquals(LATENCY_PACKET_UDP_PORT, setUdpDstAction.getValue());
PortOutAction sendToPortInAction = getActionByType(PortOutAction.class, second.getWriteActions());
assertEquals(SpecialPortType.IN_PORT, sendToPortInAction.getPortNumber().getPortType());
}
use of org.openkilda.rulemanager.group.Bucket in project open-kilda by telstra.
the class BroadCastDiscoveryRuleGenerator method getRoundTripLatencyGroup.
private static GroupSpeakerData getRoundTripLatencyGroup(Switch sw) {
List<Bucket> buckets = new ArrayList<>();
buckets.add(Bucket.builder().writeActions(Sets.newHashSet(// todo: remove useless set ETH_DST action
actionSetDstMac(sw.getSwitchId().toLong()), new PortOutAction(new PortNumber(SpecialPortType.CONTROLLER)))).build());
buckets.add(Bucket.builder().writeActions(Sets.newHashSet(SetFieldAction.builder().field(Field.UDP_DST).value(LATENCY_PACKET_UDP_PORT).build(), new PortOutAction(new PortNumber(SpecialPortType.IN_PORT)))).build());
return GroupSpeakerData.builder().switchId(sw.getSwitchId()).ofVersion(OfVersion.of(sw.getOfVersion())).groupId(GroupId.ROUND_TRIP_LATENCY_GROUP_ID).type(GroupType.ALL).buckets(buckets).build();
}
use of org.openkilda.rulemanager.group.Bucket in project open-kilda by telstra.
the class OfGroupConverter method convertToGroupSpeakerData.
/**
* Convert stats entry.
*/
public GroupSpeakerData convertToGroupSpeakerData(OFGroupDescStatsEntry entry) {
GroupId groupId = new GroupId(entry.getGroup().getGroupNumber());
GroupType type = fromOfGroupType(entry.getGroupType());
List<Bucket> buckets = new ArrayList<>();
List<OFBucket> ofBuckets = entry.getBuckets();
for (OFBucket bucket : ofBuckets) {
buckets.add(fromOfBucket(bucket));
}
return GroupSpeakerData.builder().groupId(groupId).type(type).buckets(buckets).build();
}
Aggregations