From a73f1065a96e89a0f848a360f73b7f4bad7d54bb Mon Sep 17 00:00:00 2001 From: Carmelo Cascone Date: Mon, 16 Jul 2018 22:49:46 +0200 Subject: [PATCH] Translate only certain groups to PI Change-Id: I71417e43ec456bce21a9abcc0609dc05a82b264c --- .../net/pi/impl/PiGroupTranslatorImpl.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/core/net/src/main/java/org/onosproject/net/pi/impl/PiGroupTranslatorImpl.java b/core/net/src/main/java/org/onosproject/net/pi/impl/PiGroupTranslatorImpl.java index ea7ae5065a..70d2dde989 100644 --- a/core/net/src/main/java/org/onosproject/net/pi/impl/PiGroupTranslatorImpl.java +++ b/core/net/src/main/java/org/onosproject/net/pi/impl/PiGroupTranslatorImpl.java @@ -16,9 +16,11 @@ package org.onosproject.net.pi.impl; +import com.google.common.collect.Sets; import org.onosproject.net.Device; import org.onosproject.net.group.Group; import org.onosproject.net.group.GroupBucket; +import org.onosproject.net.group.GroupDescription; import org.onosproject.net.pi.model.PiPipeconf; import org.onosproject.net.pi.model.PiPipelineInterpreter; import org.onosproject.net.pi.runtime.PiAction; @@ -31,6 +33,7 @@ import org.onosproject.net.pi.runtime.PiTableAction; import org.onosproject.net.pi.service.PiTranslationException; import java.nio.ByteBuffer; +import java.util.Set; import static java.lang.String.format; import static org.onosproject.net.pi.impl.PiFlowRuleTranslatorImpl.translateTreatment; @@ -42,6 +45,11 @@ import static org.onosproject.net.pi.runtime.PiTableAction.Type.ACTION; */ final class PiGroupTranslatorImpl { + private static final Set SUPPORTED_GROUP_TYPES = + Sets.immutableEnumSet( + GroupDescription.Type.SELECT, + GroupDescription.Type.INDIRECT); + private PiGroupTranslatorImpl() { // Hides constructor. } @@ -57,13 +65,18 @@ final class PiGroupTranslatorImpl { */ static PiActionGroup translate(Group group, PiPipeconf pipeconf, Device device) throws PiTranslationException { + if (!SUPPORTED_GROUP_TYPES.contains(group.type())) { + throw new PiTranslationException(format( + "group type %s not supported", group.type())); + } + final PiPipelineInterpreter interpreter = getInterpreterOrNull(device, pipeconf); final PiActionGroup.Builder piActionGroupBuilder = PiActionGroup.builder() .withId(PiActionGroupId.of(group.id().id())); if (!(group.appCookie() instanceof PiGroupKey)) { - throw new PiTranslationException("Group app cookie is not PI (class should be PiGroupKey)"); + throw new PiTranslationException("group app cookie is not PI (class should be PiGroupKey)"); } final PiGroupKey groupKey = (PiGroupKey) group.appCookie();