ONOS-6245:Intent_mini_summary
Change-Id: I35fe2b5b3f2a24680bbef93ee31e4655b972ff45
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java
index 409dcc3..675581d 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java
@@ -31,6 +31,7 @@
import org.onosproject.net.intent.IntentService;
import org.onosproject.net.intent.Key;
import org.onosproject.net.intent.util.IntentFilter;
+import org.onosproject.net.intent.util.IntentMiniSummary;
import org.onosproject.rest.AbstractWebResource;
import org.slf4j.Logger;
@@ -49,6 +50,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
+import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -97,6 +99,29 @@
return ok(root).build();
}
+
+ /**
+ * Gets Summary of all intents.
+ * Returns Summary of the intents in the system.
+ *
+ * @return 200 OK with Summary of all the intents in the system
+ * @onos.rsModel Minisummary
+ */
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("minisummary")
+ public Response getIntentSummary() {
+ final Iterable<Intent> intents = get(IntentService.class).getIntents();
+ ObjectNode root = mapper().createObjectNode();
+ IntentMiniSummary intentminisummary = new IntentMiniSummary();
+ Map<String, IntentMiniSummary> map = intentminisummary.summarize(intents, get(IntentService.class));
+ map.values().stream().forEach(intentsummary -> {
+ root.put(intentsummary.getIntentType(), codec(IntentMiniSummary.class).encode(intentsummary, this));
+ });
+ return ok(root).build();
+ }
+
+
/**
* Gets intent intallables by application ID and key.
* @param appId application identifier
diff --git a/web/api/src/main/resources/definitions/Minisummary.json b/web/api/src/main/resources/definitions/Minisummary.json
new file mode 100644
index 0000000..9bf1c33
--- /dev/null
+++ b/web/api/src/main/resources/definitions/Minisummary.json
@@ -0,0 +1,70 @@
+{
+ "type": "object",
+ "title":"All",
+ "required": [
+ "All"
+ ],
+ "properties": {
+ "All": {
+ "required": [
+ "total",
+ "installed",
+ "failed",
+ "installReq",
+ "installing",
+ "compiling",
+ "recompiling",
+ "withdrawReq",
+ "withdrawing",
+ "withdrawn",
+ "unknownState"
+ ],
+ "properties": {
+ "total": {
+ "type": "integer",
+ "example": 1
+ },
+ "installed": {
+ "type": "integer",
+ "example": 0
+ },
+ "failed": {
+ "type": "integer",
+ "example": 0
+ },
+ "installReq": {
+ "type": "integer",
+ "example": 0
+ },
+ "installing": {
+ "type": "integer",
+ "example": 0
+ },
+ "compiling": {
+ "type": "integer",
+ "example": 0
+ },
+ "recompiling": {
+ "type": "integer",
+ "example": 0
+ },
+ "withdrawReq": {
+ "type": "integer",
+ "example": 0
+ },
+ "withdrawing": {
+ "type": "integer",
+ "example": 0
+ },
+ "withdrawn": {
+ "type": "integer",
+ "example": 0
+ },
+ "unknownState": {
+ "type": "integer",
+ "example": 0
+ }
+ }
+ }
+ }
+}