Class: Hiera::Config
- Inherits:
-
Object
- Object
- Hiera::Config
- Defined in:
- lib/hiera/config.rb
Class Method Summary collapse
- .[](key) ⇒ Object
- .include?(key) ⇒ Boolean
-
.load(source) ⇒ Hash
load takes a string or hash as input, strings are treated as filenames hashes are stored as data that would have been in the config file.
- .load_backends ⇒ Object
- .validate! ⇒ Object
-
.yaml_load_file(source) ⇒ Object
yaml_load_file directly delegates to YAML.load_file and is intended to be a private, internal method suitable for stubbing and mocking.
Class Method Details
.[](key) ⇒ Object
93 94 95 |
# File 'lib/hiera/config.rb', line 93 def [](key) @config[key] end |
.include?(key) ⇒ Boolean
89 90 91 |
# File 'lib/hiera/config.rb', line 89 def include?(key) @config.include?(key) end |
.load(source) ⇒ Hash
load takes a string or hash as input, strings are treated as filenames hashes are stored as data that would have been in the config file
Unless specified it will only use YAML as backend with a hierarchy of 'nodes/%trustedtrusted.certname' and 'common', and with a console logger.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/hiera/config.rb', line 12 def load(source) @config = {:backends => ["yaml"], :hierarchy => ["nodes/%{::trusted.certname}", "common"], :merge_behavior => :native } if source.is_a?(String) if File.exist?(source) config = begin yaml_load_file(source) rescue TypeError => detail case detail. when /no implicit conversion from nil to integer/ false else raise detail end end if config version = config['version'] || config[:version] || 3 if version >= 4 raise "v#{version} hiera.yaml is only to be used inside an environment or a module and cannot be given to the global hiera" end @config.merge! config end else raise "Config file #{source} not found" end elsif source.is_a?(Hash) @config.merge! source end @config[:backends] = [ @config[:backends] ].flatten if @config.include?(:logger) Hiera.logger = @config[:logger].to_s else @config[:logger] = "console" Hiera.logger = "console" end self.validate! @config end |
.load_backends ⇒ Object
79 80 81 82 83 84 85 86 87 |
# File 'lib/hiera/config.rb', line 79 def load_backends @config[:backends].each do |backend| begin require "hiera/backend/#{backend.downcase}_backend" rescue LoadError => e raise "Cannot load backend #{backend}: #{e}" end end end |
.validate! ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/hiera/config.rb', line 57 def validate! case @config[:merge_behavior] when :deep,'deep',:deeper,'deeper' begin require "deep_merge" require "deep_merge/rails_compat" rescue LoadError raise Hiera::Error, "Must have 'deep_merge' gem installed for the configured merge_behavior." end end end |
.yaml_load_file(source) ⇒ Object
yaml_load_file directly delegates to YAML.load_file and is intended to be a private, internal method suitable for stubbing and mocking.
74 75 76 |
# File 'lib/hiera/config.rb', line 74 def yaml_load_file(source) YAML.load_file(source) end |