package com.hubspot.baragon.service.config;
import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotEmpty;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Optional;
import com.hubspot.baragon.config.AuthConfiguration;
import com.hubspot.baragon.config.GraphiteConfiguration;
import com.hubspot.baragon.config.HttpClientConfiguration;
import com.hubspot.baragon.config.ZooKeeperConfiguration;
import io.dropwizard.Configuration;
@JsonIgnoreProperties(ignoreUnknown = true)
public class BaragonConfiguration extends Configuration {
public static final String DEFAULT_AGENT_REQUEST_URI_FORMAT = "%s/request/%s";
public static final String DEFAULT_AGENT_BATCH_REQUEST_URI_FORMAT = "%s/batch";
@JsonProperty("zookeeper")
@NotNull
@Valid
private ZooKeeperConfiguration zooKeeperConfiguration;
@JsonProperty("httpClient")
@NotNull
@Valid
private HttpClientConfiguration httpClientConfiguration = new HttpClientConfiguration();
@JsonProperty("workerIntervalMs")
@Deprecated
private Long workerIntervalMs = null;
@JsonProperty("worker")
@NotNull
@Valid
private BaragonWorkerConfiguration workerConfiguration = new BaragonWorkerConfiguration();
@JsonProperty("agentRequestUriFormat")
@NotEmpty
private String agentRequestUriFormat = DEFAULT_AGENT_REQUEST_URI_FORMAT;
@JsonProperty("agentBatchRequestUriFormat")
@NotEmpty
private String agentBatchRequestUriFormat = DEFAULT_AGENT_BATCH_REQUEST_URI_FORMAT;
@JsonProperty("agentMaxAttempts")
@Min(1)
private int agentMaxAttempts = 5;
@JsonProperty("agentRequestTimeoutMs")
@Min(10000)
private long agentRequestTimeoutMs = 60000;
@JsonProperty("auth")
@NotNull
@Valid
private AuthConfiguration authConfiguration = new AuthConfiguration();
@JsonProperty("hostname")
private String hostname;
@JsonProperty("masterAuthKey")
private String masterAuthKey;
@JsonProperty("elb")
private Optional<ElbConfiguration> elb = Optional.absent();
@JsonProperty("ui")
@Valid
private UIConfiguration uiConfiguration = new UIConfiguration();
@JsonProperty("enableCorsFilter")
private boolean enableCorsFilter = false;
@JsonProperty("history")
private HistoryConfiguration historyConfiguration = new HistoryConfiguration();
@JsonProperty("enforceTargetAgentCount")
private boolean enforceTargetAgentCount = false;
@JsonProperty("defaultTargetAgentCount")
private int defaultTargetAgentCount = 1;
@JsonProperty("graphite")
private GraphiteConfiguration graphiteConfiguration = new GraphiteConfiguration();
@JsonProperty("sentry")
private Optional<SentryConfiguration> sentryConfiguration = Optional.absent();
public ZooKeeperConfiguration getZooKeeperConfiguration() {
return zooKeeperConfiguration;
}
public HttpClientConfiguration getHttpClientConfiguration() {
return httpClientConfiguration;
}
public void setHttpClientConfiguration(HttpClientConfiguration httpClientConfiguration) {
this.httpClientConfiguration = httpClientConfiguration;
}
public void setZooKeeperConfiguration(ZooKeeperConfiguration zooKeeperConfiguration) {
this.zooKeeperConfiguration = zooKeeperConfiguration;
}
public String getAgentRequestUriFormat() {
return agentRequestUriFormat;
}
public void setAgentBatchRequestUriFormat(String agentBatchRequestUriFormat) {
this.agentBatchRequestUriFormat = agentBatchRequestUriFormat;
}
public String getAgentBatchRequestUriFormat() {
return agentBatchRequestUriFormat;
}
public void setAgentRequestUriFormat(String agentRequestUriFormat) {
this.agentRequestUriFormat = agentRequestUriFormat;
}
public Optional<Long> getWorkerIntervalMs() {
return Optional.fromNullable(workerIntervalMs);
}
public void setWorkerIntervalMs(Long workerIntervalMs) {
this.workerIntervalMs = workerIntervalMs;
}
public int getAgentMaxAttempts() {
return agentMaxAttempts;
}
public long getAgentRequestTimeoutMs() {
return agentRequestTimeoutMs;
}
public void setAgentMaxAttempts(int agentMaxAttempts) {
this.agentMaxAttempts = agentMaxAttempts;
}
public String getHostname() {
return hostname;
}
public void setHostname(String hostname) {
this.hostname = hostname;
}
public AuthConfiguration getAuthConfiguration() {
return authConfiguration;
}
public void setAuthConfiguration(AuthConfiguration authConfiguration) {
this.authConfiguration = authConfiguration;
}
public String getMasterAuthKey() {
return masterAuthKey;
}
public void setMasterAuthKey(String masterAuthKey) {
this.masterAuthKey = masterAuthKey;
}
public BaragonWorkerConfiguration getWorkerConfiguration() {
return workerConfiguration;
}
public void setWorkerConfiguration(BaragonWorkerConfiguration workerConfiguration) {
this.workerConfiguration = workerConfiguration;
}
public Optional<ElbConfiguration> getElbConfiguration() {
return elb;
}
public void setElbConfiguration(Optional<ElbConfiguration> elb) {
this.elb = elb;
}
public UIConfiguration getUiConfiguration() {
return uiConfiguration;
}
public void setUiConfiguration(UIConfiguration uiConfiguration) {
this.uiConfiguration = uiConfiguration;
}
public boolean isEnableCorsFilter() {
return enableCorsFilter;
}
public HistoryConfiguration getHistoryConfiguration() {
return historyConfiguration;
}
public void setHistoryConfiguration(HistoryConfiguration historyConfiguration) {
this.historyConfiguration = historyConfiguration;
}
public boolean isEnforceTargetAgentCount() {
return enforceTargetAgentCount;
}
public void setEnforceTargetAgentCount(boolean enforceTargetAgentCount) {
this.enforceTargetAgentCount = enforceTargetAgentCount;
}
public int getDefaultTargetAgentCount() {
return defaultTargetAgentCount;
}
public void setDefaultTargetAgentCount(int defaultTargetAgentCount) {
this.defaultTargetAgentCount = defaultTargetAgentCount;
}
public GraphiteConfiguration getGraphiteConfiguration() {
return graphiteConfiguration;
}
public void setGraphiteConfiguration(GraphiteConfiguration graphiteConfiguration) {
this.graphiteConfiguration = graphiteConfiguration;
}
public Optional<SentryConfiguration> getSentryConfiguration() {
return sentryConfiguration;
}
public void setSentryConfiguration(Optional<SentryConfiguration> sentryConfiguration) {
this.sentryConfiguration = sentryConfiguration;
}
}