aboutsummaryrefslogtreecommitdiffstats
path: root/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerContext.java
blob: d1aadf9d21718527804eddfe7960f048de7dd765 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;

import java.util.function.Supplier;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Context for FleetController and all instances 1:1 with the FleetController.
 *
 * @author hakon
 */
public interface FleetControllerContext {
    FleetControllerId id();

    default void log(Logger logger, Level level, String message) { log(logger, level, () -> message); }
    void log(Logger logger, Level level, String message, Throwable t);
    void log(Logger logger, Level level, Supplier<String> message);

    default void log(Logger logger, Level level, String format, Object first, Object... rest) {
        log(logger, level, () -> {
            var args = new Object[1 + rest.length];
            args[0] = first;
            System.arraycopy(rest, 0, args, 1, rest.length);
            return String.format(format, args);
        });
    }
}