ONOS-5894 FaultManagement minor refactoring and optimizing CLI commands
Change-Id: I84fca00caaa191b511a642962caeed61a7decbd8
diff --git a/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarmsCounts.java b/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarmsCounts.java
index 9f689e4..a5413dc 100644
--- a/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarmsCounts.java
+++ b/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarmsCounts.java
@@ -15,30 +15,59 @@
*/
package org.onosproject.faultmanagement.alarms.cli;
-import java.util.Map;
+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.incubator.net.faultmanagement.alarm.Alarm;
import org.onosproject.incubator.net.faultmanagement.alarm.AlarmService;
+import org.onosproject.net.DeviceId;
+
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* Lists alarm counts across all devices.
*/
-@Command(scope = "onos", name = "alarm-counts",
- description = "Lists alarm counts across all devices.")
+@Command(scope = "onos", name = "alarms-counts",
+ description = "Lists the count of alarms for each severity")
public class GetAllAlarmsCounts extends AbstractShellCommand {
+ @Option(name = "-a", aliases = "--active", description = "Shows ACTIVE alarms only",
+ required = false, multiValued = false)
+ private boolean activeOnly = false;
+
+ @Argument(index = 0, name = "deviceId", description = "Device identity",
+ required = false, multiValued = false)
+ String deviceId = null;
+
+ private AlarmService alarmService = AbstractShellCommand.get(AlarmService.class);
+ private Map<Alarm.SeverityLevel, Long> alarmCounts;
+
@Override
protected void execute() {
- Map<Alarm.SeverityLevel, Long> alarmCounts
- = AbstractShellCommand.get(AlarmService.class).getAlarmCounts();
+ if (deviceId != null) {
+ if (activeOnly) {
+ alarmCounts = alarmService.getActiveAlarms(DeviceId.deviceId(deviceId))
+ .stream().filter(a -> !a.severity().equals(Alarm.SeverityLevel.CLEARED))
+ .collect(Collectors.groupingBy(Alarm::severity, Collectors.counting()));
+ } else {
+ alarmCounts = alarmService.
+ getAlarmCounts(DeviceId.deviceId(deviceId));
+ }
+ } else if (activeOnly) {
+ alarmCounts = alarmService.getActiveAlarms()
+ .stream().filter(a -> !a.severity().equals(Alarm.SeverityLevel.CLEARED))
+ .collect(Collectors.groupingBy(Alarm::severity, Collectors.counting()));
+ } else {
+ alarmCounts = alarmService.getAlarmCounts();
+ }
printCounts(alarmCounts);
}
void printCounts(Map<Alarm.SeverityLevel, Long> alarmCounts) {
alarmCounts.entrySet().forEach((countEntry) -> {
- print(String.format("%s, %d",
- countEntry.getKey(), countEntry.getValue()));
+ print(String.format("%s, %d", countEntry.getKey(), countEntry.getValue()));
});
}