ONOS-6654_Master - groups CLI command enhancement
Change-Id: I39d82a4ea9649b89cf39a2f6523fd9fbbb922bf5
diff --git a/cli/src/main/java/org/onosproject/cli/net/GroupsListCommand.java b/cli/src/main/java/org/onosproject/cli/net/GroupsListCommand.java
index be50a39..567880d 100644
--- a/cli/src/main/java/org/onosproject/cli/net/GroupsListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/GroupsListCommand.java
@@ -15,27 +15,28 @@
*/
package org.onosproject.cli.net;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Option;
import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.utils.Comparators;
import org.onosproject.net.Device;
import org.onosproject.net.DeviceId;
import org.onosproject.net.device.DeviceService;
import org.onosproject.net.group.Group;
import org.onosproject.net.group.Group.GroupState;
import org.onosproject.net.group.GroupBucket;
+import org.onosproject.net.group.GroupDescription;
import org.onosproject.net.group.GroupService;
+import org.onosproject.utils.Comparators;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.stream.Collectors;
import static com.google.common.collect.Lists.newArrayList;
@@ -49,7 +50,7 @@
public static final String ANY = "any";
private static final String FORMAT =
- " id=0x%s, state=%s, type=%s, bytes=%s, packets=%s, appId=%s";
+ " id=0x%s, state=%s, type=%s, bytes=%s, packets=%s, appId=%s, referenceCount=%s";
private static final String BUCKET_FORMAT =
" id=0x%s, bucket=%s, bytes=%s, packets=%s, actions=%s";
@@ -66,6 +67,12 @@
required = false, multiValued = false)
private boolean countOnly = false;
+ @Option(name = "-t", aliases = "--type",
+ description = "Print groups with specified type",
+ required = false, multiValued = false)
+ private String type = null;
+
+
private JsonNode json(Map<Device, List<Group>> sortedGroups) {
ArrayNode result = mapper().createArrayNode();
@@ -82,14 +89,12 @@
GroupService groupService = get(GroupService.class);
SortedMap<Device, List<Group>> sortedGroups =
getSortedGroups(deviceService, groupService);
-
if (outputJson()) {
print("%s", json(sortedGroups));
} else {
sortedGroups.forEach((device, groups) -> printGroups(device.id(), groups));
}
}
-
/**
* Returns the list of devices sorted using the device ID URIs.
*
@@ -128,6 +133,13 @@
groups.sort(Comparators.GROUP_COMPARATOR);
sortedGroups.put(d, groups);
}
+ if (type != null) {
+ for (Device device : sortedGroups.keySet()) {
+ sortedGroups.put(device, sortedGroups.get(device).stream()
+ .filter(group -> GroupDescription.Type.valueOf(type.toUpperCase()).equals(group.type()))
+ .collect(Collectors.toList()));
+ }
+ }
return sortedGroups;
}
@@ -140,7 +152,7 @@
for (Group group : groups) {
print(FORMAT, Integer.toHexString(group.id().id()), group.state(), group.type(),
- group.bytes(), group.packets(), group.appId().name());
+ group.bytes(), group.packets(), group.appId().name(), group.referenceCount());
int i = 0;
for (GroupBucket bucket:group.buckets().buckets()) {
print(BUCKET_FORMAT, Integer.toHexString(group.id().id()), ++i,