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,58 +0,0 @@
1
-
2
- module Coral
3
- class Core < Config
4
-
5
- #-----------------------------------------------------------------------------
6
- # Properties
7
-
8
- @@ui = Util::Interface.new("coral")
9
-
10
- #-----------------------------------------------------------------------------
11
- # Constructor / Destructor
12
-
13
- def initialize(data = {}, defaults = {}, force = true)
14
- super(data, defaults, force)
15
-
16
- @ui = Util::Interface.new(export)
17
- end
18
-
19
- #---
20
-
21
- def inspect
22
- "#<#{self.class}: >"
23
- end
24
-
25
- #-----------------------------------------------------------------------------
26
- # Accessor / Modifiers
27
-
28
- attr_accessor :ui
29
-
30
- #---
31
-
32
- def self.ui
33
- return @@ui
34
- end
35
-
36
- #---
37
-
38
- def self.logger
39
- return @@ui.logger
40
- end
41
-
42
- #---
43
-
44
- def self.logger=logger
45
- self.class.logger = logger
46
- end
47
-
48
- #---
49
-
50
- def logger
51
- return self.class.logger
52
- end
53
-
54
- #-----------------------------------------------------------------------------
55
- # General utilities
56
-
57
- end
58
- end
@@ -1,98 +0,0 @@
1
- module Coral
2
- class PuppetEvent < Event
3
-
4
- #-----------------------------------------------------------------------------
5
- # Properties
6
-
7
- TYPE = :puppet
8
-
9
- #-----------------------------------------------------------------------------
10
- # Constructor / Destructor
11
-
12
- def initialize(options = {})
13
- options[:type] = TYPE
14
-
15
- super(options)
16
-
17
- if options.has_key?(:string)
18
- items = options[:string].split(':')
19
- self.element = items[0]
20
- self.operation = items[1]
21
- self.message = items[2]
22
- end
23
- end
24
-
25
- #-----------------------------------------------------------------------------
26
- # Property accessors / modifiers
27
-
28
- def element
29
- return property(:element, '', :string)
30
- end
31
-
32
- #---
33
-
34
- def element=element
35
- set_property(:element, string(element))
36
- end
37
-
38
- #---
39
-
40
- def operation
41
- return property(:operation, '', :string)
42
- end
43
-
44
- #---
45
-
46
- def operation=operation
47
- set_property(:operation, string(operation))
48
- end
49
-
50
- #--
51
-
52
- def message
53
- return property(:message, '', :string)
54
- end
55
-
56
- #---
57
-
58
- def message=message
59
- set_property(:message, string(message))
60
- end
61
-
62
- #-----------------------------------------------------------------------------
63
- # Import / Export
64
-
65
- def export
66
- return "#{type}:#{element}:#{operation}:#{message}"
67
- end
68
-
69
- #-----------------------------------------------------------------------------
70
- # Event handling
71
-
72
- def check(source)
73
- if source.match(/notice:\s+(.+?):\s+(.+)\s*/i)
74
- source_element = $1
75
- source_operation = ''
76
- source_message = $2
77
-
78
- source_elements = source_element.split('/')
79
- source_operation = source_elements.pop.strip unless source_elements.last.match(/[\[\]]/)
80
-
81
- if source_operation
82
- source_element = source_elements.join('/').strip
83
-
84
- logger.debug("#{source_element} includes: #{element} -- " + ( source_element.include?(element) ? 'true' : 'false' ))
85
- logger.debug("#{source_operation} is: #{operation} -- " + ( source_operation == operation ? 'true' : 'false' ))
86
- logger.debug("#{source_message} includes: #{message} -- " + ( source_message.include?(message) ? 'true' : 'false' ))
87
-
88
- if source_element.include?(element) && source_operation == operation && source_message.include?(message)
89
- logger.debug("MATCH! -> #{element} - #{operation} - #{message}")
90
- return true
91
- end
92
- end
93
- end
94
- logger.debug("nothing -> #{element} - #{operation} - #{message}")
95
- return false
96
- end
97
- end
98
- end
@@ -1,55 +0,0 @@
1
-
2
- module Coral
3
- class RegexpEvent < Event
4
-
5
- #-----------------------------------------------------------------------------
6
- # Properties
7
-
8
- TYPE = :regexp
9
-
10
- #-----------------------------------------------------------------------------
11
- # Constructor / Destructor
12
-
13
- def initialize(options = {})
14
- options[:type] = TYPE
15
-
16
- super(options)
17
-
18
- if options.has_key?(:string)
19
- self.pattern = options[:string]
20
- end
21
- end
22
-
23
- #-----------------------------------------------------------------------------
24
- # Property accessors / modifiers
25
-
26
- def pattern
27
- return property(:pattern, '', :string)
28
- end
29
-
30
- #---
31
-
32
- def pattern=pattern
33
- set_property(:pattern, string(pattern))
34
- end
35
-
36
- #-----------------------------------------------------------------------------
37
- # Import / Export
38
-
39
- def export
40
- return "#{type}:#{pattern}"
41
- end
42
-
43
- #-----------------------------------------------------------------------------
44
- # Event handling
45
-
46
- def check(source)
47
- if source.match(/#{pattern}/)
48
- logger.debug("MATCH! -> #{pattern} matched #{source}")
49
- return true
50
- end
51
- logger.debug("nothing -> #{pattern} - #{source}")
52
- return false
53
- end
54
- end
55
- end
@@ -1,170 +0,0 @@
1
-
2
- module Coral
3
- class Event < Core
4
-
5
- #-----------------------------------------------------------------------------
6
- # Constructor / Destructor
7
-
8
- def self.instance!(data = {}, build_hash = false, keep_array = false)
9
- group = ( build_hash ? {} : [] )
10
- events = build_info(data)
11
-
12
- index = 1
13
- events.each do |info|
14
- type = info[:type]
15
-
16
- if type && ! type.empty?
17
- event = ( block_given? ? yield(type, info) : create(type, info) )
18
-
19
- if event
20
- if build_hash
21
- group[index] = event
22
- else
23
- group << event
24
- end
25
- end
26
- end
27
- index += 1
28
- end
29
- if ! build_hash && events.length == 1 && ! keep_array
30
- return group.shift
31
- end
32
- return group
33
- end
34
-
35
- #---
36
-
37
- def self.instance(options = {}, build_hash = false, keep_array = false)
38
- return instance!(options, build_hash, keep_array)
39
- end
40
-
41
- #---
42
-
43
- def initialize(options = {})
44
- config = Config.ensure(options)
45
-
46
- super(config)
47
-
48
- @name = config.get(:name, '')
49
- @delegate = config.get(:delegate, nil)
50
- @properties = config.options
51
- end
52
-
53
- #-----------------------------------------------------------------------------
54
- # Property accessors / modifiers
55
-
56
- attr_accessor :name
57
-
58
- #---
59
-
60
- def type
61
- return string(@properties[:type])
62
- end
63
-
64
- #---
65
-
66
- def set_properties(data)
67
- return @delegate.set_properties(data) if @delegate
68
-
69
- @properties = hash(data)
70
- return self
71
- end
72
-
73
- #---
74
-
75
- def property(name, default = '', format = false)
76
- name = name.to_sym
77
-
78
- property = default
79
- property = filter(@properties[name], format) if @properties.has_key?(name)
80
- return property
81
- end
82
-
83
- #---
84
-
85
- def set_property(name, value)
86
- return @delegate.set_property(name, value) if @delegate
87
-
88
- @properties[name] = value
89
- return self
90
- end
91
-
92
- #-----------------------------------------------------------------------------
93
- # Import / Export
94
-
95
- def export
96
- return type
97
- end
98
-
99
- #-----------------------------------------------------------------------------
100
- # Event handling
101
-
102
- def check(source)
103
- return false
104
- end
105
-
106
- #-----------------------------------------------------------------------------
107
- # Utilities
108
-
109
- def self.build_info!(data = {})
110
- events = []
111
-
112
- if data.is_a?(String)
113
- data = data.split(/\s*,\s*/)
114
- elsif data.is_a?(Hash)
115
- data = [ data ]
116
- end
117
-
118
- if data.is_a?(Array)
119
- data.each do |element|
120
- event = {}
121
-
122
- if block_given?
123
- event = yield(element)
124
- else
125
- case element
126
- when String
127
- event = split_event_string(element)
128
-
129
- when Hash
130
- event = element
131
- end
132
- end
133
-
134
- unless event.empty?
135
- events << event
136
- end
137
- end
138
- end
139
- return events
140
- end
141
-
142
- #---
143
-
144
- def self.build_info(data = {})
145
- return build_info!(data)
146
- end
147
-
148
- #-----------------------------------------------------------------------------
149
-
150
- def self.create(type, info)
151
- event = nil
152
- begin
153
- event = Module.const_get("Coral").const_get("#{type.capitalize}Event").new(info)
154
- rescue
155
- end
156
- return event
157
- end
158
-
159
- #-----------------------------------------------------------------------------
160
-
161
- def self.split_event_string(data)
162
- info = {}
163
- components = data.split(':')
164
- info[:type] = components.shift
165
- info[:string] = components.join(':')
166
-
167
- return info
168
- end
169
- end
170
- end
@@ -1,52 +0,0 @@
1
-
2
- # Should be included via extend
3
- #
4
- # extend Mixin::ConfigCollection
5
- #
6
-
7
- module Coral
8
- module Mixin
9
- module ConfigCollection
10
- #-----------------------------------------------------------------------------
11
- # Configuration collection interface
12
-
13
- def all_properties
14
- return Config::Collection.all
15
- end
16
-
17
- #---
18
-
19
- def get_property(name)
20
- return Config::Collection.get(name)
21
- end
22
-
23
- #---
24
-
25
- def set_property(name, value)
26
- Config::Collection.set(name, value)
27
- return self
28
- end
29
-
30
- #---
31
-
32
- def delete_property(name)
33
- Config::Collection.delete(name)
34
- return self
35
- end
36
-
37
- #---
38
-
39
- def clear_properties
40
- Config::Collection.clear
41
- return self
42
- end
43
-
44
- #---
45
-
46
- def save_properties
47
- Config::Collection.save
48
- return self
49
- end
50
- end
51
- end
52
- end
@@ -1,51 +0,0 @@
1
-
2
- # Should be included via extend
3
- #
4
- # extend Mixin::ConfigOps
5
- #
6
-
7
- module Coral
8
- module Mixin
9
- module ConfigOps
10
- #-----------------------------------------------------------------------------
11
- # Parsing
12
-
13
- def parse(statement, options = {})
14
- config = Config.ensure(options)
15
-
16
- # statement = 'common->php::apache::memory_limit = 32M'
17
- # statement = 'identity -> test -> users::user[admin][shell]'
18
- # statement = 'servers->development->dev.loc->facts[server_environment]=vagrant'
19
- # statement = 'cloud->settings[debug][puppet][options] = ["--debug"]'
20
-
21
- reference, new_value = statement.split(/\=/)
22
- new_value = new_value.join('=').strip if new_value && new_value.is_a?(Array)
23
-
24
- config_elements = reference.gsub(/\s+/, '').split(/\-\>/)
25
- property = config_elements.pop
26
- config_file = config_elements.pop
27
-
28
- if config_directory = config.get(:directory, nil)
29
- config_path = File.join(repo.directory, config_directory, *config_elements)
30
- else
31
- config_path = File.join(repo.directory, *config_elements)
32
- end
33
-
34
- return nil unless property && config_file
35
-
36
- config_file = "#{config_file}." + config.get(:ext, 'json')
37
- property = property.gsub(/\]$/, '').split(/\]?\[/)
38
- data = open(config_path, config_file, config)
39
-
40
- return {
41
- :path => config_path,
42
- :file => config_file,
43
- :property => property,
44
- :conf => data,
45
- :current_value => (data ? data.get(property) : nil),
46
- :new_value => eval(new_value)
47
- }
48
- end
49
- end
50
- end
51
- end