Class: Bolt::PuppetDB::Config
- Inherits:
-
Object
- Object
- Bolt::PuppetDB::Config
- Defined in:
- lib/bolt/puppetdb/config.rb
Constant Summary collapse
- DEFAULT_TOKEN =
File.('~/.puppetlabs/token')
- DEFAULT_CONFIG =
{ user: File.('~/.puppetlabs/client-tools/puppetdb.conf'), global: '/etc/puppetlabs/client-tools/puppetdb.conf' }.freeze
Class Method Summary collapse
-
.default_config ⇒ Hash
Loads default configuration from the puppetdb.conf file on system.
-
.default_windows_config ⇒ String
Returns the path to the puppetdb.conf file on Windows.
Instance Method Summary collapse
- #cacert ⇒ Object
- #cert ⇒ Object
- #connect_timeout ⇒ Object
- #expand_paths(project_path) ⇒ Object
-
#initialize(config:, project: nil, load_defaults: false) ⇒ Config
constructor
A new instance of Config.
- #key ⇒ Object
- #read_timeout ⇒ Object
- #server_urls ⇒ Object
- #to_hash ⇒ Object
- #token ⇒ Object
- #uri ⇒ Object
- #validate_cert_and_key ⇒ Object
- #validate_file_exists(file) ⇒ Object
- #validate_timeout(timeout) ⇒ Object
Constructor Details
#initialize(config:, project: nil, load_defaults: false) ⇒ Config
Returns a new instance of Config.
20 21 22 23 24 25 26 27 28 |
# File 'lib/bolt/puppetdb/config.rb', line 20 def initialize(config:, project: nil, load_defaults: false) @settings = if load_defaults self.class.default_config.merge(config) else config end (project) end |
Class Method Details
.default_config ⇒ Hash
Loads default configuration from the puppetdb.conf file on system. If the file is not present, defaults to an empty hash.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/bolt/puppetdb/config.rb', line 43 def self.default_config config = {} global_path = Bolt::Util.windows? ? default_windows_config : DEFAULT_CONFIG[:global] if File.exist?(DEFAULT_CONFIG[:user]) filepath = DEFAULT_CONFIG[:user] elsif File.exist?(global_path) filepath = global_path end begin config = JSON.parse(File.read(filepath)) if filepath rescue StandardError => e Bolt::Logger.logger(self).error("Could not load puppetdb.conf from #{filepath}: #{e.}") end config.fetch('puppetdb', {}) end |
.default_windows_config ⇒ String
Returns the path to the puppetdb.conf file on Windows.
34 35 36 |
# File 'lib/bolt/puppetdb/config.rb', line 34 def self.default_windows_config File.(File.join(ENV['ALLUSERSPROFILE'], 'PuppetLabs/client-tools/puppetdb.conf')) end |
Instance Method Details
#cacert ⇒ Object
122 123 124 125 126 127 128 |
# File 'lib/bolt/puppetdb/config.rb', line 122 def cacert if @settings['cacert'] && validate_file_exists('cacert') @settings['cacert'] else raise Bolt::PuppetDBError, "cacert must be specified" end end |
#cert ⇒ Object
130 131 132 133 134 |
# File 'lib/bolt/puppetdb/config.rb', line 130 def cert validate_cert_and_key validate_file_exists('cert') @settings['cert'] end |
#connect_timeout ⇒ Object
149 150 151 152 |
# File 'lib/bolt/puppetdb/config.rb', line 149 def connect_timeout validate_timeout('connect_timeout') @settings['connect_timeout'] end |
#expand_paths(project_path) ⇒ Object
75 76 77 78 79 80 |
# File 'lib/bolt/puppetdb/config.rb', line 75 def (project_path) %w[cacert cert key token].each do |file| next unless @settings[file] @settings[file] = File.(@settings[file], project_path) end end |
#key ⇒ Object
136 137 138 139 140 |
# File 'lib/bolt/puppetdb/config.rb', line 136 def key validate_cert_and_key validate_file_exists('key') @settings['key'] end |
#read_timeout ⇒ Object
154 155 156 157 |
# File 'lib/bolt/puppetdb/config.rb', line 154 def read_timeout validate_timeout('read_timeout') @settings['read_timeout'] end |
#server_urls ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/bolt/puppetdb/config.rb', line 89 def server_urls case @settings['server_urls'] when String [@settings['server_urls']] when Array @settings['server_urls'] when nil raise Bolt::PuppetDBError, "server_urls must be specified" else raise Bolt::PuppetDBError, "server_urls must be a string or array" end end |
#to_hash ⇒ Object
165 166 167 |
# File 'lib/bolt/puppetdb/config.rb', line 165 def to_hash @settings.dup end |
#token ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/bolt/puppetdb/config.rb', line 62 def token return @token if @token # Allow nil in config to skip loading a token if @settings.include?('token') if @settings['token'] @token = File.read(@settings['token']) end elsif File.exist?(DEFAULT_TOKEN) @token = File.read(DEFAULT_TOKEN) end @token = @token.strip if @token end |
#uri ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/bolt/puppetdb/config.rb', line 102 def uri return @uri if @uri require 'addressable/uri' uri = case @settings['server_urls'] when String @settings['server_urls'] when Array @settings['server_urls'].first when nil raise Bolt::PuppetDBError, "server_urls must be specified" else raise Bolt::PuppetDBError, "server_urls must be a string or array" end @uri = Addressable::URI.parse(uri) @uri.port ||= 8081 @uri end |
#validate_cert_and_key ⇒ Object
142 143 144 145 146 147 |
# File 'lib/bolt/puppetdb/config.rb', line 142 def validate_cert_and_key if (@settings['cert'] && !@settings['key']) || (!@settings['cert'] && @settings['key']) raise Bolt::PuppetDBError, "cert and key must be specified together" end end |
#validate_file_exists(file) ⇒ Object
82 83 84 85 86 87 |
# File 'lib/bolt/puppetdb/config.rb', line 82 def validate_file_exists(file) if @settings[file] && !File.exist?(@settings[file]) raise Bolt::PuppetDBError, "#{file} file #{@settings[file]} does not exist" end true end |
#validate_timeout(timeout) ⇒ Object
159 160 161 162 163 |
# File 'lib/bolt/puppetdb/config.rb', line 159 def validate_timeout(timeout) unless @settings[timeout].nil? || (@settings[timeout].is_a?(Integer) && @settings[timeout] > 0) raise Bolt::PuppetDBError, "#{timeout} must be a positive integer, received #{@settings[timeout]}" end end |