poolparty 0.0.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. data/History.txt +25 -0
  2. data/License.txt +20 -0
  3. data/Manifest.txt +203 -0
  4. data/PostInstall.txt +18 -0
  5. data/README.txt +21 -82
  6. data/Rakefile +25 -18
  7. data/bin/cloud +31 -0
  8. data/bin/cloud-add-keypair +23 -0
  9. data/bin/cloud-configure +31 -0
  10. data/bin/cloud-contract +27 -0
  11. data/bin/cloud-expand +27 -0
  12. data/bin/cloud-list +32 -0
  13. data/bin/cloud-maintain +36 -0
  14. data/bin/cloud-osxcopy +22 -0
  15. data/bin/cloud-provision +31 -0
  16. data/bin/cloud-refresh +26 -0
  17. data/bin/cloud-ssh +18 -0
  18. data/bin/cloud-start +32 -0
  19. data/bin/cloud-terminate +23 -0
  20. data/bin/pool +25 -27
  21. data/bin/pool-console +12 -0
  22. data/bin/pool-describe +9 -0
  23. data/bin/pool-list +28 -0
  24. data/bin/pool-provision +34 -0
  25. data/bin/pool-spec +17 -0
  26. data/bin/pool-start +32 -0
  27. data/bin/pool-start-monitor +1 -0
  28. data/config/hoe.rb +115 -0
  29. data/config/requirements.rb +15 -0
  30. data/examples/basic.rb +20 -0
  31. data/examples/plugin_without_plugin_directory.rb +13 -0
  32. data/examples/poolparty.rb +12 -0
  33. data/examples/with_apache_plugin.rb +22 -0
  34. data/generators/poolspec/USAGE +5 -0
  35. data/generators/poolspec/poolspec_generator.rb +65 -0
  36. data/generators/poolspec/templates/pool_spec_template.erb +9 -0
  37. data/lib/erlang/eb_server.erl +27 -0
  38. data/lib/poolparty.rb +56 -0
  39. data/lib/poolparty/base_packages/haproxy.rb +42 -0
  40. data/lib/poolparty/base_packages/heartbeat.rb +45 -0
  41. data/lib/poolparty/base_packages/poolparty.rb +36 -0
  42. data/lib/poolparty/base_packages/ruby.rb +43 -0
  43. data/lib/poolparty/core/array.rb +24 -0
  44. data/lib/{core → poolparty/core}/exception.rb +0 -0
  45. data/lib/poolparty/core/float.rb +13 -0
  46. data/lib/poolparty/core/hash.rb +29 -0
  47. data/lib/poolparty/core/kernel.rb +37 -0
  48. data/lib/{core → poolparty/core}/module.rb +18 -0
  49. data/lib/poolparty/core/my_open_struct.rb +18 -0
  50. data/lib/poolparty/core/object.rb +54 -0
  51. data/lib/poolparty/core/proc.rb +7 -0
  52. data/lib/poolparty/core/string.rb +72 -0
  53. data/lib/poolparty/core/symbol.rb +8 -0
  54. data/lib/{core → poolparty/core}/time.rb +15 -0
  55. data/lib/poolparty/exceptions/RemoteException.rb +12 -0
  56. data/lib/poolparty/exceptions/ResourceException.rb +7 -0
  57. data/lib/poolparty/exceptions/RuntimeException.rb +7 -0
  58. data/lib/poolparty/exceptions/SpecException.rb +7 -0
  59. data/lib/poolparty/exceptions/TemplateNotFound.rb +7 -0
  60. data/lib/poolparty/helpers/binary.rb +31 -0
  61. data/lib/poolparty/helpers/console.rb +30 -0
  62. data/lib/poolparty/helpers/display.rb +34 -0
  63. data/lib/poolparty/helpers/optioner.rb +64 -0
  64. data/lib/poolparty/helpers/provisioner_base.rb +250 -0
  65. data/lib/poolparty/helpers/provisioners/master.rb +136 -0
  66. data/lib/poolparty/helpers/provisioners/slave.rb +44 -0
  67. data/lib/poolparty/modules/cloud_resourcer.rb +89 -0
  68. data/lib/poolparty/modules/configurable.rb +34 -0
  69. data/lib/poolparty/modules/definable_resource.rb +59 -0
  70. data/lib/poolparty/modules/file_writer.rb +55 -0
  71. data/lib/poolparty/modules/method_missing_sugar.rb +53 -0
  72. data/lib/poolparty/modules/output.rb +13 -0
  73. data/lib/poolparty/modules/pretty_printer.rb +39 -0
  74. data/lib/{core/string.rb → poolparty/modules/s3_string.rb} +5 -22
  75. data/lib/{modules → poolparty/modules}/safe_instance.rb +0 -0
  76. data/lib/poolparty/monitors/base_monitor.rb +16 -0
  77. data/lib/poolparty/net/remote.rb +35 -0
  78. data/lib/poolparty/net/remote_bases/ec2.rb +148 -0
  79. data/lib/poolparty/net/remote_instance.rb +69 -0
  80. data/lib/poolparty/net/remoter.rb +224 -0
  81. data/lib/poolparty/net/remoter_base.rb +117 -0
  82. data/lib/poolparty/plugins/gem_package.rb +17 -0
  83. data/lib/poolparty/plugins/git.rb +41 -0
  84. data/lib/poolparty/plugins/line.rb +76 -0
  85. data/lib/poolparty/plugins/svn.rb +48 -0
  86. data/lib/poolparty/pool/base.rb +75 -0
  87. data/lib/poolparty/pool/cloud.rb +164 -0
  88. data/lib/poolparty/pool/custom_resource.rb +61 -0
  89. data/lib/poolparty/pool/loggable.rb +29 -0
  90. data/lib/poolparty/pool/plugin.rb +41 -0
  91. data/lib/poolparty/pool/plugin_model.rb +48 -0
  92. data/lib/poolparty/pool/pool.rb +55 -0
  93. data/lib/poolparty/pool/resource.rb +248 -0
  94. data/lib/poolparty/pool/resources/class_package.rb +64 -0
  95. data/lib/poolparty/pool/resources/conditional.rb +41 -0
  96. data/lib/poolparty/pool/resources/cron.rb +14 -0
  97. data/lib/poolparty/pool/resources/directory.rb +23 -0
  98. data/lib/poolparty/pool/resources/exec.rb +26 -0
  99. data/lib/poolparty/pool/resources/file.rb +23 -0
  100. data/lib/poolparty/pool/resources/gem.rb +14 -0
  101. data/lib/poolparty/pool/resources/host.rb +14 -0
  102. data/lib/poolparty/pool/resources/package.rb +14 -0
  103. data/lib/poolparty/pool/resources/remote_file.rb +22 -0
  104. data/lib/poolparty/pool/resources/service.rb +21 -0
  105. data/lib/poolparty/pool/resources/sshkey.rb +19 -0
  106. data/lib/poolparty/pool/resources/variable.rb +27 -0
  107. data/lib/poolparty/pool/script.rb +44 -0
  108. data/lib/poolparty/templates/authkeys +2 -0
  109. data/{config/monit/nginx.monit.conf → lib/poolparty/templates/cib.xml} +0 -0
  110. data/lib/poolparty/templates/fileserver.conf +4 -0
  111. data/lib/poolparty/templates/gem +25 -0
  112. data/{config/heartbeat.conf → lib/poolparty/templates/ha.cf} +3 -2
  113. data/{config → lib/poolparty/templates}/haproxy.conf +13 -6
  114. data/lib/poolparty/templates/namespaceauth.conf +19 -0
  115. data/lib/poolparty/templates/puppet.conf +17 -0
  116. data/lib/poolparty/version.rb +9 -0
  117. data/lib/poolpartycl.rb +3 -0
  118. data/poolparty.gemspec +56 -47
  119. data/script/destroy +14 -0
  120. data/script/generate +14 -0
  121. data/script/txt2html +82 -0
  122. data/setup.rb +1585 -0
  123. data/spec/poolparty/base_packages/haproxy_spec.rb +13 -0
  124. data/spec/poolparty/base_packages/heartbeat_spec.rb +30 -0
  125. data/spec/poolparty/bin/console_spec.rb +80 -0
  126. data/spec/poolparty/core/array_spec.rb +26 -0
  127. data/spec/poolparty/core/float.rb +13 -0
  128. data/spec/poolparty/core/hash_spec.rb +63 -0
  129. data/spec/poolparty/core/kernel_spec.rb +24 -0
  130. data/spec/poolparty/core/module_spec.rb +15 -0
  131. data/spec/poolparty/core/object_spec.rb +40 -0
  132. data/spec/poolparty/core/string_spec.rb +152 -0
  133. data/spec/poolparty/core/time_spec.rb +52 -0
  134. data/spec/poolparty/helpers/binary_spec.rb +26 -0
  135. data/spec/poolparty/helpers/display_spec.rb +13 -0
  136. data/spec/poolparty/helpers/optioner_spec.rb +39 -0
  137. data/spec/poolparty/helpers/provisioner_base_spec.rb +121 -0
  138. data/spec/poolparty/helpers/provisioners/master_spec.rb +54 -0
  139. data/spec/poolparty/helpers/provisioners/slave_spec.rb +28 -0
  140. data/spec/poolparty/modules/cloud_resourcer_spec.rb +135 -0
  141. data/spec/poolparty/modules/configurable_spec.rb +26 -0
  142. data/spec/poolparty/modules/definable_resource.rb +9 -0
  143. data/spec/poolparty/modules/file_writer_spec.rb +49 -0
  144. data/spec/poolparty/modules/s3_string_spec.rb +15 -0
  145. data/spec/poolparty/modules/tmp/willy/nilly.rb +1 -0
  146. data/spec/poolparty/net/remote_bases/ec2_spec.rb +92 -0
  147. data/spec/poolparty/net/remote_instance_spec.rb +70 -0
  148. data/spec/poolparty/net/remote_spec.rb +286 -0
  149. data/spec/poolparty/net/remoter_base_spec.rb +80 -0
  150. data/spec/poolparty/net/remoter_spec.rb +191 -0
  151. data/spec/poolparty/plugins/git_spec.rb +33 -0
  152. data/spec/poolparty/plugins/line_spec.rb +16 -0
  153. data/spec/poolparty/plugins/svn_spec.rb +16 -0
  154. data/spec/poolparty/pool/base_spec.rb +108 -0
  155. data/spec/poolparty/pool/cloud_spec.rb +299 -0
  156. data/spec/poolparty/pool/configurers/files/ruby_basic.rb +17 -0
  157. data/spec/poolparty/pool/configurers/files/ruby_plugins.rb +16 -0
  158. data/spec/poolparty/pool/configurers/ruby_spec.rb +58 -0
  159. data/spec/poolparty/pool/custom_resource_spec.rb +115 -0
  160. data/spec/poolparty/pool/example_spec.rb +112 -0
  161. data/spec/poolparty/pool/plugin_model_spec.rb +63 -0
  162. data/spec/poolparty/pool/plugin_spec.rb +85 -0
  163. data/spec/poolparty/pool/pool_spec.rb +83 -0
  164. data/spec/poolparty/pool/resource_spec.rb +224 -0
  165. data/spec/poolparty/pool/resources/class_package_spec.rb +84 -0
  166. data/spec/poolparty/pool/resources/conditional_spec.rb +38 -0
  167. data/spec/poolparty/pool/resources/cron_spec.rb +49 -0
  168. data/spec/poolparty/pool/resources/directory_spec.rb +40 -0
  169. data/spec/poolparty/pool/resources/exec_spec.rb +37 -0
  170. data/spec/poolparty/pool/resources/file_spec.rb +40 -0
  171. data/spec/poolparty/pool/resources/gem_spec.rb +16 -0
  172. data/spec/poolparty/pool/resources/host_spec.rb +28 -0
  173. data/spec/poolparty/pool/resources/package_spec.rb +44 -0
  174. data/spec/poolparty/pool/resources/remote_file_spec.rb +40 -0
  175. data/spec/poolparty/pool/resources/service_spec.rb +45 -0
  176. data/spec/poolparty/pool/resources/sshkey_spec.rb +48 -0
  177. data/spec/poolparty/pool/resources/variable_spec.rb +20 -0
  178. data/spec/poolparty/pool/script_spec.rb +51 -0
  179. data/spec/poolparty/pool/test_plugins/sshkey_test +2 -0
  180. data/{test/test_pool_party.rb → spec/poolparty/pool/test_plugins/virtual_host_template.erb} +0 -0
  181. data/spec/poolparty/pool/test_plugins/webserver.rb +46 -0
  182. data/spec/poolparty/poolparty_spec.rb +33 -0
  183. data/spec/poolparty/spec_helper.rb +120 -0
  184. data/tasks/cloud.rake +57 -0
  185. data/tasks/deployment.rake +34 -0
  186. data/tasks/development.rake +78 -0
  187. data/tasks/ec2.rake +20 -0
  188. data/tasks/environment.rake +7 -0
  189. data/tasks/instance.rake +63 -0
  190. data/tasks/server.rake +42 -0
  191. data/tasks/spec.rake +17 -0
  192. data/tasks/website.rake +17 -0
  193. data/test/test_generator_helper.rb +29 -0
  194. data/test/test_helper.rb +2 -0
  195. data/test/test_pool_spec_generator.rb +47 -0
  196. data/test/test_poolparty.rb +11 -0
  197. data/test_manifest.pp +538 -0
  198. data/website/index.html +107 -0
  199. data/website/index.txt +95 -0
  200. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  201. data/website/stylesheets/code.css +29 -0
  202. data/website/stylesheets/screen.css +147 -0
  203. data/website/template.html.erb +49 -0
  204. metadata +282 -101
  205. data/CHANGELOG +0 -4
  206. data/Manifest +0 -55
  207. data/bin/instance +0 -54
  208. data/config/config.yml +0 -23
  209. data/config/create_proxy_ami.sh +0 -582
  210. data/config/heartbeat_authkeys.conf +0 -2
  211. data/config/monit.conf +0 -8
  212. data/config/monit/haproxy.monit.conf +0 -7
  213. data/config/nginx.conf +0 -24
  214. data/lib/core/array.rb +0 -10
  215. data/lib/core/kernel.rb +0 -9
  216. data/lib/core/object.rb +0 -14
  217. data/lib/modules/callback.rb +0 -55
  218. data/lib/modules/ec2_wrapper.rb +0 -74
  219. data/lib/pool_party.rb +0 -69
  220. data/lib/pool_party/application.rb +0 -133
  221. data/lib/pool_party/init.rb +0 -4
  222. data/lib/pool_party/master.rb +0 -189
  223. data/lib/pool_party/monitors.rb +0 -13
  224. data/lib/pool_party/monitors/cpu.rb +0 -18
  225. data/lib/pool_party/monitors/memory.rb +0 -21
  226. data/lib/pool_party/monitors/web.rb +0 -18
  227. data/lib/pool_party/optioner.rb +0 -16
  228. data/lib/pool_party/os.rb +0 -11
  229. data/lib/pool_party/os/ubuntu.rb +0 -78
  230. data/lib/pool_party/remote_instance.rb +0 -180
  231. data/lib/pool_party/remoting.rb +0 -112
  232. data/lib/pool_party/scheduler.rb +0 -93
  233. data/lib/pool_party/tasks.rb +0 -220
  234. data/lib/s3/s3_object_store_folders.rb +0 -44
  235. data/spec/application_spec.rb +0 -32
  236. data/spec/callback_spec.rb +0 -65
  237. data/spec/helpers/ec2_mock.rb +0 -56
  238. data/spec/helpers/remote_instance_mock.rb +0 -11
  239. data/spec/kernel_spec.rb +0 -11
  240. data/spec/master_spec.rb +0 -147
  241. data/spec/monitor_spec.rb +0 -16
  242. data/spec/optioner_spec.rb +0 -22
  243. data/spec/poolparty_spec.rb +0 -8
  244. data/spec/remote_instance_spec.rb +0 -29
  245. data/spec/remoting_spec.rb +0 -75
  246. data/spec/spec_helper.rb +0 -38
  247. data/spec/string_spec.rb +0 -28
@@ -0,0 +1,64 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ # Wrap all the resources into a class package from
5
+ def classpackage_with_self(parent=self, &block)
6
+ @cp = PoolParty::Resources::Classpackage.new(parent.options, parent, &block)
7
+ @cp.instance_eval {@resources = parent.resources}
8
+ parent.instance_eval {@resources = nil}
9
+ @cp
10
+ end
11
+
12
+ class Classpackage < Resource
13
+
14
+ default_options({
15
+ :name => nil
16
+ })
17
+
18
+ def initialize(opts={}, parent=self, &block)
19
+ # Take the options of the parents
20
+ set_parent(parent, false) if parent
21
+ set_vars_from_options(opts) unless opts.empty?
22
+ self.instance_eval &block if block
23
+ # store_block(&block)
24
+ loaded
25
+ end
26
+
27
+ def to_string
28
+ returning String.new do |output|
29
+ output << "# #{name.sanitize}"
30
+ output << "\nclass #{name.sanitize} {\n"
31
+ output << resources_string_from_resources(resources)
32
+ output << "\n}\n"
33
+ end
34
+ end
35
+
36
+ def include_string
37
+ "include #{name.sanitize}"
38
+ end
39
+
40
+ def name(*args)
41
+ args.empty? ? (@name || parent.name) : @name ||= args.first
42
+ end
43
+
44
+ end
45
+
46
+ def resources_string_from_resources(resources, prev="\t")
47
+ @variables = resources.extract! {|name,resource| name == :variable}
48
+ returning Array.new do |str|
49
+ unless @variables.empty?
50
+ str << "\n# Variables \n"
51
+ @variables.each do |name, variable|
52
+ str << variable.to_string("#{prev}")
53
+ end
54
+ end
55
+
56
+ resources.each do |type, resource|
57
+ str << "\n#{prev*2}# #{type}\n"
58
+ str << resource.to_string("#{prev*2}")
59
+ end
60
+ end.join("\n")
61
+ end
62
+
63
+ end
64
+ end
@@ -0,0 +1,41 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ def execute_if(attr_s="$hostname", str="", parent=self, &block)
5
+ parent = parent.is_a?(PoolParty::Cloud::Cloud) ? parent : parent.parent
6
+ opts = {:attribute => attr_s, :equal => str}
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
11
+ end
12
+
13
+ class Conditional < Resource
14
+
15
+ def initialize(opts={}, parent=self, &block)
16
+ name "#{opts[:attribute]} == #{opts[:equal]}"
17
+ attribute opts[:attribute]
18
+ equal opts[:equal]
19
+ super
20
+ end
21
+
22
+ # This way, we only get other resources, and not the conditional
23
+ # itself as a resource
24
+ def virtual_resource?
25
+ true
26
+ end
27
+
28
+ def to_string(prev="")
29
+ returning Array.new do |output|
30
+ output << "# #{name.sanitize}"
31
+ output << "case #{attribute} {"
32
+ output << "#{equal} : { #{resources_string_from_resources(resources)} }"
33
+ output << "default : {}"
34
+ output << "}"
35
+ end.join("\n")
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,14 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class Cron < Resource
5
+
6
+ default_options({
7
+ :command => nil,
8
+ :user => "root"
9
+ })
10
+
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,23 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class Directory < Resource
5
+
6
+ default_options({
7
+ :ensure => "directory",
8
+ :mode => 644,
9
+ :owner => "#{Base.user}"
10
+ })
11
+
12
+ def class_type_name
13
+ "file"
14
+ end
15
+
16
+ def present
17
+ 'directory'
18
+ end
19
+
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,26 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class Exec < Resource
5
+
6
+ default_options({
7
+ :path => "/usr/bin:/bin:/usr/local/bin:$PATH"
8
+ })
9
+
10
+
11
+ def disallowed_options
12
+ [:ensure, :name]
13
+ end
14
+
15
+ def key
16
+ name || command
17
+ end
18
+
19
+ def present
20
+ "running"
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,23 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class File < Resource
5
+
6
+ default_options({
7
+ :ensure => "file",
8
+ :mode => 644,
9
+ :owner => "#{Base.user}"
10
+ })
11
+
12
+ def disallowed_options
13
+ [:name, :template]
14
+ end
15
+
16
+ def source(arg=nil)
17
+ arg ? options[:source] = arg : "#{Base.fileserver_base}/#{::File.basename(name)}"
18
+ end
19
+
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ def gem(opts={}, parent=self, &block)
5
+ add_resource(:package, opts.merge({
6
+ :provider => "gem",
7
+ :requires => "Package[rubygems]"
8
+ }), parent, &block)
9
+ end
10
+
11
+ add_has_and_does_not_have_methods_for(:gem)
12
+
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class Host < Resource
5
+
6
+ default_options({
7
+ :name => "$hostname",
8
+ :ip => "$ipaddress"
9
+ })
10
+
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class Package < Resource
5
+
6
+ default_options({
7
+ :ensure => "installed",
8
+ :name => nil
9
+ })
10
+
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,22 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class Remotefile < File
5
+ # Not really my favorite of lines
6
+ include PoolParty::Configurable
7
+
8
+ default_options({
9
+ :ensure => "present",
10
+ :mode => 644,
11
+ :owner => "#{Base.user}",
12
+ :source => nil
13
+ })
14
+
15
+ def class_type_name
16
+ "file"
17
+ end
18
+
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class Service < Resource
5
+
6
+ default_options({
7
+ :ensure => "running",
8
+ :name => nil,
9
+ :enable => true
10
+ })
11
+
12
+ def present
13
+ "running"
14
+ end
15
+ def absent
16
+ "stopping"
17
+ end
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class Sshkey < Resource
5
+
6
+ default_options({
7
+ :command => nil,
8
+ :key => "ALONGSTRINGOFDIGITS",
9
+ :target => "~/.ssh/poolparty_id_rsa"
10
+ })
11
+
12
+ def keyfile=(file)
13
+ keyfile open(file).read
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,27 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class Variable < Resource
5
+
6
+ default_options({
7
+ :name => "var",
8
+ :value => ""
9
+ })
10
+
11
+ def to_string(prev="\t")
12
+ "$#{name} = #{value_string}"
13
+ end
14
+
15
+ def value_string
16
+ case value.class.to_s
17
+ when "Array"
18
+ "[ #{value.map{|a| "'#{a}'"}.join(", ")} ]"
19
+ else
20
+ "'#{value}'"
21
+ end
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,44 @@
1
+ module PoolParty
2
+
3
+ class Script
4
+
5
+ def self.inflate_file(file)
6
+ inflate open(file).read
7
+ end
8
+
9
+ def self.inflate(script, file="__SCRIPT__")
10
+ apool = new
11
+ apool.instance_eval script, file
12
+ apool.inflate
13
+ end
14
+
15
+ def inflate
16
+ pools.map {|name,pool| pool.inflate } unless pools.empty?
17
+ end
18
+
19
+ def self.to_ruby(opts={},&blk)
20
+ blk.to_ruby(opts)
21
+ end
22
+
23
+ def self.for_save_string
24
+ returning Array.new do |out|
25
+ clouds.each do |name, cl|
26
+ with_cloud(cl) do
27
+ out << <<-EOE
28
+ cloud :#{name} do
29
+ #{cl.minimum_runnable_options.map {|o| "\t#{o} \"#{cl.send o}\""}.join("\n")}
30
+ end
31
+ EOE
32
+ end
33
+ end
34
+ end.join("\n")
35
+ end
36
+
37
+ def self.save!(to_file=true)
38
+ write_to_file_in_storage_directory(Base.default_specfile_name, for_save_string) if to_file
39
+ for_save_string
40
+ end
41
+
42
+ end
43
+
44
+ end
@@ -0,0 +1,2 @@
1
+ auth 1
2
+ 1 md5 PasswordForpoolpartyClusterApplicationButItIsOnlyADefault
@@ -0,0 +1,4 @@
1
+ [files]
2
+ path /var/poolparty/tmp
3
+ allow *
4
+ allow *.internal
@@ -0,0 +1,25 @@
1
+ #! /usr/bin/ruby1.8
2
+ #--
3
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ # All rights reserved.
5
+ # See LICENSE.txt for permissions.
6
+ # /usr/bin/gem is broken, so... have to use this until it is fixed
7
+ #++
8
+
9
+
10
+ require "rubygems"
11
+ require "rubygems/gem_runner"
12
+ Gem.manage_gems
13
+
14
+ required_version = Gem::Version::Requirement.new(">= 1.8.0")
15
+ unless required_version.satisfied_by?(Gem::Version.new(RUBY_VERSION))
16
+ puts "Expected Ruby Version #{required_version}, was #{RUBY_VERSION}"
17
+ exit(1)
18
+ end
19
+
20
+ # We need to preserve the original ARGV to use for passing gem options
21
+ # to source gems. If there is a -- in the line, strip all options after
22
+ # it...its for the source building process.
23
+ args = !ARGV.include?("--") ? ARGV.clone : ARGV[0...ARGV.index("--")]
24
+
25
+ Gem::GemRunner.new.run(args)
@@ -1,9 +1,10 @@
1
+ # Haproxy conf
1
2
  keepalive 2 # Time inbetween heartbeats
2
3
  deadtime 32 # wait 32 seconds before declaring dead
3
4
  warntime 16 # issue a warning halfway through
4
5
  initdead 60 # Don't boot instances between 60 seconds of each other
5
- baud 19200 #
6
6
  auto_failback on
7
7
  use_logd yes
8
+ crm on
8
9
 
9
- :nodes
10
+ node <%= ha_nodenames.join(" ") %>
@@ -3,7 +3,8 @@ global
3
3
  maxconn 4096 # total max connections (dependent on ulimit)
4
4
  nbproc 1 # number of processing cores
5
5
  user haproxy
6
- chroot /var/run/haproxy
6
+ group haproxy
7
+ chroot /var/run/haproxy
7
8
  log 127.0.0.1 local0 debug
8
9
  pidfile /var/run/haproxy.pid
9
10
 
@@ -17,13 +18,19 @@ defaults
17
18
  option httplog
18
19
  option httpclose # disable keepalive (HAProxy does not yet support the HTTP keep-alive mode)
19
20
  option forwardfor # enable insert of X-Forwarded-For headers
20
- retries 3
21
+ retries 3
22
+ option redispatch
21
23
 
22
24
  balance roundrobin # each server is used in turns, according to assigned weight
23
25
 
24
-
25
- stats uri /haproxy
26
+ # Stats
27
+ stats enable
28
+ stats uri /poolparty
26
29
  stats realm Statistics\ for\ PoolParty
27
30
 
28
- listen web_proxy 0.0.0.0::host_port
29
- :servers
31
+ listen <%= name_haproxy %>
32
+ bind 0.0.0.0:<%= ports_haproxy.join(",0.0.0.0:") %>
33
+ <% node_ips_haproxy.each_with_index do |ip, index| -%>
34
+ cookie POOLPARTYPARTY
35
+ server node<%= index %> <%= ip %>:<%= forwarding_port %> weight 1 check cookie
36
+ <% end -%>