hiera-dyml 0.0.1

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 -0
  2. metadata +96 -0
@@ -0,0 +1,43 @@
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.
5
+
6
+ def initialize
7
+ require 'yaml'
8
+ require 'deep_merge'
9
+ Hiera.debug("Hiera Dyml backend starting")
10
+ end
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
22
+
23
+ files.reverse.each {|f| data.deep_merge!(YAML.load_file(f))} unless files.empty?
24
+
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
38
+
39
+ return answer
40
+ end
41
+ end
42
+ end
43
+ end
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hiera-dyml
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Johan Bakker
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-06-15 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: hiera
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 19
29
+ segments:
30
+ - 0
31
+ - 3
32
+ - 0
33
+ version: 0.3.0
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: deep_merge
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 23
45
+ segments:
46
+ - 1
47
+ - 0
48
+ - 0
49
+ version: 1.0.0
50
+ type: :runtime
51
+ version_requirements: *id002
52
+ description: YAML hiera backend with support for deep merging of hashes
53
+ email: johan.bakker@panifex.nl
54
+ executables: []
55
+
56
+ extensions: []
57
+
58
+ extra_rdoc_files: []
59
+
60
+ files:
61
+ - lib/hiera/backend/dyml_backend.rb
62
+ homepage: http://github.com/provonet/hiera-dyml
63
+ licenses: []
64
+
65
+ post_install_message:
66
+ rdoc_options: []
67
+
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ hash: 3
76
+ segments:
77
+ - 0
78
+ version: "0"
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ hash: 3
85
+ segments:
86
+ - 0
87
+ version: "0"
88
+ requirements: []
89
+
90
+ rubyforge_project:
91
+ rubygems_version: 1.8.10
92
+ signing_key:
93
+ specification_version: 3
94
+ summary: DeepMerge YAML backend for Hiera
95
+ test_files: []
96
+