use of org.opennms.features.status.api.node.strategy.Status in project opennms by OpenNMS.
the class DefaultGeolocationService method calculateStatus.
private Status calculateStatus(GeolocationQuery query, Set<Integer> nodeIds) {
final NodeStatusCalculatorConfig nodeStatusCalculatorConfig = new NodeStatusCalculatorConfig();
nodeStatusCalculatorConfig.setIncludeAcknowledgedAlarms(query.isIncludeAcknowledgedAlarms());
nodeStatusCalculatorConfig.setLocation(query.getLocation());
if (query.getSeverity() != null) {
final OnmsSeverity severity = OnmsSeverity.get(query.getSeverity().getId());
final List<OnmsSeverity> severityFilter = Arrays.stream(OnmsSeverity.values()).filter(s -> s.isGreaterThanOrEqual(severity)).collect(Collectors.toList());
nodeStatusCalculatorConfig.setSeverities(severityFilter);
}
nodeStatusCalculatorConfig.setCalculationStrategy(NodeStatusCalculationStrategy.None);
if (query.getStatusCalculationStrategy() != null) {
nodeStatusCalculatorConfig.setCalculationStrategy(NodeStatusCalculationStrategy.valueOf(query.getStatusCalculationStrategy().name()));
}
nodeStatusCalculatorConfig.setNodeIds(nodeIds);
final Status status = nodeStatusCalculator.calculateStatus(nodeStatusCalculatorConfig);
return status;
}
use of org.opennms.features.status.api.node.strategy.Status in project opennms by OpenNMS.
the class DefaultGeolocationService method applyStatus.
private void applyStatus(GeolocationQuery query, List<GeolocationInfo> locations) {
final Set<Integer> nodeIds = locations.stream().map(l -> l.getNodeInfo().getNodeId()).collect(Collectors.toSet());
if (!nodeIds.isEmpty()) {
final Status status = calculateStatus(query, nodeIds);
// Appliing the calculated status to each location
for (GeolocationInfo info : locations) {
OnmsSeverity severity = status.getSeverity(info.getNodeInfo().getNodeId());
// Therefore for all locations with no status must be set to "NORMAL" in the result
if (severity == null) {
severity = OnmsSeverity.NORMAL;
}
info.setSeverityInfo(new SeverityInfo(severity.getId(), severity.getLabel()));
info.setAlarmUnackedCount(status.getUnacknowledgedAlarmCount(info.getNodeInfo().getNodeId()));
}
}
}
use of org.opennms.features.status.api.node.strategy.Status in project opennms by OpenNMS.
the class NodeStatusService method getStatus.
public List<StatusEntity<OnmsNode>> getStatus(NodeQuery query) {
// Build query
final NodeStatusCalculatorConfig config = buildFrom(query);
// Calculate Status
final Status status = statusCalculator.calculateStatus(config);
// Find nodes for node id
final List<OnmsNode> nodes = getNodes(status.getIds());
final Map<Integer, OnmsNode> nodeIdMap = nodes.stream().collect(Collectors.toMap(n -> n.getId(), n -> n));
// convert to wrapper
return status.getIds().stream().map(nodeId -> {
OnmsSeverity nodeStatus = status.getSeverity(nodeId);
OnmsNode node = nodeIdMap.get(nodeId);
if (nodeStatus == null) {
throw new IllegalStateException("nodeStatus should not be null");
}
if (node == null) {
throw new IllegalStateException("node should not be null");
}
return new StatusEntityWrapper<>(node, nodeStatus);
}).collect(Collectors.toList());
}
use of org.opennms.features.status.api.node.strategy.Status in project opennms by OpenNMS.
the class AlarmQuery method status.
@Override
public Status status() {
sql = new StringBuilder();
sql.append("SELECT ").append(getViewName()).append(".nodeid").append(", ").append(getSeverityColumn()).append(" AS severity, alarm_count, alarm_count_unack ");
sql.append("FROM ").append(getViewName()).append(" ");
sql.append("JOIN node on ").append(getViewName()).append(".nodeid = node.nodeid ");
applyRestrictions();
applyOrder();
applyLimitAndOffset();
final Status status = new Status();
executeQuery((RowHandler<Object[]>) columns -> status.add((int) columns[0], OnmsSeverity.get((int) columns[1]), columns[2] != null ? ((BigInteger) columns[2]).longValue() : 0, columns[3] != null ? ((BigInteger) columns[3]).longValue() : 0));
return status;
}
use of org.opennms.features.status.api.node.strategy.Status in project opennms by OpenNMS.
the class OutageQuery method status.
@Override
public Status status() {
sql = new StringBuilder();
sql.append("SELECT ").append(getViewName()).append(".nodeid").append(", ").append(getSeverityColumn()).append(" AS severity ");
sql.append("FROM ").append(getViewName()).append(" ");
sql.append("JOIN node on ").append(getViewName()).append(".nodeid = node.nodeid ");
applyRestrictions();
applyOrder();
applyLimitAndOffset();
final Status status = new Status();
executeQuery((RowHandler<Object[]>) columns -> status.add((int) columns[0], OnmsSeverity.get((int) columns[1])));
return status;
}
Aggregations