class PuppetDB::Config

Public Class Methods

new(overrides = nil, load_files = false) click to toggle source
# File lib/puppetdb/config.rb, line 5
def initialize(overrides = nil, load_files = false)
  @overrides = {}
  overrides.each { |k, v| @overrides[k.to_sym] = v } unless overrides.nil?

  @load_files = load_files
end

Public Instance Methods

[](key) click to toggle source
# File lib/puppetdb/config.rb, line 101
def [](key)
  @config[key]
end
config() click to toggle source
# File lib/puppetdb/config.rb, line 76
def config
  @config ||= load_config
end
default_cacert() click to toggle source
# File lib/puppetdb/config.rb, line 48
def default_cacert
  File.join(puppetlabs_root, 'puppet', 'ssl', 'certs', 'ca.pem')
end
defaults() click to toggle source
# File lib/puppetdb/config.rb, line 52
def defaults
  {
    cacert: default_cacert,
    token_file: File.join(user_root, 'token')
  }
end
global_conf() click to toggle source
# File lib/puppetdb/config.rb, line 36
def global_conf
  File.join(puppetlabs_root, 'client-tools', 'puppetdb.conf')
end
load_config() click to toggle source
# File lib/puppetdb/config.rb, line 59
def load_config
  config = defaults
  if @load_files
    if File.exist?(global_conf) && File.readable?(global_conf)
      config = config.merge(load_file(global_conf))
    end

    if @overrides[:config_file]
      config = config.merge(load_file(@overrides[:config_file]))
    elsif File.exist?(user_conf) && File.readable?(user_conf)
      config = config.merge(load_file(user_conf))
    end
  end

  config.merge(@overrides)
end
load_file(path) click to toggle source
# File lib/puppetdb/config.rb, line 17
def load_file(path)
  loaded_conf = File.open(path) { |f| JSON.parse(f.read, symbolize_names: true)[:puppetdb] }

  # Munge token-file into token_file for better readability in Ruby
  if loaded_conf[:'token-file']
    loaded_conf[:token_file] = loaded_conf.delete(:'token-file')
  end

  loaded_conf
end
load_token() click to toggle source
# File lib/puppetdb/config.rb, line 80
def load_token
  if @config.include?(:token)
    @config[:token]
  elsif File.readable?(config[:token_file])
    File.read(config[:token_file]).strip
  end
end
pem() click to toggle source
# File lib/puppetdb/config.rb, line 97
def pem
  @config.select { |k, _| [:cacert, :cert, :key].include?(k) }
end
puppetlabs_root() click to toggle source
# File lib/puppetdb/config.rb, line 28
def puppetlabs_root
  if windows?
    'C:\ProgramData\PuppetLabs'
  else
    '/etc/puppetlabs'
  end
end
server_urls() click to toggle source
# File lib/puppetdb/config.rb, line 92
def server_urls
  return config[:server_urls].split(',') if config[:server_urls].is_a?(String)
  config[:server_urls] || []
end
token() click to toggle source
# File lib/puppetdb/config.rb, line 88
def token
  @token ||= load_token
end
user_conf() click to toggle source
# File lib/puppetdb/config.rb, line 44
def user_conf
  File.join(user_root, 'client-tools', 'puppetdb.conf')
end
user_root() click to toggle source
# File lib/puppetdb/config.rb, line 40
def user_root
  File.join(Dir.home, '.puppetlabs')
end
windows?() click to toggle source
# File lib/puppetdb/config.rb, line 12
def windows?
  @is_windows ||= (RbConfig::CONFIG['host_os'] =~ %r{mswin|mingw|cygwin})
  @is_windows
end