hiera-dyml 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/hiera/backend/dyml_backend.rb +43 -34
  2. metadata +6 -6
@@ -1,43 +1,52 @@
1
1
  class Hiera
2
- module Backend
3
- class Dyml_backend
4
- #based on the original Hiera Yaml backend, modified to use the deep_merge hash function to merge the hiera yaml files.
2
+ module Backend
3
+ class Dyml_backend
4
+ #based on the original Hiera Yaml backend, modified to use the deep_merge hash function to merge the hiera yaml files.
5
5
 
6
- def initialize
7
- require 'yaml'
8
- require 'deep_merge'
9
- Hiera.debug("Hiera Dyml backend starting")
10
- end
6
+ def initialize
7
+ require 'yaml'
8
+ require 'deep_merge'
9
+ Hiera.debug("Hiera Dyml backend starting")
10
+ end
11
11
 
12
- def lookup(key, scope, order_override, resolution_type)
13
- answer = Backend.empty_answer(resolution_type)
14
- Hiera.debug("Looking up #{key} in DYML backend")
15
- files = []
16
- data = {}
17
- Backend.datasources(scope, order_override) do |source|
18
- Hiera.debug("Looking for data source #{source}")
19
- yamlfile = Backend.datafile(:dyml, scope, source, "yaml") || next
20
- files << yamlfile
21
- end
12
+ def deep_merge_options
13
+ @options ||= {}.tap do |options|
14
+ backend_options = Hiera::Config[:dyml]
15
+ [:knockout_prefix, :preserve_unmergeables, :sort_merged_arrays, :unpack_arrays].each do |key|
16
+ options[key] = backend_options[key] if backend_options.include?(key)
17
+ end
18
+ end
19
+ end
22
20
 
23
- files.reverse.each {|f| data.deep_merge!(YAML.load_file(f))} unless files.empty?
21
+ def lookup(key, scope, order_override, resolution_type)
22
+ answer = nil
23
+ Hiera.debug("Looking up #{key} in DYML backend")
24
+ files = []
25
+ data = {}
26
+ Backend.datasources(scope, order_override) do |source|
27
+ Hiera.debug("Looking for data source #{source}")
28
+ yamlfile = Backend.datafile(:dyml, scope, source, "yaml") || next
29
+ files << yamlfile
30
+ end
24
31
 
25
- if data.include?(key)
26
- new_answer = Backend.parse_answer(data[key], scope)
27
- case resolution_type
28
- when :array
29
- raise Exception, "Hiera type mismatch: expected Array and got #{new_answer.class}" unless new_answer.kind_of? Array or new_answer.kind_of? String
30
- answer << new_answer
31
- when :hash
32
- raise Exception, "Hiera type mismatch: expected Hash and got #{new_answer.class}" unless new_answer.kind_of? Hash
33
- answer = new_answer.merge answer
34
- else
35
- answer = new_answer
36
- end
37
- end
32
+ files.reverse.each { |f| data.deep_merge!(YAML.load_file(f), deep_merge_options) } unless files.empty?
38
33
 
39
- return answer
40
- end
34
+ if data.include?(key)
35
+ new_answer = Backend.parse_answer(data[key], scope)
36
+ case resolution_type
37
+ when :array
38
+ raise Exception, "Hiera type mismatch: expected Array and got #{new_answer.class}" unless new_answer.kind_of? Array or new_answer.kind_of? String
39
+ answer << new_answer
40
+ when :hash
41
+ raise Exception, "Hiera type mismatch: expected Hash and got #{new_answer.class}" unless new_answer.kind_of? Hash
42
+ answer = new_answer.merge answer
43
+ else
44
+ answer = new_answer
45
+ end
41
46
  end
47
+
48
+ return answer
49
+ end
42
50
  end
51
+ end
43
52
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiera-dyml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-09 00:00:00.000000000 Z
12
+ date: 2012-10-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hiera
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - '='
19
+ - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 0.3.0
21
+ version: 1.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - '='
27
+ - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: 0.3.0
29
+ version: 1.0.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: deep_merge
32
32
  requirement: !ruby/object:Gem::Requirement