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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8d5d4c5cb99fa3c85ab258b871bdc9605e2285e4
4
- data.tar.gz: f2c2bf38bb3d9144679c94e3855429ff5b218482
3
+ metadata.gz: e418a38e390221e8500056205e0811dc1cfbda04
4
+ data.tar.gz: 628d2addfffe9f72c1c1bb0211a7761fc6ef2e55
5
5
  SHA512:
6
- metadata.gz: b40b446b4f5197c66d791cd2ddbd7206f97ae81826594026ed431e500a063d6f3bcb958a48ab3c47746732b1fef42136a15e32b47bc0e7d424f46322e6d548d3
7
- data.tar.gz: e49ca2e15c9ff4d4ea6d27728b9bca00ff3567db718a077be7d758c9d97055a7f0d74a2a51e4a89c1b909707a2f734d4cb96bef6df287f98742a9bb874ae4293
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
- Backend.merge_answer(overriding, other)
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
- imports = merge_yaml(load_yaml_file(f, scope), imports)
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.datasourcefiles(:ic_yaml, scope, "yaml", order_override) do |source, yamlfile|
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.0.0
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-01 00:00:00.000000000 Z
12
- dependencies: []
13
- description: Hiera yaml backend that support imports
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: []