Ray Milkey

Add intent state to JSON output

Change-Id: I3a5995e0dfdc83e1253b8e414e825b796a57264c
...@@ -54,7 +54,7 @@ public class IntentServiceAdapter implements IntentService { ...@@ -54,7 +54,7 @@ public class IntentServiceAdapter implements IntentService {
54 54
55 @Override 55 @Override
56 public IntentState getIntentState(Key intentKey) { 56 public IntentState getIntentState(Key intentKey) {
57 - return null; 57 + return IntentState.INSTALLED;
58 } 58 }
59 59
60 @Override 60 @Override
......
...@@ -19,6 +19,8 @@ import org.onosproject.codec.CodecContext; ...@@ -19,6 +19,8 @@ import org.onosproject.codec.CodecContext;
19 import org.onosproject.codec.JsonCodec; 19 import org.onosproject.codec.JsonCodec;
20 import org.onosproject.net.NetworkResource; 20 import org.onosproject.net.NetworkResource;
21 import org.onosproject.net.intent.Intent; 21 import org.onosproject.net.intent.Intent;
22 +import org.onosproject.net.intent.IntentService;
23 +import org.onosproject.net.intent.IntentState;
22 24
23 import com.fasterxml.jackson.databind.node.ArrayNode; 25 import com.fasterxml.jackson.databind.node.ArrayNode;
24 import com.fasterxml.jackson.databind.node.ObjectNode; 26 import com.fasterxml.jackson.databind.node.ObjectNode;
...@@ -44,6 +46,11 @@ public final class IntentCodec extends JsonCodec<Intent> { ...@@ -44,6 +46,11 @@ public final class IntentCodec extends JsonCodec<Intent> {
44 for (final NetworkResource resource : intent.resources()) { 46 for (final NetworkResource resource : intent.resources()) {
45 jsonResources.add(resource.toString()); 47 jsonResources.add(resource.toString());
46 } 48 }
49 +
50 + IntentService service = context.getService(IntentService.class);
51 + IntentState state = service.getIntentState(intent.key());
52 + result.put("state", state.toString());
53 +
47 return result; 54 return result;
48 } 55 }
49 } 56 }
......
...@@ -18,12 +18,12 @@ package org.onosproject.codec.impl; ...@@ -18,12 +18,12 @@ package org.onosproject.codec.impl;
18 import java.time.Duration; 18 import java.time.Duration;
19 import java.util.List; 19 import java.util.List;
20 20
21 +import org.junit.Before;
21 import org.junit.Test; 22 import org.junit.Test;
22 import org.onlab.packet.IpPrefix; 23 import org.onlab.packet.IpPrefix;
23 import org.onlab.packet.MacAddress; 24 import org.onlab.packet.MacAddress;
24 import org.onlab.packet.MplsLabel; 25 import org.onlab.packet.MplsLabel;
25 import org.onlab.util.Bandwidth; 26 import org.onlab.util.Bandwidth;
26 -import org.onosproject.codec.CodecContext;
27 import org.onosproject.codec.JsonCodec; 27 import org.onosproject.codec.JsonCodec;
28 import org.onosproject.core.ApplicationId; 28 import org.onosproject.core.ApplicationId;
29 import org.onosproject.core.DefaultApplicationId; 29 import org.onosproject.core.DefaultApplicationId;
...@@ -39,6 +39,8 @@ import org.onosproject.net.flow.TrafficTreatment; ...@@ -39,6 +39,8 @@ import org.onosproject.net.flow.TrafficTreatment;
39 import org.onosproject.net.intent.AbstractIntentTest; 39 import org.onosproject.net.intent.AbstractIntentTest;
40 import org.onosproject.net.intent.Constraint; 40 import org.onosproject.net.intent.Constraint;
41 import org.onosproject.net.intent.HostToHostIntent; 41 import org.onosproject.net.intent.HostToHostIntent;
42 +import org.onosproject.net.intent.IntentService;
43 +import org.onosproject.net.intent.IntentServiceAdapter;
42 import org.onosproject.net.intent.PointToPointIntent; 44 import org.onosproject.net.intent.PointToPointIntent;
43 import org.onosproject.net.intent.constraint.AnnotationConstraint; 45 import org.onosproject.net.intent.constraint.AnnotationConstraint;
44 import org.onosproject.net.intent.constraint.AsymmetricPathConstraint; 46 import org.onosproject.net.intent.constraint.AsymmetricPathConstraint;
...@@ -71,7 +73,13 @@ public class IntentCodecTest extends AbstractIntentTest { ...@@ -71,7 +73,13 @@ public class IntentCodecTest extends AbstractIntentTest {
71 DefaultTrafficSelector.emptySelector(); 73 DefaultTrafficSelector.emptySelector();
72 final TrafficTreatment emptyTreatment = 74 final TrafficTreatment emptyTreatment =
73 DefaultTrafficTreatment.emptyTreatment(); 75 DefaultTrafficTreatment.emptyTreatment();
74 - private final CodecContext context = new MockCodecContext(); 76 + private final MockCodecContext context = new MockCodecContext();
77 +
78 + @Before
79 + public void setUpIntentService() {
80 + final IntentService mockIntentService = new IntentServiceAdapter();
81 + context.registerService(IntentService.class, mockIntentService);
82 + }
75 83
76 /** 84 /**
77 * Tests the encoding of a host to host intent. 85 * Tests the encoding of a host to host intent.
...@@ -109,7 +117,6 @@ public class IntentCodecTest extends AbstractIntentTest { ...@@ -109,7 +117,6 @@ public class IntentCodecTest extends AbstractIntentTest {
109 .ingressPoint(ingress) 117 .ingressPoint(ingress)
110 .egressPoint(egress).build(); 118 .egressPoint(egress).build();
111 119
112 - final CodecContext context = new MockCodecContext();
113 final JsonCodec<PointToPointIntent> intentCodec = 120 final JsonCodec<PointToPointIntent> intentCodec =
114 context.codec(PointToPointIntent.class); 121 context.codec(PointToPointIntent.class);
115 assertThat(intentCodec, notNullValue()); 122 assertThat(intentCodec, notNullValue());
...@@ -165,7 +172,6 @@ public class IntentCodecTest extends AbstractIntentTest { ...@@ -165,7 +172,6 @@ public class IntentCodecTest extends AbstractIntentTest {
165 .build(); 172 .build();
166 173
167 174
168 - final CodecContext context = new MockCodecContext();
169 final JsonCodec<PointToPointIntent> intentCodec = 175 final JsonCodec<PointToPointIntent> intentCodec =
170 context.codec(PointToPointIntent.class); 176 context.codec(PointToPointIntent.class);
171 assertThat(intentCodec, notNullValue()); 177 assertThat(intentCodec, notNullValue());
......
...@@ -35,6 +35,7 @@ import org.onosproject.core.IdGenerator; ...@@ -35,6 +35,7 @@ import org.onosproject.core.IdGenerator;
35 import org.onosproject.net.NetworkResource; 35 import org.onosproject.net.NetworkResource;
36 import org.onosproject.net.intent.Intent; 36 import org.onosproject.net.intent.Intent;
37 import org.onosproject.net.intent.IntentService; 37 import org.onosproject.net.intent.IntentService;
38 +import org.onosproject.net.intent.IntentState;
38 import org.onosproject.net.intent.Key; 39 import org.onosproject.net.intent.Key;
39 import org.onosproject.net.intent.MockIdGenerator; 40 import org.onosproject.net.intent.MockIdGenerator;
40 41
...@@ -44,6 +45,7 @@ import com.eclipsesource.json.JsonValue; ...@@ -44,6 +45,7 @@ import com.eclipsesource.json.JsonValue;
44 import com.sun.jersey.api.client.UniformInterfaceException; 45 import com.sun.jersey.api.client.UniformInterfaceException;
45 import com.sun.jersey.api.client.WebResource; 46 import com.sun.jersey.api.client.WebResource;
46 47
48 +import static org.easymock.EasyMock.anyObject;
47 import static org.easymock.EasyMock.createMock; 49 import static org.easymock.EasyMock.createMock;
48 import static org.easymock.EasyMock.expect; 50 import static org.easymock.EasyMock.expect;
49 import static org.easymock.EasyMock.replay; 51 import static org.easymock.EasyMock.replay;
...@@ -121,6 +123,13 @@ public class IntentsResourceTest extends ResourceTest { ...@@ -121,6 +123,13 @@ public class IntentsResourceTest extends ResourceTest {
121 return false; 123 return false;
122 } 124 }
123 125
126 + // check state field
127 + final String jsonState = jsonIntent.get("state").asString();
128 + if (!jsonState.equals("INSTALLED")) {
129 + reason = "state INSTALLED";
130 + return false;
131 + }
132 +
124 // check resources array 133 // check resources array
125 final JsonArray jsonResources = jsonIntent.get("resources").asArray(); 134 final JsonArray jsonResources = jsonIntent.get("resources").asArray();
126 if (intent.resources() != null) { 135 if (intent.resources() != null) {
...@@ -180,7 +189,7 @@ public class IntentsResourceTest extends ResourceTest { ...@@ -180,7 +189,7 @@ public class IntentsResourceTest extends ResourceTest {
180 @Override 189 @Override
181 public boolean matchesSafely(JsonArray json) { 190 public boolean matchesSafely(JsonArray json) {
182 boolean intentFound = false; 191 boolean intentFound = false;
183 - final int expectedAttributes = 5; 192 + final int expectedAttributes = 6;
184 for (int jsonIntentIndex = 0; jsonIntentIndex < json.size(); 193 for (int jsonIntentIndex = 0; jsonIntentIndex < json.size();
185 jsonIntentIndex++) { 194 jsonIntentIndex++) {
186 195
...@@ -229,6 +238,9 @@ public class IntentsResourceTest extends ResourceTest { ...@@ -229,6 +238,9 @@ public class IntentsResourceTest extends ResourceTest {
229 @Before 238 @Before
230 public void setUpTest() { 239 public void setUpTest() {
231 expect(mockIntentService.getIntents()).andReturn(intents).anyTimes(); 240 expect(mockIntentService.getIntents()).andReturn(intents).anyTimes();
241 + expect(mockIntentService.getIntentState(anyObject()))
242 + .andReturn(IntentState.INSTALLED)
243 + .anyTimes();
232 // Register the services needed for the test 244 // Register the services needed for the test
233 final CodecManager codecService = new CodecManager(); 245 final CodecManager codecService = new CodecManager();
234 codecService.activate(); 246 codecService.activate();
......