Committed by
Gerrit Code Review
[ONOS-4115] Support flow table pipeline for REST API
This commit adds capability to handle Table type in InstructionCodec. Change-Id: I82f1abf9f7ed17df3885746e8c24223190dd216f
Showing
3 changed files
with
13 additions
and
6 deletions
| ... | @@ -103,6 +103,12 @@ public final class Instructions { | ... | @@ -103,6 +103,12 @@ public final class Instructions { |
| 103 | return new SetQueueInstruction(queueId, port); | 103 | return new SetQueueInstruction(queueId, port); |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | + /** | ||
| 107 | + * Creates a meter instruction. | ||
| 108 | + * | ||
| 109 | + * @param meterId Meter Id | ||
| 110 | + * @return meter instruction | ||
| 111 | + */ | ||
| 106 | public static MeterInstruction meterTraffic(final MeterId meterId) { | 112 | public static MeterInstruction meterTraffic(final MeterId meterId) { |
| 107 | checkNotNull(meterId, "meter id cannot be null"); | 113 | checkNotNull(meterId, "meter id cannot be null"); |
| 108 | return new MeterInstruction(meterId); | 114 | return new MeterInstruction(meterId); | ... | ... |
| ... | @@ -15,8 +15,7 @@ | ... | @@ -15,8 +15,7 @@ |
| 15 | */ | 15 | */ |
| 16 | package org.onosproject.codec.impl; | 16 | package org.onosproject.codec.impl; |
| 17 | 17 | ||
| 18 | -import static org.onlab.util.Tools.nullIsIllegal; | 18 | +import com.fasterxml.jackson.databind.node.ObjectNode; |
| 19 | - | ||
| 20 | import org.onlab.packet.IpAddress; | 19 | import org.onlab.packet.IpAddress; |
| 21 | import org.onlab.packet.MacAddress; | 20 | import org.onlab.packet.MacAddress; |
| 22 | import org.onlab.packet.MplsLabel; | 21 | import org.onlab.packet.MplsLabel; |
| ... | @@ -37,7 +36,7 @@ import org.onosproject.net.flow.instructions.L2ModificationInstruction; | ... | @@ -37,7 +36,7 @@ import org.onosproject.net.flow.instructions.L2ModificationInstruction; |
| 37 | import org.onosproject.net.flow.instructions.L3ModificationInstruction; | 36 | import org.onosproject.net.flow.instructions.L3ModificationInstruction; |
| 38 | import org.onosproject.net.flow.instructions.L4ModificationInstruction; | 37 | import org.onosproject.net.flow.instructions.L4ModificationInstruction; |
| 39 | 38 | ||
| 40 | -import com.fasterxml.jackson.databind.node.ObjectNode; | 39 | +import static org.onlab.util.Tools.nullIsIllegal; |
| 41 | 40 | ||
| 42 | /** | 41 | /** |
| 43 | * Decoding portion of the instruction codec. | 42 | * Decoding portion of the instruction codec. |
| ... | @@ -259,6 +258,9 @@ public final class DecodeInstructionCodecHelper { | ... | @@ -259,6 +258,9 @@ public final class DecodeInstructionCodecHelper { |
| 259 | return Instructions.createOutput(portNumber); | 258 | return Instructions.createOutput(portNumber); |
| 260 | } else if (type.equals(Instruction.Type.NOACTION.name())) { | 259 | } else if (type.equals(Instruction.Type.NOACTION.name())) { |
| 261 | return Instructions.createNoAction(); | 260 | return Instructions.createNoAction(); |
| 261 | + } else if (type.equals(Instruction.Type.TABLE.name())) { | ||
| 262 | + return Instructions.transition(nullIsIllegal(json.get(InstructionCodec.TABLE_ID) | ||
| 263 | + .asInt(), InstructionCodec.TABLE_ID + InstructionCodec.MISSING_MEMBER_MESSAGE)); | ||
| 262 | } else if (type.equals(Instruction.Type.L0MODIFICATION.name())) { | 264 | } else if (type.equals(Instruction.Type.L0MODIFICATION.name())) { |
| 263 | return decodeL0(); | 265 | return decodeL0(); |
| 264 | } else if (type.equals(Instruction.Type.L1MODIFICATION.name())) { | 266 | } else if (type.equals(Instruction.Type.L1MODIFICATION.name())) { |
| ... | @@ -273,5 +275,4 @@ public final class DecodeInstructionCodecHelper { | ... | @@ -273,5 +275,4 @@ public final class DecodeInstructionCodecHelper { |
| 273 | throw new IllegalArgumentException("Instruction type " | 275 | throw new IllegalArgumentException("Instruction type " |
| 274 | + type + " is not supported"); | 276 | + type + " is not supported"); |
| 275 | } | 277 | } |
| 276 | - | ||
| 277 | } | 278 | } | ... | ... |
| ... | @@ -15,14 +15,13 @@ | ... | @@ -15,14 +15,13 @@ |
| 15 | */ | 15 | */ |
| 16 | package org.onosproject.codec.impl; | 16 | package org.onosproject.codec.impl; |
| 17 | 17 | ||
| 18 | +import com.fasterxml.jackson.databind.node.ObjectNode; | ||
| 18 | import org.onosproject.codec.CodecContext; | 19 | import org.onosproject.codec.CodecContext; |
| 19 | import org.onosproject.codec.JsonCodec; | 20 | import org.onosproject.codec.JsonCodec; |
| 20 | import org.onosproject.net.flow.instructions.Instruction; | 21 | import org.onosproject.net.flow.instructions.Instruction; |
| 21 | import org.slf4j.Logger; | 22 | import org.slf4j.Logger; |
| 22 | import org.slf4j.LoggerFactory; | 23 | import org.slf4j.LoggerFactory; |
| 23 | 24 | ||
| 24 | -import com.fasterxml.jackson.databind.node.ObjectNode; | ||
| 25 | - | ||
| 26 | import static com.google.common.base.Preconditions.checkNotNull; | 25 | import static com.google.common.base.Preconditions.checkNotNull; |
| 27 | 26 | ||
| 28 | /** | 27 | /** |
| ... | @@ -50,6 +49,7 @@ public final class InstructionCodec extends JsonCodec<Instruction> { | ... | @@ -50,6 +49,7 @@ public final class InstructionCodec extends JsonCodec<Instruction> { |
| 50 | protected static final String TUNNEL_ID = "tunnelId"; | 49 | protected static final String TUNNEL_ID = "tunnelId"; |
| 51 | protected static final String TCP_PORT = "tcpPort"; | 50 | protected static final String TCP_PORT = "tcpPort"; |
| 52 | protected static final String UDP_PORT = "udpPort"; | 51 | protected static final String UDP_PORT = "udpPort"; |
| 52 | + protected static final String TABLE_ID = "tableId"; | ||
| 53 | protected static final String TRIBUTARY_PORT_NUMBER = "tributaryPortNumber"; | 53 | protected static final String TRIBUTARY_PORT_NUMBER = "tributaryPortNumber"; |
| 54 | protected static final String TRIBUTARY_SLOT_LEN = "tributarySlotLength"; | 54 | protected static final String TRIBUTARY_SLOT_LEN = "tributarySlotLength"; |
| 55 | protected static final String TRIBUTARY_SLOT_BITMAP = "tributarySlotBitmap"; | 55 | protected static final String TRIBUTARY_SLOT_BITMAP = "tributarySlotBitmap"; | ... | ... |
-
Please register or login to post a comment