Search in sources :

Example 1 with STATUS_UNKNOWN

use of de.codecentric.boot.admin.server.domain.values.StatusInfo.STATUS_UNKNOWN in project spring-boot-admin by codecentric.

the class ApplicationRegistry method getStatus.

protected Tuple2<String, Instant> getStatus(List<Instance> instances) {
    // TODO: Correct is just a second readmodel for groups
    Map<String, Instant> statusWithTime = instances.stream().collect(toMap((instance) -> instance.getStatusInfo().getStatus(), Instance::getStatusTimestamp, this::getMax));
    if (statusWithTime.size() == 1) {
        Map.Entry<String, Instant> e = statusWithTime.entrySet().iterator().next();
        return Tuples.of(e.getKey(), e.getValue());
    }
    if (statusWithTime.containsKey(StatusInfo.STATUS_UP)) {
        Instant oldestNonUp = statusWithTime.entrySet().stream().filter((e) -> !StatusInfo.STATUS_UP.equals(e.getKey())).map(Map.Entry::getValue).min(naturalOrder()).orElse(Instant.EPOCH);
        Instant latest = getMax(oldestNonUp, statusWithTime.getOrDefault(StatusInfo.STATUS_UP, Instant.EPOCH));
        return Tuples.of(StatusInfo.STATUS_RESTRICTED, latest);
    }
    return statusWithTime.entrySet().stream().min(Map.Entry.comparingByKey(StatusInfo.severity())).map((e) -> Tuples.of(e.getKey(), e.getValue())).orElse(Tuples.of(STATUS_UNKNOWN, Instant.EPOCH));
}
Also used : Comparator.naturalOrder(java.util.Comparator.naturalOrder) Application(de.codecentric.boot.admin.server.domain.entities.Application) InstanceId(de.codecentric.boot.admin.server.domain.values.InstanceId) Tuples(reactor.util.function.Tuples) Tuple2(reactor.util.function.Tuple2) Mono(reactor.core.publisher.Mono) Instant(java.time.Instant) Objects(java.util.Objects) Instance(de.codecentric.boot.admin.server.domain.entities.Instance) Flux(reactor.core.publisher.Flux) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) InstanceEventPublisher(de.codecentric.boot.admin.server.eventstore.InstanceEventPublisher) BuildVersion(de.codecentric.boot.admin.server.domain.values.BuildVersion) Collectors.toMap(java.util.stream.Collectors.toMap) Map(java.util.Map) StatusInfo(de.codecentric.boot.admin.server.domain.values.StatusInfo) STATUS_UNKNOWN(de.codecentric.boot.admin.server.domain.values.StatusInfo.STATUS_UNKNOWN) Nullable(javax.annotation.Nullable) Instant(java.time.Instant) Collectors.toMap(java.util.stream.Collectors.toMap) Map(java.util.Map)

Aggregations

Application (de.codecentric.boot.admin.server.domain.entities.Application)1 Instance (de.codecentric.boot.admin.server.domain.entities.Instance)1 BuildVersion (de.codecentric.boot.admin.server.domain.values.BuildVersion)1 InstanceId (de.codecentric.boot.admin.server.domain.values.InstanceId)1 StatusInfo (de.codecentric.boot.admin.server.domain.values.StatusInfo)1 STATUS_UNKNOWN (de.codecentric.boot.admin.server.domain.values.StatusInfo.STATUS_UNKNOWN)1 InstanceEventPublisher (de.codecentric.boot.admin.server.eventstore.InstanceEventPublisher)1 Instant (java.time.Instant)1 Comparator.naturalOrder (java.util.Comparator.naturalOrder)1 List (java.util.List)1 Map (java.util.Map)1 Objects (java.util.Objects)1 Collectors.toList (java.util.stream.Collectors.toList)1 Collectors.toMap (java.util.stream.Collectors.toMap)1 Nullable (javax.annotation.Nullable)1 Flux (reactor.core.publisher.Flux)1 Mono (reactor.core.publisher.Mono)1 Tuple2 (reactor.util.function.Tuple2)1 Tuples (reactor.util.function.Tuples)1