Committed by
Gerrit Code Review
Support to specify table id when insert Flow Rule through REST API
Change-Id: I5ac45403a3f8b454ddfd873556e398b45f82842e
Showing
6 changed files
with
49 additions
and
28 deletions
... | @@ -15,6 +15,8 @@ | ... | @@ -15,6 +15,8 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.codec.impl; | 16 | package org.onosproject.codec.impl; |
17 | 17 | ||
18 | +import com.fasterxml.jackson.databind.JsonNode; | ||
19 | +import com.fasterxml.jackson.databind.node.ObjectNode; | ||
18 | import org.onosproject.codec.CodecContext; | 20 | import org.onosproject.codec.CodecContext; |
19 | import org.onosproject.codec.JsonCodec; | 21 | import org.onosproject.codec.JsonCodec; |
20 | import org.onosproject.core.CoreService; | 22 | import org.onosproject.core.CoreService; |
... | @@ -24,8 +26,6 @@ import org.onosproject.net.flow.FlowRule; | ... | @@ -24,8 +26,6 @@ import org.onosproject.net.flow.FlowRule; |
24 | import org.onosproject.net.flow.TrafficSelector; | 26 | import org.onosproject.net.flow.TrafficSelector; |
25 | import org.onosproject.net.flow.TrafficTreatment; | 27 | import org.onosproject.net.flow.TrafficTreatment; |
26 | 28 | ||
27 | -import com.fasterxml.jackson.databind.node.ObjectNode; | ||
28 | - | ||
29 | import static org.onlab.util.Tools.nullIsIllegal; | 29 | import static org.onlab.util.Tools.nullIsIllegal; |
30 | 30 | ||
31 | /** | 31 | /** |
... | @@ -36,6 +36,7 @@ public final class FlowRuleCodec extends JsonCodec<FlowRule> { | ... | @@ -36,6 +36,7 @@ public final class FlowRuleCodec extends JsonCodec<FlowRule> { |
36 | private static final String PRIORITY = "priority"; | 36 | private static final String PRIORITY = "priority"; |
37 | private static final String TIMEOUT = "timeout"; | 37 | private static final String TIMEOUT = "timeout"; |
38 | private static final String IS_PERMANENT = "isPermanent"; | 38 | private static final String IS_PERMANENT = "isPermanent"; |
39 | + private static final String TABLE_ID = "tableId"; | ||
39 | private static final String DEVICE_ID = "deviceId"; | 40 | private static final String DEVICE_ID = "deviceId"; |
40 | private static final String TREATMENT = "treatment"; | 41 | private static final String TREATMENT = "treatment"; |
41 | private static final String SELECTOR = "selector"; | 42 | private static final String SELECTOR = "selector"; |
... | @@ -71,6 +72,11 @@ public final class FlowRuleCodec extends JsonCodec<FlowRule> { | ... | @@ -71,6 +72,11 @@ public final class FlowRuleCodec extends JsonCodec<FlowRule> { |
71 | + " if the flow is temporary").asInt()); | 72 | + " if the flow is temporary").asInt()); |
72 | } | 73 | } |
73 | 74 | ||
75 | + JsonNode tableIdJson = json.get(TABLE_ID); | ||
76 | + if (tableIdJson != null) { | ||
77 | + resultBuilder.forTable(tableIdJson.asInt()); | ||
78 | + } | ||
79 | + | ||
74 | DeviceId deviceId = DeviceId.deviceId(nullIsIllegal(json.get(DEVICE_ID), | 80 | DeviceId deviceId = DeviceId.deviceId(nullIsIllegal(json.get(DEVICE_ID), |
75 | DEVICE_ID + MISSING_MEMBER_MESSAGE).asText()); | 81 | DEVICE_ID + MISSING_MEMBER_MESSAGE).asText()); |
76 | resultBuilder.forDevice(deviceId); | 82 | resultBuilder.forDevice(deviceId); | ... | ... |
... | @@ -15,20 +15,8 @@ | ... | @@ -15,20 +15,8 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.codec.impl; | 16 | package org.onosproject.codec.impl; |
17 | 17 | ||
18 | -import static org.easymock.EasyMock.createMock; | 18 | +import com.fasterxml.jackson.databind.JsonNode; |
19 | -import static org.easymock.EasyMock.expect; | 19 | +import com.fasterxml.jackson.databind.node.ObjectNode; |
20 | -import static org.easymock.EasyMock.replay; | ||
21 | -import static org.hamcrest.MatcherAssert.assertThat; | ||
22 | -import static org.hamcrest.Matchers.instanceOf; | ||
23 | -import static org.hamcrest.Matchers.is; | ||
24 | -import static org.hamcrest.Matchers.notNullValue; | ||
25 | -import static org.onosproject.net.NetTestTools.APP_ID; | ||
26 | - | ||
27 | -import java.io.IOException; | ||
28 | -import java.io.InputStream; | ||
29 | -import java.util.SortedMap; | ||
30 | -import java.util.TreeMap; | ||
31 | - | ||
32 | import org.junit.Before; | 20 | import org.junit.Before; |
33 | import org.junit.Test; | 21 | import org.junit.Test; |
34 | import org.onlab.packet.EthType; | 22 | import org.onlab.packet.EthType; |
... | @@ -83,8 +71,19 @@ import org.onosproject.net.flow.instructions.L2ModificationInstruction; | ... | @@ -83,8 +71,19 @@ import org.onosproject.net.flow.instructions.L2ModificationInstruction; |
83 | import org.onosproject.net.flow.instructions.L3ModificationInstruction; | 71 | import org.onosproject.net.flow.instructions.L3ModificationInstruction; |
84 | import org.onosproject.net.flow.instructions.L4ModificationInstruction; | 72 | import org.onosproject.net.flow.instructions.L4ModificationInstruction; |
85 | 73 | ||
86 | -import com.fasterxml.jackson.databind.JsonNode; | 74 | +import java.io.IOException; |
87 | -import com.fasterxml.jackson.databind.node.ObjectNode; | 75 | +import java.io.InputStream; |
76 | +import java.util.SortedMap; | ||
77 | +import java.util.TreeMap; | ||
78 | + | ||
79 | +import static org.easymock.EasyMock.createMock; | ||
80 | +import static org.easymock.EasyMock.expect; | ||
81 | +import static org.easymock.EasyMock.replay; | ||
82 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
83 | +import static org.hamcrest.Matchers.instanceOf; | ||
84 | +import static org.hamcrest.Matchers.is; | ||
85 | +import static org.hamcrest.Matchers.notNullValue; | ||
86 | +import static org.onosproject.net.NetTestTools.APP_ID; | ||
88 | 87 | ||
89 | /** | 88 | /** |
90 | * Flow rule codec unit tests. | 89 | * Flow rule codec unit tests. |
... | @@ -139,6 +138,7 @@ public class FlowRuleCodecTest { | ... | @@ -139,6 +138,7 @@ public class FlowRuleCodecTest { |
139 | assertThat(rule.isPermanent(), is(false)); | 138 | assertThat(rule.isPermanent(), is(false)); |
140 | assertThat(rule.timeout(), is(1)); | 139 | assertThat(rule.timeout(), is(1)); |
141 | assertThat(rule.priority(), is(1)); | 140 | assertThat(rule.priority(), is(1)); |
141 | + assertThat(rule.tableId(), is(1)); | ||
142 | assertThat(rule.deviceId().toString(), is("of:0000000000000001")); | 142 | assertThat(rule.deviceId().toString(), is("of:0000000000000001")); |
143 | } | 143 | } |
144 | 144 | ... | ... |
1 | { | 1 | { |
2 | - "priority":1, | 2 | + "priority": 1, |
3 | - "isPermanent":"false", | 3 | + "isPermanent": "false", |
4 | - "timeout":1, | 4 | + "timeout": 1, |
5 | - "deviceId":"of:0000000000000001", | 5 | + "deviceId": "of:0000000000000001", |
6 | - "treatment": | 6 | + "tableId": 1, |
7 | - {"instructions": | 7 | + "treatment": { |
8 | - [{"type":"OUTPUT","port":-3}],"deferred":[]}, | 8 | + "instructions": [ |
9 | - "selector": | 9 | + { |
10 | - {"criteria": | 10 | + "type": "OUTPUT", |
11 | - [{"type":"ETH_TYPE","ethType":2054}]} | 11 | + "port": -3 |
12 | + } | ||
13 | + ], | ||
14 | + "deferred": [] | ||
15 | + }, | ||
16 | + "selector": { | ||
17 | + "criteria": [ | ||
18 | + { | ||
19 | + "type": "ETH_TYPE", | ||
20 | + "ethType": 2054 | ||
21 | + } | ||
22 | + ] | ||
23 | + } | ||
12 | } | 24 | } | ... | ... |
-
Please register or login to post a comment