
org.kiwiproject.consul.model.agent.Registration Maven / Gradle / Ivy
package org.kiwiproject.consul.model.agent;
import static com.google.common.base.Preconditions.checkState;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.immutables.value.Value;
import org.kiwiproject.consul.model.catalog.ServiceWeights;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@Value.Immutable
@Value.Style(jakarta = true)
@JsonSerialize(as = ImmutableRegistration.class)
@JsonDeserialize(as = ImmutableRegistration.class)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public abstract class Registration {
@JsonProperty("Name")
public abstract String getName();
@JsonProperty("Id")
public abstract String getId();
@JsonProperty("Address")
public abstract Optional getAddress();
@JsonProperty("Port")
public abstract Optional getPort();
@JsonProperty("Check")
public abstract Optional getCheck();
@JsonProperty("Checks")
public abstract List getChecks();
@JsonProperty("Tags")
public abstract List getTags();
@JsonProperty("Meta")
public abstract Map getMeta();
@JsonProperty("EnableTagOverride")
public abstract Optional getEnableTagOverride();
@JsonProperty("Weights")
public abstract Optional getServiceWeights();
@Value.Immutable
@JsonSerialize(as = ImmutableRegCheck.class)
@JsonDeserialize(as = ImmutableRegCheck.class)
@JsonInclude(JsonInclude.Include.NON_NULL)
public abstract static class RegCheck {
@JsonProperty("CheckID")
public abstract Optional getId();
@JsonProperty("Name")
public abstract Optional getName();
@JsonProperty("Args")
public abstract Optional> getArgs();
@JsonProperty("Interval")
public abstract Optional getInterval();
@JsonProperty("TTL")
public abstract Optional getTtl();
@JsonProperty("HTTP")
public abstract Optional getHttp();
@JsonProperty("TCP")
public abstract Optional getTcp();
@JsonProperty("GRPC")
public abstract Optional getGrpc();
@JsonProperty("GRPCUseTLS")
public abstract Optional getGrpcUseTls();
@JsonProperty("Timeout")
public abstract Optional getTimeout();
@JsonProperty("Notes")
public abstract Optional getNotes();
@JsonProperty("DeregisterCriticalServiceAfter")
public abstract Optional getDeregisterCriticalServiceAfter();
@JsonProperty("TLSSkipVerify")
public abstract Optional getTlsSkipVerify();
@JsonProperty("Status")
public abstract Optional getStatus();
@JsonProperty("SuccessBeforePassing")
public abstract Optional getSuccessBeforePassing();
@JsonProperty("FailuresBeforeCritical")
public abstract Optional getFailuresBeforeCritical();
public static RegCheck ttl(long ttl) {
return ImmutableRegCheck
.builder()
.ttl(String.format("%ss", ttl))
.build();
}
public static RegCheck args(List args, long interval) {
return ImmutableRegCheck
.builder()
.args(args)
.interval(String.format("%ss", interval))
.build();
}
public static RegCheck args(List args, long interval, long timeout) {
return ImmutableRegCheck
.builder()
.args(args)
.interval(String.format("%ss", interval))
.timeout(String.format("%ss", timeout))
.build();
}
public static RegCheck args(List args, long interval, long timeout, String notes) {
return ImmutableRegCheck
.builder()
.args(args)
.interval(String.format("%ss", interval))
.timeout(String.format("%ss", timeout))
.notes(notes)
.build();
}
public static RegCheck http(String http, long interval) {
return ImmutableRegCheck
.builder()
.http(http)
.interval(String.format("%ss", interval))
.build();
}
public static RegCheck http(String http, long interval, long timeout) {
return ImmutableRegCheck
.builder()
.http(http)
.interval(String.format("%ss", interval))
.timeout(String.format("%ss", timeout))
.build();
}
public static RegCheck http(String http, long interval, long timeout, String notes) {
return ImmutableRegCheck
.builder()
.http(http)
.interval(String.format("%ss", interval))
.timeout(String.format("%ss", timeout))
.notes(notes)
.build();
}
public static RegCheck tcp(String tcp, long interval) {
return ImmutableRegCheck
.builder()
.tcp(tcp)
.interval(String.format("%ss", interval))
.build();
}
public static RegCheck tcp(String tcp, long interval, long timeout) {
return ImmutableRegCheck
.builder()
.tcp(tcp)
.interval(String.format("%ss", interval))
.timeout(String.format("%ss", timeout))
.build();
}
public static RegCheck tcp(String tcp, long interval, long timeout, String notes) {
return ImmutableRegCheck
.builder()
.tcp(tcp)
.interval(String.format("%ss", interval))
.timeout(String.format("%ss", timeout))
.notes(notes)
.build();
}
public static RegCheck grpc(String grpc, long interval) {
return RegCheck.grpc(grpc, interval, false);
}
public static RegCheck grpc(String grpc, long interval, boolean useTls) {
return ImmutableRegCheck
.builder()
.grpc(grpc)
.grpcUseTls(useTls)
.interval(String.format("%ss", interval))
.build();
}
@Value.Check
protected void validate() {
checkState(getHttp().isPresent() || getTtl().isPresent()
|| getArgs().isPresent() || getTcp().isPresent() || getGrpc().isPresent(),
"Check must specify either http, tcp, ttl, grpc or args");
if (getHttp().isPresent() || getArgs().isPresent() || getTcp().isPresent() || getGrpc().isPresent()) {
checkState(getInterval().isPresent(),
"Interval must be set if check type is http, tcp, grpc or args");
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy