All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.singularity.logwatcher.config.SingularityLogWatcherConfiguration Maven / Gradle / Ivy

There is a newer version: 0.8.0
Show newest version
package com.hubspot.singularity.logwatcher.config;

import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

import javax.validation.constraints.Min;

import org.hibernate.validator.constraints.NotEmpty;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Optional;
import com.google.common.collect.Lists;
import com.hubspot.singularity.runner.base.configuration.BaseRunnerConfiguration;
import com.hubspot.singularity.runner.base.configuration.Configuration;
import com.hubspot.singularity.runner.base.constraints.DirectoryExists;

@Configuration(filename = "/etc/singularity.logwatcher.yaml", consolidatedField = "logwatcher")
public class SingularityLogWatcherConfiguration extends BaseRunnerConfiguration {
  @Min(1)
  @JsonProperty
  private int byteBufferCapacity = 8192;

  @Min(1)
  @JsonProperty
  private long pollMillis = 1000;

  @NotEmpty
  @JsonProperty
  private String fluentdHosts = "localhost:24224";

  @DirectoryExists
  @JsonProperty
  private String storeDirectory;

  @NotEmpty
  @JsonProperty
  private String storeSuffix = ".store";

  @NotEmpty
  @JsonProperty
  private String fluentdTagPrefix = "forward";

  @Min(1)
  @JsonProperty
  private long retryDelaySeconds = 60;

  public SingularityLogWatcherConfiguration() {
    super(Optional.of("singularity-logwatcher.log"));
  }

  public static class FluentdHost {

    private final String host;
    private final int port;

    public FluentdHost(String host, int port) {
      this.host = host;
      this.port = port;
    }

    public String getHost() {
      return host;
    }

    public int getPort() {
      return port;
    }

    @Override
    public String toString() {
      return "FluentdHost [host=" + host + ", port=" + port + "]";
    }

  }

  private List parseFluentdHosts(String fluentdHosts) {
    final String[] split = fluentdHosts.split(",");
    final List hosts = Lists.newArrayListWithCapacity(split.length);
    for (String subsplit : split) {
      final String[] hostAndPort = subsplit.split(":");
      hosts.add(new FluentdHost(hostAndPort[0], Integer.parseInt(hostAndPort[1])));
    }
    return hosts;
  }

  public int getByteBufferCapacity() {
    return byteBufferCapacity;
  }

  public void setByteBufferCapacity(int byteBufferCapacity) {
    this.byteBufferCapacity = byteBufferCapacity;
  }

  public long getPollMillis() {
    return pollMillis;
  }

  public void setPollMillis(long pollMillis) {
    this.pollMillis = pollMillis;
  }

  public List getFluentdHosts() {
    return parseFluentdHosts(fluentdHosts);
  }

  public void setFluentdHosts(String fluentdHosts) {
    this.fluentdHosts = fluentdHosts;
  }

  public Path getStoreDirectory() {
    return Paths.get(storeDirectory);
  }

  public void setStoreDirectory(String storeDirectory) {
    this.storeDirectory = storeDirectory;
  }

  public String getStoreSuffix() {
    return storeSuffix;
  }

  public void setStoreSuffix(String storeSuffix) {
    this.storeSuffix = storeSuffix;
  }

  public String getFluentdTagPrefix() {
    return fluentdTagPrefix;
  }

  public void setFluentdTagPrefix(String fluentdTagPrefix) {
    this.fluentdTagPrefix = fluentdTagPrefix;
  }

  public long getRetryDelaySeconds() {
    return retryDelaySeconds;
  }

  public void setRetryDelaySeconds(long retryDelaySeconds) {
    this.retryDelaySeconds = retryDelaySeconds;
  }

  @Override
  public String toString() {
    return "SingularityLogWatcherConfiguration[" +
            "byteBufferCapacity=" + byteBufferCapacity +
            ", pollMillis=" + pollMillis +
            ", fluentdHosts='" + fluentdHosts + '\'' +
            ", storeDirectory='" + storeDirectory + '\'' +
            ", storeSuffix='" + storeSuffix + '\'' +
            ", fluentdTagPrefix='" + fluentdTagPrefix + '\'' +
            ", retryDelaySeconds=" + retryDelaySeconds +
            ']';
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy