hiera-ic-yaml 1.0.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/hiera/backend/ic_yaml_backend.rb +55 -12
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e418a38e390221e8500056205e0811dc1cfbda04
|
4
|
+
data.tar.gz: 628d2addfffe9f72c1c1bb0211a7761fc6ef2e55
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d78fd29a5353ec10e133455fb818c5639e6cf47ebec740d79c8e406efcebf4cc39220018e7b1a1909b303e26145879fb00a09530c203250cb2c6bcce16d1ae8
|
7
|
+
data.tar.gz: 793d7deb1eb0681162d230035e24777f28b6e33db9693a62ea24b22f899c07915f5fef2765114493b4dcb7071d5b127a1100b259f7adfcf99174a27abded722c
|
@@ -1,8 +1,6 @@
|
|
1
1
|
class Hiera
|
2
2
|
module Backend
|
3
|
-
|
4
3
|
class Ic_yaml_backend
|
5
|
-
|
6
4
|
def initialize(cache=nil)
|
7
5
|
require 'yaml'
|
8
6
|
Hiera.debug("Hiera IC YAML backend starting")
|
@@ -33,6 +31,18 @@ class Hiera
|
|
33
31
|
return file
|
34
32
|
end
|
35
33
|
|
34
|
+
def parameters(data)
|
35
|
+
key = parameters_key()
|
36
|
+
values = data[key] || {}
|
37
|
+
parameters = {}
|
38
|
+
|
39
|
+
values.each_pair do |k,v|
|
40
|
+
parameters["::#{k}"] = v
|
41
|
+
end
|
42
|
+
|
43
|
+
return parameters
|
44
|
+
end
|
45
|
+
|
36
46
|
def imports_key()
|
37
47
|
config = ic_yaml_config()
|
38
48
|
|
@@ -47,8 +57,42 @@ class Hiera
|
|
47
57
|
return '__imports__'
|
48
58
|
end
|
49
59
|
|
60
|
+
def parameters_key()
|
61
|
+
config = ic_yaml_config()
|
62
|
+
|
63
|
+
if config[:parameters_key]
|
64
|
+
return config[:parameters_key]
|
65
|
+
end
|
66
|
+
|
67
|
+
if config['parameters_key']
|
68
|
+
return config['parameters_key']
|
69
|
+
end
|
70
|
+
|
71
|
+
return '__parameters__'
|
72
|
+
end
|
73
|
+
|
50
74
|
def merge_yaml(overriding, other)
|
51
|
-
|
75
|
+
|
76
|
+
if !overriding.kind_of?(Hash) && !overriding.kind_of?(Array)
|
77
|
+
return overriding || other
|
78
|
+
end
|
79
|
+
|
80
|
+
if overriding.kind_of?(Array) && other.kind_of?(Array)
|
81
|
+
return overriding.concat(other).uniq
|
82
|
+
end
|
83
|
+
|
84
|
+
if !overriding.kind_of?(Hash)
|
85
|
+
return overriding || other
|
86
|
+
end
|
87
|
+
|
88
|
+
result = {}
|
89
|
+
|
90
|
+
overriding.each_pair do |key, overriding_val|
|
91
|
+
other_val = other[key] || overriding_val
|
92
|
+
result[key] = merge_yaml(overriding_val, other_val)
|
93
|
+
end
|
94
|
+
|
95
|
+
return other.merge(result)
|
52
96
|
end
|
53
97
|
|
54
98
|
def load_yaml_file(path, scope)
|
@@ -76,7 +120,8 @@ class Hiera
|
|
76
120
|
imports = {}
|
77
121
|
|
78
122
|
config[imports_key].each { |f|
|
79
|
-
|
123
|
+
element = load_yaml_file(f, scope)
|
124
|
+
imports = merge_yaml(element, imports)
|
80
125
|
}
|
81
126
|
|
82
127
|
config = merge_yaml(config, imports)
|
@@ -91,7 +136,11 @@ class Hiera
|
|
91
136
|
|
92
137
|
Hiera.debug("Hiera IC YAML Looking up #{key} in YAML backend")
|
93
138
|
|
94
|
-
Backend.
|
139
|
+
Backend.datasources(scope, order_override) do |source|
|
140
|
+
Hiera.debug("Looking for data source #{source}")
|
141
|
+
yamlfile = Backend.datafile(:ic_yaml, scope, source, "yaml") || next
|
142
|
+
|
143
|
+
next unless File.exist?(yamlfile)
|
95
144
|
|
96
145
|
data = @cache.read_file(yamlfile, Hash) do |data|
|
97
146
|
load_yaml_data(data, scope)
|
@@ -111,7 +160,7 @@ class Hiera
|
|
111
160
|
# the array
|
112
161
|
#
|
113
162
|
# for priority searches we break after the first found data item
|
114
|
-
new_answer = Backend.parse_answer(data[key], scope)
|
163
|
+
new_answer = Backend.parse_answer(data[key], scope, parameters(data))
|
115
164
|
case resolution_type
|
116
165
|
when :array
|
117
166
|
raise Exception, "Hiera type mismatch: expected Array and got #{new_answer.class}" unless new_answer.kind_of? Array or new_answer.kind_of? String
|
@@ -129,12 +178,6 @@ class Hiera
|
|
129
178
|
|
130
179
|
return answer
|
131
180
|
end
|
132
|
-
|
133
|
-
private
|
134
|
-
|
135
|
-
def file_exists?(path)
|
136
|
-
File.exist? path
|
137
|
-
end
|
138
181
|
end
|
139
182
|
end
|
140
183
|
end
|
metadata
CHANGED
@@ -1,16 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hiera-ic-yaml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabio B. Silva
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
12
|
-
dependencies:
|
13
|
-
|
11
|
+
date: 2014-12-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: hiera
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
description: Hiera yaml backend that support imports and parameters
|
14
28
|
email: fabio.bat.silva@gmail.com
|
15
29
|
executables: []
|
16
30
|
extensions: []
|