Search in sources :

Example 1 with HttpHealthCheck

use of com.spotify.helios.common.descriptors.HttpHealthCheck in project helios by spotify.

the class JobValidator method validateJobHealthCheck.

/**
 * Validate the Job's health check.
 *
 * @param job The Job to check.
 *
 * @return A set of error Strings
 */
private Set<String> validateJobHealthCheck(final Job job) {
    final HealthCheck healthCheck = job.getHealthCheck();
    if (healthCheck == null) {
        return emptySet();
    }
    final Set<String> errors = Sets.newHashSet();
    if (healthCheck instanceof ExecHealthCheck) {
        final List<String> command = ((ExecHealthCheck) healthCheck).getCommand();
        if (command == null || command.isEmpty()) {
            errors.add("A command must be defined for `docker exec`-based health checks.");
        }
    } else if (healthCheck instanceof HttpHealthCheck || healthCheck instanceof TcpHealthCheck) {
        final String port;
        if (healthCheck instanceof HttpHealthCheck) {
            port = ((HttpHealthCheck) healthCheck).getPort();
        } else {
            port = ((TcpHealthCheck) healthCheck).getPort();
        }
        final Map<String, PortMapping> ports = job.getPorts();
        if (isNullOrEmpty(port)) {
            errors.add("A port must be defined for HTTP and TCP health checks.");
        } else if (!ports.containsKey(port)) {
            errors.add(format("Health check port '%s' not defined in the job. Known ports are '%s'", port, Joiner.on(", ").join(ports.keySet())));
        }
    }
    return errors;
}
Also used : HttpHealthCheck(com.spotify.helios.common.descriptors.HttpHealthCheck) TcpHealthCheck(com.spotify.helios.common.descriptors.TcpHealthCheck) HttpHealthCheck(com.spotify.helios.common.descriptors.HttpHealthCheck) ExecHealthCheck(com.spotify.helios.common.descriptors.ExecHealthCheck) TcpHealthCheck(com.spotify.helios.common.descriptors.TcpHealthCheck) HealthCheck(com.spotify.helios.common.descriptors.HealthCheck) ExecHealthCheck(com.spotify.helios.common.descriptors.ExecHealthCheck) Map(java.util.Map)

Example 2 with HttpHealthCheck

use of com.spotify.helios.common.descriptors.HttpHealthCheck in project helios by spotify.

the class JobInspectCommand method formatHealthCheck.

private static String formatHealthCheck(final HealthCheck healthCheck) {
    if (healthCheck == null) {
        return "";
    }
    String str = String.format("type: %s", String.valueOf(healthCheck.getType()));
    if (healthCheck instanceof HttpHealthCheck) {
        final HttpHealthCheck httpHealthCheck = (HttpHealthCheck) healthCheck;
        str += String.format(", port: %s, path: %s", httpHealthCheck.getPort(), httpHealthCheck.getPath());
    } else if (healthCheck instanceof TcpHealthCheck) {
        final TcpHealthCheck tcpHealthCheck = (TcpHealthCheck) healthCheck;
        str += String.format(", port: %s", tcpHealthCheck.getPort());
    } else if (healthCheck instanceof ExecHealthCheck) {
        final ExecHealthCheck execHealthCheck = (ExecHealthCheck) healthCheck;
        str += String.format(", command: %s", Joiner.on(" ").join(execHealthCheck.getCommand()));
    }
    return str;
}
Also used : HttpHealthCheck(com.spotify.helios.common.descriptors.HttpHealthCheck) TcpHealthCheck(com.spotify.helios.common.descriptors.TcpHealthCheck) ExecHealthCheck(com.spotify.helios.common.descriptors.ExecHealthCheck)

Aggregations

ExecHealthCheck (com.spotify.helios.common.descriptors.ExecHealthCheck)2 HttpHealthCheck (com.spotify.helios.common.descriptors.HttpHealthCheck)2 TcpHealthCheck (com.spotify.helios.common.descriptors.TcpHealthCheck)2 HealthCheck (com.spotify.helios.common.descriptors.HealthCheck)1 Map (java.util.Map)1