class Consul::Async::ConsulConfiguration

The class configuring Consul endpoints It allows to translate configuration options per specific endpoint/path

Attributes

base_url[R]
debug[R]
enable_gzip_compression[R]
fail_fast_errors[R]
max_consecutive_errors_on_endpoint[R]
max_retry_duration[R]
min_duration[R]
missing_index_retry_time_on_diff[R]
missing_index_retry_time_on_unchanged[R]
retry_duration[R]
retry_on_non_diff[R]
tls_cert_chain[R]
tls_private_key[R]
tls_verify_peer[R]
token[R]
wait_duration[R]

Public Class Methods

new(base_url: 'http://localhost:8500', debug: { network: false }, token: nil, retry_duration: 10, min_duration: 0.1, retry_on_non_diff: 5, wait_duration: 600, max_retry_duration: 600, missing_index_retry_time_on_diff: 15, missing_index_retry_time_on_unchanged: 60, enable_gzip_compression: true, paths: {}, max_consecutive_errors_on_endpoint: 10, fail_fast_errors: 1, tls_cert_chain: nil, tls_private_key: nil, tls_verify_peer: true) click to toggle source
# File lib/consul/async/consul_endpoint.rb, line 13
def initialize(base_url: 'http://localhost:8500',
               debug: { network: false },
               token: nil,
               retry_duration: 10,
               min_duration: 0.1,
               retry_on_non_diff: 5,
               wait_duration: 600,
               max_retry_duration: 600,
               missing_index_retry_time_on_diff: 15,
               missing_index_retry_time_on_unchanged: 60,
               enable_gzip_compression: true,
               paths: {},
               max_consecutive_errors_on_endpoint: 10,
               fail_fast_errors: 1,
               tls_cert_chain: nil,
               tls_private_key: nil,
               tls_verify_peer: true)
  @base_url = base_url
  @token = token
  @debug = debug
  @enable_gzip_compression = enable_gzip_compression
  @retry_duration = retry_duration
  @min_duration = min_duration
  @wait_duration = wait_duration
  @max_retry_duration = max_retry_duration
  @retry_on_non_diff = retry_on_non_diff
  @missing_index_retry_time_on_diff = missing_index_retry_time_on_diff
  @missing_index_retry_time_on_unchanged = missing_index_retry_time_on_unchanged
  @paths = paths
  @max_consecutive_errors_on_endpoint = max_consecutive_errors_on_endpoint
  @fail_fast_errors = fail_fast_errors
  @tls_cert_chain = tls_cert_chain
  @tls_private_key = tls_private_key
  @tls_verify_peer = tls_verify_peer
end

Public Instance Methods

ch(path, symbol) click to toggle source
# File lib/consul/async/consul_endpoint.rb, line 49
def ch(path, symbol)
  sub = @paths[path.to_sym]
  if sub && sub[symbol]
    ::Consul::Async::Debug.puts_debug "Overriding #{symbol}:=#{sub[symbol]} for #{path}"
    sub[symbol]
  else
    method(symbol).call
  end
end
create(path, agent: nil) click to toggle source
# File lib/consul/async/consul_endpoint.rb, line 59
def create(path, agent: nil)
  return self unless @paths[path.to_sym]

  base_url = ch(path, :base_url)
  if agent
    agent = "http://#{agent}" unless agent.start_with? 'http', 'https'
    base_url = agent
  end
  ConsulConfiguration.new(base_url: base_url,
                          debug: ch(path, :debug),
                          token: ch(path, :token),
                          retry_duration: ch(path, :retry_duration),
                          min_duration: ch(path, :min_duration),
                          retry_on_non_diff: ch(path, :retry_on_non_diff),
                          wait_duration: ch(path, :wait_duration),
                          max_retry_duration: ch(path, :max_retry_duration),
                          missing_index_retry_time_on_diff: ch(path, :missing_index_retry_time_on_diff),
                          missing_index_retry_time_on_unchanged: ch(path, :missing_index_retry_time_on_unchanged),
                          enable_gzip_compression: enable_gzip_compression,
                          paths: @paths,
                          max_consecutive_errors_on_endpoint: @max_consecutive_errors_on_endpoint,
                          fail_fast_errors: @fail_fast_errors,
                          tls_cert_chain: ch(path, :tls_cert_chain),
                          tls_private_key: ch(path, :tls_private_key),
                          tls_verify_peer: ch(path, :tls_verify_peer))
end