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.
- data/lib/hiera/backend/dyml_backend.rb +43 -0
- 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
|
+
|