coral_core 0.2.30 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +2 -8
  3. data/Gemfile.lock +15 -86
  4. data/Rakefile +1 -3
  5. data/VERSION +1 -1
  6. data/coral_core.gemspec +12 -102
  7. metadata +18 -239
  8. data/lib/coral/command/shell.rb +0 -140
  9. data/lib/coral/machine/fog.rb +0 -215
  10. data/lib/coral/network/default.rb +0 -26
  11. data/lib/coral/node/rackspace.rb +0 -23
  12. data/lib/coral_core/config/collection.rb +0 -57
  13. data/lib/coral_core/config/options.rb +0 -70
  14. data/lib/coral_core/config/project.rb +0 -225
  15. data/lib/coral_core/config.rb +0 -329
  16. data/lib/coral_core/core.rb +0 -58
  17. data/lib/coral_core/event/puppet_event.rb +0 -98
  18. data/lib/coral_core/event/regexp_event.rb +0 -55
  19. data/lib/coral_core/event.rb +0 -170
  20. data/lib/coral_core/mixin/config_collection.rb +0 -52
  21. data/lib/coral_core/mixin/config_ops.rb +0 -51
  22. data/lib/coral_core/mixin/config_options.rb +0 -38
  23. data/lib/coral_core/mixin/lookup.rb +0 -211
  24. data/lib/coral_core/mixin/macro/object_interface.rb +0 -292
  25. data/lib/coral_core/mixin/macro/plugin_interface.rb +0 -277
  26. data/lib/coral_core/mixin/settings.rb +0 -46
  27. data/lib/coral_core/mixin/sub_config.rb +0 -208
  28. data/lib/coral_core/mod/hash.rb +0 -29
  29. data/lib/coral_core/mod/hiera_backend.rb +0 -63
  30. data/lib/coral_core/plugin/command.rb +0 -95
  31. data/lib/coral_core/plugin/machine.rb +0 -152
  32. data/lib/coral_core/plugin/network.rb +0 -24
  33. data/lib/coral_core/plugin/node.rb +0 -184
  34. data/lib/coral_core/plugin.rb +0 -261
  35. data/lib/coral_core/plugin_base.rb +0 -147
  36. data/lib/coral_core/repository.rb +0 -553
  37. data/lib/coral_core/resource.rb +0 -243
  38. data/lib/coral_core/template/environment.rb +0 -72
  39. data/lib/coral_core/template/json.rb +0 -13
  40. data/lib/coral_core/template/wrapper.rb +0 -13
  41. data/lib/coral_core/template/yaml.rb +0 -13
  42. data/lib/coral_core/template.rb +0 -92
  43. data/lib/coral_core/util/cli.rb +0 -293
  44. data/lib/coral_core/util/data.rb +0 -389
  45. data/lib/coral_core/util/disk.rb +0 -105
  46. data/lib/coral_core/util/git.rb +0 -40
  47. data/lib/coral_core/util/interface.rb +0 -190
  48. data/lib/coral_core/util/process.rb +0 -43
  49. data/lib/coral_core/util/shell.rb +0 -183
  50. data/lib/coral_core.rb +0 -375
  51. data/locales/en.yml +0 -8
  52. data/spec/coral_core/interface_spec.rb +0 -489
  53. data/spec/coral_mock_input.rb +0 -29
  54. data/spec/coral_test_kernel.rb +0 -22
  55. data/spec/spec_helper.rb +0 -15
@@ -1,243 +0,0 @@
1
-
2
- module Coral
3
- module Resource
4
-
5
- #-----------------------------------------------------------------------------
6
- # Resource groups
7
-
8
- @@resource_groups = {}
9
-
10
- #---
11
-
12
- def self.groups
13
- return @@resource_groups
14
- end
15
-
16
- #---
17
-
18
- def self.clear_groups
19
- @@resource_groups = {}
20
- end
21
-
22
- #---
23
-
24
- def self.add_members(group_name, resource_names)
25
- @@resource_groups[group_name] = [] unless @@resource_groups[group_name].is_a?(Array)
26
-
27
- unless resource_names.is_a?(Array)
28
- resource_names = [ resource_names ]
29
- end
30
-
31
- resource_names.each do |name|
32
- unless @@resource_groups[group_name].include?(name)
33
- @@resource_groups[group_name] << name
34
- end
35
- end
36
- end
37
-
38
- #-----------------------------------------------------------------------------
39
- # Resource operations
40
-
41
- def self.normalize(type_name, resources, options)
42
- clear_groups
43
-
44
- config = Config.ensure(options)
45
- resources = Util::Data.value(resources)
46
-
47
- #dbg(resources, 'normalize -> init')
48
-
49
- unless Util::Data.empty?(resources)
50
- resources.keys.each do |name|
51
- #dbg(name, 'normalize -> name')
52
- if ! resources[name] || resources[name].empty? || ! resources[name].is_a?(Hash)
53
- resources.delete(name)
54
- else
55
- normalize = true
56
-
57
- namevar = namevar(type_name, name)
58
- if resources[name].has_key?(namevar)
59
- value = resources[name][namevar]
60
- if Util::Data.empty?(value)
61
- #dbg(value, "delete #{name}")
62
- resources.delete(name)
63
- normalize = false
64
-
65
- elsif value.is_a?(Array)
66
- value.each do |item|
67
- item_name = "#{name}_#{item}".gsub(/\-/, '_')
68
-
69
- new_resource = resources[name].clone
70
- new_resource[namevar] = item
71
-
72
- resources[item_name] = render(new_resource, config)
73
- add_members(name, item_name)
74
- end
75
- resources.delete(name)
76
- normalize = false
77
- end
78
- end
79
-
80
- #dbg(resources, 'normalize -> resources')
81
-
82
- if normalize
83
- resources[name] = render(resources[name], config)
84
- end
85
- end
86
- end
87
- end
88
- return resources
89
- end
90
-
91
- #---
92
-
93
- def self.render(resource, options = {})
94
- resource = Core.string_map(resource.clone)
95
- config = Config.ensure(options)
96
-
97
- resource.keys.each do |name|
98
- if match = name.match(/^(.+)_template$/)
99
- target = match.captures[0]
100
-
101
- #dbg(name, 'name')
102
- #dbg(target, 'target')
103
-
104
- config.set(:normalize_template, config.get("normalize_#{target}", true))
105
- config.set(:interpolate_template, config.get("interpolate_#{target}", true))
106
-
107
- resource[target] = Template.render(resource[name], resource[target], config)
108
- resource.delete(name)
109
- end
110
- end
111
-
112
- #dbg(resource, 'render exit')
113
- return resource
114
- end
115
-
116
- #---
117
-
118
- def self.translate(type_name, resources, options = {})
119
- config = Config.ensure(options)
120
- resources = Util::Data.value(resources)
121
- results = {}
122
-
123
- #dbg(resources, 'resources -> translate')
124
-
125
- prefix = config.get(:resource_prefix, '')
126
-
127
- name_map = {}
128
- resources.keys.each do |name|
129
- name_map[name] = true
130
- end
131
- config[:resource_names] = name_map
132
-
133
- resources.each do |name, data|
134
- #dbg(name, 'name')
135
- #dbg(data, 'data')
136
-
137
- resource = resources[name]
138
- resource['before'] = translate_resource_refs(type_name, data['before'], config) if data.has_key?('before')
139
- resource['notify'] = translate_resource_refs(type_name, data['notify'], config) if data.has_key?('notify')
140
- resource['require'] = translate_resource_refs(type_name, data['require'], config) if data.has_key?('require')
141
- resource['subscribe'] = translate_resource_refs(type_name, data['subscribe'], config) if data.has_key?('subscribe')
142
-
143
- unless prefix.empty?
144
- name = "#{prefix}_#{name}"
145
- end
146
- results[name] = resource
147
- end
148
- return results
149
- end
150
-
151
- #---
152
-
153
- def self.translate_resource_refs(type_name, resource_refs, options = {})
154
- return :undef if Util::Data.undef?(resource_refs)
155
-
156
- config = Config.ensure(options)
157
- resource_names = config.get(:resource_names, {})
158
- title_prefix = config.get(:title_prefix, '')
159
-
160
- title_pattern = config.get(:title_pattern, '^\s*([^\[\]]+)\s*$')
161
- title_group = config.get(:title_var_group, 1)
162
- title_flags = config.get(:title_flags, '')
163
- title_regexp = Regexp.new(title_pattern, title_flags.split(''))
164
-
165
- allow_single = config.get(:allow_single_return, true)
166
-
167
- type_name = type_name.sub(/^\@?\@/, '')
168
- values = []
169
-
170
- case resource_refs
171
- when String
172
- if resource_refs.empty?
173
- return :undef
174
- else
175
- resource_refs = resource_refs.split(/\s*,\s*/)
176
- end
177
-
178
- when Puppet::Resource
179
- resource_refs = [ resource_refs ]
180
- end
181
-
182
- resource_refs.collect! do |value|
183
- if value.is_a?(Puppet::Resource) || ! value.match(title_regexp)
184
- value
185
-
186
- elsif resource_names.has_key?(value)
187
- if ! title_prefix.empty?
188
- "#{title_prefix}_#{value}"
189
- else
190
- value
191
- end
192
-
193
- elsif groups.has_key?(value) && ! groups[value].empty?
194
- results = []
195
- groups[value].each do |resource_name|
196
- unless title_prefix.empty?
197
- resource_name = "#{title_prefix}_#{resource_name}"
198
- end
199
- results << resource_name
200
- end
201
- results
202
-
203
- else
204
- nil
205
- end
206
- end
207
-
208
- resource_refs.flatten.each do |ref|
209
- #dbg(ref, 'reference -> init')
210
- unless ref.nil?
211
- unless ref.is_a?(Puppet::Resource)
212
- ref = ref.match(title_regexp) ? Puppet::Resource.new(type_name, ref) : Puppet::Resource.new(ref)
213
- end
214
- #dbg(ref, 'reference -> final')
215
- values << ref unless ref.nil?
216
- end
217
- end
218
- return values[0] if allow_single && values.length == 1
219
- return values
220
- end
221
-
222
- #-----------------------------------------------------------------------------
223
- # Utilities
224
-
225
- def self.type_name(value) # Basically borrowed from Puppet (damn private methods!)
226
- return :main if value == :main
227
- return "Class" if value == "" or value.nil? or value.to_s.downcase == "component"
228
- return value.to_s.split("::").collect { |s| s.capitalize }.join("::")
229
- end
230
-
231
- #---
232
-
233
- def self.namevar(type_name, resource_name) # Basically borrowed from Puppet (damn private methods!)
234
- resource = Puppet::Resource.new(type_name.sub(/^\@?\@/, ''), resource_name)
235
-
236
- if resource.builtin_type? and type = resource.resource_type and type.key_attributes.length == 1
237
- return type.key_attributes.first.to_s
238
- else
239
- return 'name'
240
- end
241
- end
242
- end
243
- end
@@ -1,72 +0,0 @@
1
-
2
- module Coral
3
- module Template
4
- class Environment < Base
5
- #-----------------------------------------------------------------------------
6
- # Renderers
7
-
8
- def render(input)
9
- output = ''
10
-
11
- case input
12
- when Hash
13
- input.each do |name, value|
14
- output << render_assignment(name, value)
15
- end
16
- end
17
- return output
18
- end
19
-
20
- #-----------------------------------------------------------------------------
21
-
22
- def render_assignment(name, value)
23
- name = render_name(name)
24
- value = render_value(value)
25
-
26
- export = get(:export, true)
27
- export_text = export ? get(:export_text, 'export ') : ''
28
- operator = get(:operator, '=')
29
-
30
- return "#{export_text}#{name}#{operator}#{value}\n"
31
- end
32
-
33
- #---
34
-
35
- def render_name(name)
36
- prefix = get(:name_prefix, '')
37
- prefix_sep = prefix.empty? ? '' : get(:name_prefix_sep, '_')
38
-
39
- suffix = get(:name_suffix, '')
40
- suffix_sep = suffix.empty? ? '' : get(:name_suffix_sep, '')
41
-
42
- unless prefix.empty?
43
- name = "#{prefix}#{prefix_sep}#{name}#{suffix_sep}#{suffix}"
44
- end
45
- return name
46
- end
47
-
48
- #---
49
-
50
- def render_value(value)
51
- sep = get(:value_sep, ' ')
52
- quote = get(:quote, true)
53
-
54
- array_prefix = get(:array_prefix, '(')
55
- array_suffix = get(:array_suffix, ')')
56
-
57
- case value
58
- when Array
59
- values = []
60
- value.each do |item|
61
- values << quote ? "'#{item}'" : "#{item}"
62
- end
63
- value = "#{array_prefix}#{values.join(sep)}#{array_suffix}"
64
-
65
- when String
66
- value = quote ? "'#{value}'" : "#{value}"
67
- end
68
- return value
69
- end
70
- end
71
- end
72
- end
@@ -1,13 +0,0 @@
1
-
2
- module Coral
3
- module Template
4
- class JSON < Base
5
- #-----------------------------------------------------------------------------
6
- # Renderers
7
-
8
- def render(input)
9
- return Util::Data.to_json(input)
10
- end
11
- end
12
- end
13
- end
@@ -1,13 +0,0 @@
1
-
2
- module Coral
3
- module Template
4
- class Wrapper < Base
5
- #-----------------------------------------------------------------------------
6
- # Renderers
7
-
8
- def render(input)
9
- return get(:template_prefix, '') + input.to_s + get(:template_suffix, '')
10
- end
11
- end
12
- end
13
- end
@@ -1,13 +0,0 @@
1
-
2
- module Coral
3
- module Template
4
- class JSON < Base
5
- #-----------------------------------------------------------------------------
6
- # Renderers
7
-
8
- def render(input)
9
- return Util::Data.to_yaml(input)
10
- end
11
- end
12
- end
13
- end
@@ -1,92 +0,0 @@
1
-
2
- module Coral
3
- module Template
4
-
5
- #-----------------------------------------------------------------------------
6
- # General template utilities
7
-
8
- def self.instance(class_name, options = {}, defaults = {}, force = true)
9
- return Template::const_get(class_name).new(options, defaults, force)
10
- end
11
-
12
- #---
13
-
14
- def self.process(value)
15
- case value
16
- when String, Symbol
17
- return nil if Util::Data.undef?(value)
18
- return 'false' if value == false
19
- return 'true' if value == true
20
- return value.to_s if value.is_a?(Symbol)
21
-
22
- when Hash
23
- results = {}
24
- value.each do |key, item|
25
- result = process(item)
26
- unless result.nil?
27
- results[key] = result
28
- end
29
- value = results
30
- end
31
-
32
- when Array
33
- results = []
34
- value.each_with_index do |item, index|
35
- result = process(item)
36
- unless result.nil?
37
- results << result
38
- end
39
- end
40
- value = results
41
- end
42
- return value
43
- end
44
-
45
- #---
46
-
47
- def self.render(class_name, data, options = {})
48
- config = Config.ensure(options)
49
-
50
- normalize = config.get(:normalize_template, true)
51
- interpolate = config.get(:interpolate_template, true)
52
-
53
- #dbg(class_name, 'template engine name')
54
- #dbg(data, 'template data -> init')
55
-
56
- if normalize
57
- data = Config.normalize(data, nil, config)
58
- #dbg(data, 'template data -> post normalization')
59
- end
60
-
61
- if normalize && interpolate
62
- data = Util::Data.interpolate(data, data, config.options)
63
- #dbg(data, 'template data -> post interpolation')
64
- end
65
-
66
- engine = instance(class_name, config, {}, config.get(:force, true))
67
- #dbg(engine, 'template engine')
68
-
69
- output = engine.render(process(data))
70
- #dbg(output, 'template output')
71
-
72
- return output
73
- end
74
-
75
- #-----------------------------------------------------------------------------
76
- # Base template
77
-
78
- class Base < Config
79
- # All template classes should extend Base
80
-
81
- def intialize(options = {}, defaults = {}, force = true)
82
- super(options, defaults, force)
83
- end
84
-
85
- #---
86
-
87
- def render(input)
88
- return '' # Implement in sub classes!!
89
- end
90
- end
91
- end
92
- end