auser-poolparty 0.2.16 → 0.2.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. data/Manifest.txt +72 -7
  2. data/PostInstall.txt +1 -1
  3. data/Rakefile +11 -0
  4. data/bin/cloud-provision +6 -10
  5. data/bin/server-build-messenger +20 -0
  6. data/bin/server-fire-cmd +0 -2
  7. data/bin/server-list-responding +24 -0
  8. data/bin/server-start-master +4 -9
  9. data/bin/server-start-node +7 -6
  10. data/lib/erlang/messenger/Emakefile +1 -0
  11. data/lib/erlang/messenger/Rakefile +29 -20
  12. data/lib/erlang/messenger/ebin/master_app.beam +0 -0
  13. data/lib/erlang/messenger/ebin/node_app.beam +0 -0
  14. data/lib/erlang/messenger/ebin/packager.app +19 -0
  15. data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
  16. data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
  17. data/lib/erlang/messenger/ebin/pm_event_handler.beam +0 -0
  18. data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
  19. data/lib/erlang/messenger/ebin/pm_master_rel-0.1.rel +1 -7
  20. data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
  21. data/lib/erlang/messenger/ebin/pm_node.beam +0 -0
  22. data/lib/erlang/messenger/ebin/pm_node_rel-0.1.rel +1 -7
  23. data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
  24. data/lib/erlang/messenger/ebin/pm_packager.beam +0 -0
  25. data/lib/erlang/messenger/ebin/utils.beam +0 -0
  26. data/lib/erlang/messenger/lib/eunit/AUTHORS +2 -0
  27. data/lib/erlang/messenger/lib/eunit/CHANGELOG +14 -0
  28. data/lib/erlang/messenger/lib/eunit/COPYING +504 -0
  29. data/lib/erlang/messenger/lib/eunit/Makefile +28 -0
  30. data/lib/erlang/messenger/lib/eunit/NOTES +276 -0
  31. data/lib/erlang/messenger/lib/eunit/README +3 -0
  32. data/lib/erlang/messenger/lib/eunit/doc/edoc-info +3 -0
  33. data/lib/erlang/messenger/lib/eunit/doc/erlang.png +0 -0
  34. data/lib/erlang/messenger/lib/eunit/doc/eunit.html +172 -0
  35. data/lib/erlang/messenger/lib/eunit/doc/index.html +17 -0
  36. data/lib/erlang/messenger/lib/eunit/doc/modules-frame.html +12 -0
  37. data/lib/erlang/messenger/lib/eunit/doc/overview-summary.html +984 -0
  38. data/lib/erlang/messenger/lib/eunit/doc/overview.edoc +980 -0
  39. data/lib/erlang/messenger/lib/eunit/doc/packages-frame.html +11 -0
  40. data/lib/erlang/messenger/lib/eunit/doc/stylesheet.css +55 -0
  41. data/lib/erlang/messenger/lib/eunit/ebin/autoload.beam +0 -0
  42. data/lib/erlang/messenger/lib/eunit/ebin/code_monitor.beam +0 -0
  43. data/lib/erlang/messenger/lib/eunit/ebin/eunit.app +21 -0
  44. data/lib/erlang/messenger/lib/eunit/ebin/eunit.appup +1 -0
  45. data/lib/erlang/messenger/lib/eunit/ebin/eunit.beam +0 -0
  46. data/lib/erlang/messenger/lib/eunit/ebin/eunit_autoexport.beam +0 -0
  47. data/lib/erlang/messenger/lib/eunit/ebin/eunit_data.beam +0 -0
  48. data/lib/erlang/messenger/lib/eunit/ebin/eunit_lib.beam +0 -0
  49. data/lib/erlang/messenger/lib/eunit/ebin/eunit_proc.beam +0 -0
  50. data/lib/erlang/messenger/lib/eunit/ebin/eunit_serial.beam +0 -0
  51. data/lib/erlang/messenger/lib/eunit/ebin/eunit_server.beam +0 -0
  52. data/lib/erlang/messenger/lib/eunit/ebin/eunit_striptests.beam +0 -0
  53. data/lib/erlang/messenger/lib/eunit/ebin/eunit_test.beam +0 -0
  54. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tests.beam +0 -0
  55. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tty.beam +0 -0
  56. data/lib/erlang/messenger/lib/eunit/ebin/file_monitor.beam +0 -0
  57. data/lib/erlang/messenger/lib/eunit/examples/eunit_examples.erl +339 -0
  58. data/lib/erlang/messenger/lib/eunit/examples/fib.erl +19 -0
  59. data/lib/erlang/messenger/lib/eunit/examples/tests.txt +1 -0
  60. data/lib/erlang/messenger/lib/eunit/include/eunit.hrl +313 -0
  61. data/lib/erlang/messenger/lib/eunit/src/Makefile +46 -0
  62. data/lib/erlang/messenger/lib/eunit/src/autoload.erl +388 -0
  63. data/lib/erlang/messenger/lib/eunit/src/code_monitor.erl +243 -0
  64. data/lib/erlang/messenger/lib/eunit/src/eunit.app.src +21 -0
  65. data/lib/erlang/messenger/lib/eunit/src/eunit.appup.src +1 -0
  66. data/lib/erlang/messenger/lib/eunit/src/eunit.erl +196 -0
  67. data/lib/erlang/messenger/lib/eunit/src/eunit_autoexport.erl +102 -0
  68. data/lib/erlang/messenger/lib/eunit/src/eunit_data.erl +798 -0
  69. data/lib/erlang/messenger/lib/eunit/src/eunit_internal.hrl +48 -0
  70. data/lib/erlang/messenger/lib/eunit/src/eunit_lib.erl +682 -0
  71. data/lib/erlang/messenger/lib/eunit/src/eunit_proc.erl +552 -0
  72. data/lib/erlang/messenger/lib/eunit/src/eunit_serial.erl +157 -0
  73. data/lib/erlang/messenger/lib/eunit/src/eunit_server.erl +340 -0
  74. data/lib/erlang/messenger/lib/eunit/src/eunit_striptests.erl +64 -0
  75. data/lib/erlang/messenger/lib/eunit/src/eunit_test.erl +334 -0
  76. data/lib/erlang/messenger/lib/eunit/src/eunit_tests.erl +45 -0
  77. data/lib/erlang/messenger/lib/eunit/src/eunit_tty.erl +272 -0
  78. data/lib/erlang/messenger/lib/eunit/src/file_monitor.erl +409 -0
  79. data/lib/erlang/messenger/lib/eunit/sys.config +9 -0
  80. data/lib/erlang/messenger/lib/eunit/vsn.mk +1 -0
  81. data/lib/erlang/messenger/pm_master_rel-0.1.boot +0 -0
  82. data/lib/erlang/messenger/pm_master_rel-0.1.script +75 -2
  83. data/lib/erlang/messenger/pm_node_rel-0.1.boot +0 -0
  84. data/lib/erlang/messenger/pm_node_rel-0.1.script +75 -2
  85. data/lib/erlang/messenger/src/pm_client.erl +8 -3
  86. data/lib/erlang/messenger/src/pm_cluster.erl +32 -9
  87. data/lib/erlang/messenger/src/pm_master.erl +10 -11
  88. data/lib/erlang/messenger/src/pm_node.erl +2 -3
  89. data/lib/erlang/messenger/src/pm_packager.erl +73 -0
  90. data/lib/erlang/messenger/src/utils.erl +3 -10
  91. data/lib/poolparty/base_packages/heartbeat.rb +9 -9
  92. data/lib/poolparty/base_packages/poolparty.rb +16 -10
  93. data/lib/poolparty/config/allowed_commands.yml +1 -0
  94. data/lib/poolparty/core/object.rb +8 -0
  95. data/lib/poolparty/exceptions/UnacceptableCommand.rb +5 -0
  96. data/lib/poolparty/helpers/messenger.rb +29 -0
  97. data/lib/poolparty/helpers/provisioner_base.rb +7 -7
  98. data/lib/poolparty/helpers/provisioners/master.rb +3 -7
  99. data/lib/poolparty/helpers/provisioners/slave.rb +1 -0
  100. data/lib/poolparty/modules/cloud_resourcer.rb +7 -5
  101. data/lib/poolparty/modules/configurable.rb +1 -1
  102. data/lib/poolparty/modules/method_missing_sugar.rb +6 -1
  103. data/lib/poolparty/modules/pretty_printer.rb +1 -0
  104. data/lib/poolparty/modules/resourcing_dsl.rb +2 -1
  105. data/lib/poolparty/monitors/monitors/cpu_monitor.rb +1 -1
  106. data/lib/poolparty/net/remoter.rb +3 -1
  107. data/lib/poolparty/plugins/git.rb +3 -3
  108. data/lib/poolparty/pool/base.rb +7 -2
  109. data/lib/poolparty/pool/cloud.rb +3 -3
  110. data/lib/poolparty/pool/resource.rb +38 -24
  111. data/lib/poolparty/pool/resources/class_package.rb +2 -2
  112. data/lib/poolparty/pool/resources/conditional.rb +8 -4
  113. data/lib/poolparty/pool/resources/{gem.rb → gem_package.rb} +0 -0
  114. data/lib/poolparty/pool/resources/package.rb +8 -1
  115. data/lib/poolparty/version.rb +1 -1
  116. data/lib/poolparty.rb +1 -1
  117. data/poolparty.gemspec +476 -61
  118. data/spec/poolparty/core/object_spec.rb +20 -0
  119. data/spec/poolparty/helpers/messenger_spec.rb +14 -0
  120. data/spec/poolparty/helpers/provisioners/master_spec.rb +2 -2
  121. data/spec/poolparty/net/remoter_spec.rb +1 -1
  122. data/spec/poolparty/plugins/git_spec.rb +26 -19
  123. data/spec/poolparty/pool/base_spec.rb +20 -2
  124. data/spec/poolparty/pool/cloud_spec.rb +256 -249
  125. data/spec/poolparty/pool/custom_resource_spec.rb +6 -1
  126. data/spec/poolparty/pool/plugin_spec.rb +71 -65
  127. data/spec/poolparty/pool/resource_spec.rb +314 -237
  128. data/spec/poolparty/pool/resources/class_package_spec.rb +71 -66
  129. data/spec/poolparty/pool/resources/conditional_spec.rb +30 -26
  130. data/spec/poolparty/pool/resources/gem_spec.rb +18 -14
  131. data/spec/poolparty/pool/resources/variable_spec.rb +1 -1
  132. data/spec/poolparty/pool/script_spec.rb +46 -37
  133. data/spec/poolparty/spec_helper.rb +4 -0
  134. data/tasks/cloud.rake +0 -54
  135. data/tasks/development.rake +11 -14
  136. data/tasks/ec2.rake +10 -17
  137. data/tasks/instance.rake +0 -61
  138. data/website/index.html +1 -1
  139. metadata +83 -10
@@ -18,23 +18,36 @@ module PoolParty
18
18
  end
19
19
 
20
20
  def add_resource(type, opts={}, parent=self, &block)
21
- resource = get_resource(type, opts[:name], parent)
22
- if resource
23
- resource
21
+ if in_resources?(type, opts[:name])
22
+ get_resource(type, opts[:name], parent)
24
23
  else
25
- returning "PoolParty::Resources::#{type.to_s.camelize}".classify.constantize.new(opts, parent, &block) do |o|
26
- resource(type) << o
24
+ returning "PoolParty::Resources::#{type.to_s.camelize}".classify.constantize.new(opts, parent, &block) do |o|
25
+ store_into_global_resource_store(o)
26
+ resource(type) << o
27
27
  end
28
28
  end
29
+ end
30
+ def get_resource(ty, key, parent=self)
31
+ resource(ty).select {|r| r.key == key }.first || get_from_global_resource_store(ty, key)
29
32
  end
30
-
31
- def get_resource(type, key, parent=self)
32
- resource(type).select {|resource| resource.key == key }.first
33
+ def in_resources?(type, key, parent=self)
34
+ !(get_resource(type, key) && in_global_resource_store?(type, key)).nil?
35
+ end
36
+ def global_resources_store
37
+ $global_resources ||= []
38
+ end
39
+ def store_into_global_resource_store(r)
40
+ global_resources_store << r unless in_global_resource_store?(r.class_name_sym, r.key)
41
+ end
42
+ def get_from_global_resource_store(ty, key)
43
+ global_resources_store.select {|r| r if r.same_resources_of(ty, key) }.first
44
+ end
45
+ def in_global_resource_store?(ty, key)
46
+ !get_from_global_resource_store(ty, key).nil?
33
47
  end
34
-
35
48
  #:nodoc:
36
49
  def reset_resources!
37
- @resources = nil
50
+ $global_resources = @resources = nil
38
51
  end
39
52
 
40
53
  # def resources_string(pre="")
@@ -66,6 +79,9 @@ module PoolParty
66
79
  def #{lowercase_class_name}(opts={}, parent=self, &blk)
67
80
  add_resource(:#{lowercase_class_name}, opts, parent, &blk)
68
81
  end
82
+ def get_#{lowercase_class_name}(name)
83
+ get_resource(:#{lowercase_class_name}, name) if in_resources?(:#{lowercase_class_name}, name)
84
+ end
69
85
  EOE
70
86
  PoolParty::Resources.module_eval method
71
87
  PoolParty::Resources.add_has_and_does_not_have_methods_for(lowercase_class_name.to_sym)
@@ -102,18 +118,7 @@ module PoolParty
102
118
  requires parent.to_s if @parent.is_a?(PoolParty::Resources::Resource) && printable? && @parent.printable?
103
119
  end
104
120
  end
105
-
106
- # def requirement_tree
107
- # p = @parent
108
- # returning Array.new do |arr|
109
- # arr << p.to_s
110
- # while p && p != self && p.is_a?(PoolParty::Resources::Resource) && p.requires
111
- # arr << p.requires
112
- # p = p.parent
113
- # end
114
- # end.flatten.uniq
115
- # end
116
-
121
+
117
122
  # Stub, so you can create virtual resources
118
123
  # This is called after the resource is initialized
119
124
  # with the options given to it in the init-block
@@ -123,14 +128,19 @@ module PoolParty
123
128
  # DSL Overriders
124
129
  include PoolParty::ResourcingDsl
125
130
 
131
+ def same_resources_of(t, k)
132
+ key == k && class_name_sym == t && !duplicatable?
133
+ end
134
+ def duplicatable?
135
+ false
136
+ end
126
137
  # This way we can subclass resources without worry
127
138
  def class_type_name
128
139
  self.class.to_s.top_level_class
129
- end
140
+ end
130
141
  def self.custom_function(str)
131
142
  custom_functions << str
132
143
  end
133
-
134
144
  def self.custom_function(str)
135
145
  custom_functions << str
136
146
  end
@@ -163,6 +173,10 @@ module PoolParty
163
173
  def printable?
164
174
  true
165
175
  end
176
+ # Private method just for resource retrievling purposes
177
+ def class_name_sym
178
+ self.class.to_s.top_level_class.downcase.to_sym
179
+ end
166
180
  # We want to gather the options, but if the option sent is nil
167
181
  # then we want to override the option value by sending the key as
168
182
  # a method so that we can override this if necessary.
@@ -12,7 +12,7 @@ module PoolParty
12
12
  class Classpackage < Resource
13
13
 
14
14
  default_options({
15
- :name => nil
15
+ :name => "custom"
16
16
  })
17
17
 
18
18
  def initialize(opts={}, parent=self, &block)
@@ -38,7 +38,7 @@ module PoolParty
38
38
  end
39
39
 
40
40
  def name(*args)
41
- args.empty? ? (@name || parent.name) : @name ||= args.first
41
+ args.empty? ? (@name || parent.name || "custom_#{Time.now.to_i}") : @name ||= args.first
42
42
  end
43
43
 
44
44
  end
@@ -2,12 +2,12 @@ module PoolParty
2
2
  module Resources
3
3
 
4
4
  def execute_if(attr_s="$hostname", str="", parent=self, &block)
5
- parent = parent.is_a?(PoolParty::Cloud::Cloud) ? parent : parent.parent
5
+ # parent = parent.is_a?(PoolParty::Cloud::Cloud) ? parent : parent.parent
6
6
  opts = {:attribute => attr_s, :equal => str}
7
7
  options = parent.respond_to?(:options) ? parent.options.merge!(opts) : opts
8
- @c = PoolParty::Resources::Conditional.new(options, parent, &block)
9
- parent.instance_eval {add_resource(:conditional, options, parent, &block) }
10
- @c
8
+ # @c = PoolParty::Resources::Conditional.new(options, parent, &block)
9
+ parent.add_resource(:conditional, options, parent, &block)
10
+ # @c
11
11
  end
12
12
 
13
13
  class Conditional < Resource
@@ -29,6 +29,10 @@ module PoolParty
29
29
  false
30
30
  end
31
31
 
32
+ def duplicatable?
33
+ false
34
+ end
35
+
32
36
  def to_string(pre="")
33
37
  returning Array.new do |output|
34
38
  output << "# #{name.sanitize}"
@@ -6,7 +6,14 @@ module PoolParty
6
6
  default_options({
7
7
  :ensure => "installed",
8
8
  :name => nil
9
- })
9
+ })
10
+
11
+ def present
12
+ "installed"
13
+ end
14
+ def absent
15
+ "absent"
16
+ end
10
17
 
11
18
  end
12
19
 
@@ -2,7 +2,7 @@ module PoolParty
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 2
5
- TINY = 18
5
+ TINY = 20
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/poolparty.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'rubygems'
2
2
 
3
3
  # Load required gems
4
- %w(active_support open4 ftools logging ruby2ruby).each do |lib|
4
+ %w(activesupport open4 ftools logging ruby2ruby).each do |lib|
5
5
  begin
6
6
  require lib
7
7
  rescue Exception => e