Add new module elasticsearch for listsearch
[mirror/dsa-puppet.git] / 3rdparty / modules / elasticsearch / templates / etc / elasticsearch / elasticsearch.yml.erb
1 <%-
2
3   # Function to make a structured and sorted yaml representation out of a hash
4   def recursive_hash_to_yml_string(hash, depth=0)
5     spacer = ""
6     depth.times { spacer += "  "}
7     hash.keys.sort.each do |sorted_key|
8       @yml_string += spacer + sorted_key + ": "
9       if hash[sorted_key].is_a?(Array)
10          keyspacer = ""
11          sorted_key.length.times { keyspacer += " " }
12          @yml_string += "\n"
13          hash[sorted_key].each do |item|
14            @yml_string += spacer + keyspacer + "- " + item +"\n"
15          end
16       elsif hash[sorted_key].is_a?(Hash)
17         @yml_string += "\n"
18         recursive_hash_to_yml_string(hash[sorted_key], depth+1)
19       else
20         @yml_string += "#{hash[sorted_key].to_s}\n"
21       end
22     end
23   end
24
25   # Function to transform shorted write up of the keys into full hash representation
26   def transform(hash)
27   return_vals = []
28
29   hash.each do |key,val|
30     if m = /^([^.]+)\.(.*)$/.match(key)
31       temp = { m[1] => { m[2] => val } }
32       transform(temp).each do |stuff|
33         return_vals << stuff
34       end
35     else
36       if val.is_a?(Hash)
37         transform(val).each do |stuff|
38           return_vals << { key => stuff }
39         end
40       else
41         return_vals << { key => val }
42       end
43     end
44   end
45
46   return_vals
47   end
48
49   # Function to deep merge hashes with same keys
50   class ::Hash
51     def deep_merge_with_array_values_concatenated(hash)
52     target = dup
53
54     hash.keys.each do |key|
55       if hash[key].is_a? Hash and self[key].is_a? Hash
56         target[key] = target[key].deep_merge_with_array_values_concatenated(hash[key])
57         next
58       end
59
60       if hash[key].is_a?(Array) && target[key].is_a?(Array)
61         target[key] = target[key] + hash[key]
62       else
63         target[key] = hash[key]
64       end
65     end
66
67     target
68     end
69   end
70
71   # initial string
72   @yml_string = "### MANAGED BY PUPPET ###\n"
73
74   if !@instance_conf.empty?
75
76     @yml_string += "---\n"
77
78     ## Transform shorted keys into full write up
79     transformed_config = transform(@instance_conf)
80
81     # Merge it back into a hash
82     tmphash = { }
83     transformed_config.each do |subhash|
84       tmphash = tmphash.deep_merge_with_array_values_concatenated(subhash)
85     end
86
87     # Transform it into yaml
88     recursive_hash_to_yml_string(tmphash)
89
90   end
91
92 -%>
93 <%= @yml_string -%>