Search in sources :

Example 6 with Bucket

use of org.openkilda.rulemanager.group.Bucket in project open-kilda by telstra.

the class IngressMirrorRuleGeneratorTest method assertGroupCommand.

private void assertGroupCommand(GroupSpeakerData command, Set<Action> flowActions) {
    assertEquals(GROUP_ID, command.getGroupId());
    assertEquals(SWITCH_1.getSwitchId(), command.getSwitchId());
    assertEquals(SWITCH_1.getOfVersion(), command.getOfVersion().toString());
    assertEquals(GroupType.ALL, command.getType());
    assertTrue(command.getDependsOn().isEmpty());
    assertEquals(2, command.getBuckets().size());
    Bucket flowBucket = command.getBuckets().get(0);
    assertBucketCommon(flowBucket);
    assertEquals(flowActions, flowBucket.getWriteActions());
    Bucket mirrorBucket = command.getBuckets().get(1);
    assertBucketCommon(mirrorBucket);
    assertEquals(newHashSet(new PushVlanAction(), SetFieldAction.builder().field(Field.VLAN_VID).value(MIRROR_VLAN).build(), new PortOutAction(new PortNumber(MIRROR_PORT))), mirrorBucket.getWriteActions());
}
Also used : Bucket(org.openkilda.rulemanager.group.Bucket) PortOutAction(org.openkilda.rulemanager.action.PortOutAction) PushVlanAction(org.openkilda.rulemanager.action.PushVlanAction) PortNumber(org.openkilda.rulemanager.ProtoConstants.PortNumber)

Example 7 with Bucket

use of org.openkilda.rulemanager.group.Bucket in project open-kilda by telstra.

the class EgressMirrorRuleGeneratorTest method assertGroupCommand.

private void assertGroupCommand(GroupSpeakerData command) {
    assertEquals(GROUP_ID, command.getGroupId());
    assertEquals(SWITCH_2.getSwitchId(), command.getSwitchId());
    assertEquals(SWITCH_2.getOfVersion(), command.getOfVersion().toString());
    assertEquals(GroupType.ALL, command.getType());
    assertTrue(command.getDependsOn().isEmpty());
    assertEquals(2, command.getBuckets().size());
    Bucket flowBucket = command.getBuckets().get(0);
    assertBucketCommon(flowBucket);
    assertEquals(newHashSet(new PortOutAction(new PortNumber(PORT_NUMBER_4))), flowBucket.getWriteActions());
    Bucket mirrorBucket = command.getBuckets().get(1);
    assertBucketCommon(mirrorBucket);
    assertEquals(newHashSet(new PushVlanAction(), SetFieldAction.builder().field(Field.VLAN_VID).value(MIRROR_VLAN).build(), new PortOutAction(new PortNumber(MIRROR_PORT))), mirrorBucket.getWriteActions());
}
Also used : Bucket(org.openkilda.rulemanager.group.Bucket) PortOutAction(org.openkilda.rulemanager.action.PortOutAction) PushVlanAction(org.openkilda.rulemanager.action.PushVlanAction) PortNumber(org.openkilda.rulemanager.ProtoConstants.PortNumber)

Example 8 with Bucket

use of org.openkilda.rulemanager.group.Bucket in project open-kilda by telstra.

the class OfGroupConverterTest method testConvertInstallGroupCommand.

@Test
public void testConvertInstallGroupCommand() {
    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();
    OFGroupAdd ofGroupAdd = OfGroupConverter.INSTANCE.convertInstallGroupCommand(groupSpeakerData, factory);
    assertEquals(OFGroup.of(GROUP_ID), ofGroupAdd.getGroup());
    assertEquals(OFGroupType.ALL, ofGroupAdd.getGroupType());
    assertEquals(2, ofGroupAdd.getBuckets().size());
    List<OFBucket> expectedBuckets = new ArrayList<>();
    expectedBuckets.add(factory.buildBucket().setWatchPort(OFPort.ANY).setWatchGroup(OFGroup.ALL).setActions(getActions(factory, 2)).build());
    expectedBuckets.add(factory.buildBucket().setWatchPort(OFPort.ANY).setWatchGroup(OFGroup.ALL).setActions(getActions(factory, 1)).build());
    assertEquals(expectedBuckets, ofGroupAdd.getBuckets());
}
Also used : OFGroupAdd(org.projectfloodlight.openflow.protocol.OFGroupAdd) OFBucket(org.projectfloodlight.openflow.protocol.OFBucket) OFBucket(org.projectfloodlight.openflow.protocol.OFBucket) Bucket(org.openkilda.rulemanager.group.Bucket) PortOutAction(org.openkilda.rulemanager.action.PortOutAction) OFFactoryVer13(org.projectfloodlight.openflow.protocol.ver13.OFFactoryVer13) ArrayList(java.util.ArrayList) GroupSpeakerData(org.openkilda.rulemanager.GroupSpeakerData) PortNumber(org.openkilda.rulemanager.ProtoConstants.PortNumber) GroupId(org.openkilda.model.GroupId) Test(org.junit.Test)

Example 9 with Bucket

use of org.openkilda.rulemanager.group.Bucket in project open-kilda by telstra.

the class OfGroupConverterTest method testConvertToGroupSpeakerData.

@Test
public void testConvertToGroupSpeakerData() {
    OFFactoryVer13 factory = new OFFactoryVer13();
    Builder builder = factory.buildGroupDescStatsReply();
    List<OFGroupDescStatsEntry> entries = new ArrayList<>();
    entries.add(getOfGroupEntry(factory));
    builder.setEntries(entries);
    List<GroupSpeakerData> groupSpeakerDataList = OfGroupConverter.INSTANCE.convertToGroupSpeakerData(builder.build());
    assertEquals(1, groupSpeakerDataList.size());
    GroupSpeakerData groupSpeakerData = groupSpeakerDataList.get(0);
    assertEquals(new GroupId(GROUP_ID), groupSpeakerData.getGroupId());
    assertEquals(GroupType.ALL, groupSpeakerData.getType());
    List<Bucket> buckets = groupSpeakerData.getBuckets();
    Set<Bucket> expectedBuckets = new HashSet<>();
    expectedBuckets.add(Bucket.builder().watchPort(WatchPort.ANY).watchGroup(WatchGroup.ALL).writeActions(Sets.newHashSet(new PortOutAction(new PortNumber(2, null)))).build());
    expectedBuckets.add(Bucket.builder().watchPort(WatchPort.ANY).watchGroup(WatchGroup.ALL).writeActions(Sets.newHashSet(new PortOutAction(new PortNumber(1, null)))).build());
    assertEquals(expectedBuckets, new HashSet<>(buckets));
}
Also used : OFFactoryVer13(org.projectfloodlight.openflow.protocol.ver13.OFFactoryVer13) PortOutAction(org.openkilda.rulemanager.action.PortOutAction) OFGroupDescStatsEntry(org.projectfloodlight.openflow.protocol.OFGroupDescStatsEntry) Builder(org.projectfloodlight.openflow.protocol.OFGroupDescStatsReply.Builder) ArrayList(java.util.ArrayList) GroupSpeakerData(org.openkilda.rulemanager.GroupSpeakerData) GroupId(org.openkilda.model.GroupId) OFBucket(org.projectfloodlight.openflow.protocol.OFBucket) Bucket(org.openkilda.rulemanager.group.Bucket) PortNumber(org.openkilda.rulemanager.ProtoConstants.PortNumber) HashSet(java.util.HashSet) Test(org.junit.Test)

Aggregations

Bucket (org.openkilda.rulemanager.group.Bucket)9 PortOutAction (org.openkilda.rulemanager.action.PortOutAction)8 PortNumber (org.openkilda.rulemanager.ProtoConstants.PortNumber)7 ArrayList (java.util.ArrayList)6 GroupId (org.openkilda.model.GroupId)4 OFBucket (org.projectfloodlight.openflow.protocol.OFBucket)4 Test (org.junit.Test)3 GroupSpeakerData (org.openkilda.rulemanager.GroupSpeakerData)3 PushVlanAction (org.openkilda.rulemanager.action.PushVlanAction)3 HashSet (java.util.HashSet)2 SetFieldAction (org.openkilda.rulemanager.action.SetFieldAction)2 OFFactoryVer13 (org.projectfloodlight.openflow.protocol.ver13.OFFactoryVer13)2 Sets.newHashSet (com.google.common.collect.Sets.newHashSet)1 String.format (java.lang.String.format)1 Iterator (java.util.Iterator)1 List (java.util.List)1 Optional (java.util.Optional)1 Set (java.util.Set)1 Collectors (java.util.stream.Collectors)1 FlowSideAdapter (org.openkilda.adapter.FlowSideAdapter)1