poolparty 1.4.0 → 1.4.1

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 (201) hide show
  1. data/VERSION.yml +1 -1
  2. data/bin/cloud-contract +1 -0
  3. data/bin/cloud-expand +1 -2
  4. data/bin/cloud-reboot +0 -2
  5. data/bin/cloud-rsync +28 -0
  6. data/bin/cloud-show +2 -1
  7. data/examples/chef_cloud.rb +4 -9
  8. data/examples/simple.rb +1 -1
  9. data/lib/cloud_providers/cloud_provider.rb +5 -15
  10. data/lib/cloud_providers/connections.rb +1 -9
  11. data/lib/cloud_providers/ec2/ec2.rb +47 -39
  12. data/lib/cloud_providers/ec2/ec2_instance.rb +5 -1
  13. data/lib/cloud_providers/ec2/helpers/authorize.rb +2 -2
  14. data/lib/core/object.rb +23 -1
  15. data/lib/poolparty/cloud.rb +16 -9
  16. data/vendor/gems/xml-simple/lib/xmlsimple.rb +1028 -0
  17. metadata +184 -189
  18. data/README.rdoc +0 -117
  19. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/README.rdoc +0 -9
  20. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/attributes/collectd.rb +0 -3
  21. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/files/ubuntu/collectd.default +0 -17
  22. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/metadata.rb +0 -6
  23. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/recipes/default.rb +0 -62
  24. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/templates/default/collectd.conf.erb +0 -107
  25. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/templates/default/collection.conf.erb +0 -2
  26. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/templates/default/collection3.conf.erb +0 -4
  27. /data/examples/chef_cloud/{chef-repo → chef_repo}/README +0 -0
  28. /data/examples/chef_cloud/{chef-repo → chef_repo}/Rakefile +0 -0
  29. /data/examples/chef_cloud/{chef-repo → chef_repo}/certificates/README +0 -0
  30. /data/examples/chef_cloud/{chef-repo → chef_repo}/config/client.rb.example +0 -0
  31. /data/examples/chef_cloud/{chef-repo → chef_repo}/config/rake.rb +0 -0
  32. /data/examples/chef_cloud/{chef-repo → chef_repo}/config/server.rb.example +0 -0
  33. /data/examples/chef_cloud/{chef-repo → chef_repo}/config/solo.rb.example +0 -0
  34. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/README +0 -0
  35. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/README.rdoc +0 -0
  36. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/attributes/apache.rb +0 -0
  37. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/definitions/apache_conf.rb +0 -0
  38. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/definitions/apache_module.rb +0 -0
  39. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/definitions/apache_site.rb +0 -0
  40. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/definitions/web_app.rb +0 -0
  41. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/files/default/apache2_module_conf_generate.pl +0 -0
  42. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/metadata.json +0 -0
  43. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/metadata.rb +0 -0
  44. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/default.rb +0 -0
  45. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/god_monitor.rb +0 -0
  46. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_alias.rb +0 -0
  47. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_auth_basic.rb +0 -0
  48. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_auth_digest.rb +0 -0
  49. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_authn_file.rb +0 -0
  50. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_authnz_ldap.rb +0 -0
  51. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_authz_default.rb +0 -0
  52. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_authz_groupfile.rb +0 -0
  53. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_authz_host.rb +0 -0
  54. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_authz_user.rb +0 -0
  55. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_autoindex.rb +0 -0
  56. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_cgi.rb +0 -0
  57. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_dav.rb +0 -0
  58. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_dav_svn.rb +0 -0
  59. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_deflate.rb +0 -0
  60. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_dir.rb +0 -0
  61. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_env.rb +0 -0
  62. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_expires.rb +0 -0
  63. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_fcgid.rb +0 -0
  64. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_headers.rb +0 -0
  65. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_ldap.rb +0 -0
  66. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_log_config.rb +0 -0
  67. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_mime.rb +0 -0
  68. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_negotiation.rb +0 -0
  69. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_php5.rb +0 -0
  70. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_proxy.rb +0 -0
  71. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_proxy_ajp.rb +0 -0
  72. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_proxy_balancer.rb +0 -0
  73. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_proxy_connect.rb +0 -0
  74. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_proxy_http.rb +0 -0
  75. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_python.rb +0 -0
  76. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_rails.rb +0 -0
  77. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_rewrite.rb +0 -0
  78. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_setenvif.rb +0 -0
  79. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_ssl.rb +0 -0
  80. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/recipes/mod_status.rb +0 -0
  81. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/a2dismod.erb +0 -0
  82. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/a2dissite.erb +0 -0
  83. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/a2enmod.erb +0 -0
  84. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/a2ensite.erb +0 -0
  85. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/apache2.conf.erb +0 -0
  86. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/apache2.god.erb +0 -0
  87. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/charset.erb +0 -0
  88. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/default-site.erb +0 -0
  89. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/mods/README +0 -0
  90. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/mods/alias.conf.erb +0 -0
  91. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/mods/autoindex.conf.erb +0 -0
  92. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/mods/deflate.conf.erb +0 -0
  93. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/mods/dir.conf.erb +0 -0
  94. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/mods/fcgid.conf.erb +0 -0
  95. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/mods/mime.conf.erb +0 -0
  96. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/mods/negotiation.conf.erb +0 -0
  97. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/mods/proxy.conf.erb +0 -0
  98. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/mods/setenvif.conf.erb +0 -0
  99. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/mods/ssl.conf.erb +0 -0
  100. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/mods/status.conf.erb +0 -0
  101. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/port_apache.erb +0 -0
  102. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/ports.conf.erb +0 -0
  103. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/security.erb +0 -0
  104. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apache2/templates/default/web_app.conf.erb +0 -0
  105. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apt/files/default/apt-cacher +0 -0
  106. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apt/files/default/apt-cacher.conf +0 -0
  107. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apt/files/default/apt-proxy-v2.conf +0 -0
  108. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apt/metadata.json +0 -0
  109. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apt/metadata.rb +0 -0
  110. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apt/recipes/cacher.rb +0 -0
  111. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apt/recipes/default.rb +0 -0
  112. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/apt/recipes/proxy.rb +0 -0
  113. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/README.rdoc +0 -0
  114. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/attributes/bootstrap.rb +0 -0
  115. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/metadata.json +0 -0
  116. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/metadata.rb +0 -0
  117. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/recipes/client.rb +0 -0
  118. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/recipes/default.rb +0 -0
  119. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/recipes/server.rb +0 -0
  120. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/templates/default/client.rb.erb +0 -0
  121. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/templates/default/server.rb.erb +0 -0
  122. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/templates/default/sv-chef-client-log-run.erb +0 -0
  123. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/templates/default/sv-chef-client-run.erb +0 -0
  124. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/templates/default/sv-chef-indexer-log-run.erb +0 -0
  125. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/templates/default/sv-chef-indexer-run.erb +0 -0
  126. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/templates/default/sv-chef-server-log-run.erb +0 -0
  127. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/bootstrap/templates/default/sv-chef-server-run.erb +0 -0
  128. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/chef/README.rdoc +0 -0
  129. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/chef/attributes/chef.rb +0 -0
  130. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/chef/metadata.json +0 -0
  131. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/chef/metadata.rb +0 -0
  132. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/chef/recipes/client.rb +0 -0
  133. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/chef/recipes/default.rb +0 -0
  134. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/chef/recipes/server.rb +0 -0
  135. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/chef/recipes/server_proxy.rb +0 -0
  136. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/chef/templates/default/chef_server.conf.erb +0 -0
  137. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/chef/templates/default/client.rb.erb +0 -0
  138. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/chef/templates/default/server.rb.erb +0 -0
  139. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ec2/attributes/ec2_metadata.rb +0 -0
  140. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ec2/attributes/ec2_recipe_options.rb +0 -0
  141. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ec2/metadata.rb +0 -0
  142. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ec2/recipes/default.rb +0 -0
  143. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/README.rdoc +0 -0
  144. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/attributes/default.rb +0 -0
  145. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/metadata.rb +0 -0
  146. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/recipes/default.rb +0 -0
  147. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/recipes/gmetad.rb +0 -0
  148. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/recipes/monitor_sshd.rb +0 -0
  149. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/recipes/monitor_watson.rb +0 -0
  150. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/recipes/web.rb +0 -0
  151. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/templates/default/bin/gmetad.erb +0 -0
  152. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/templates/default/bin/gmond.erb +0 -0
  153. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/templates/default/bin/monitors/sshd_ganglia.sh.erb +0 -0
  154. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/templates/default/bin/monitors/watson_channels.sh.erb +0 -0
  155. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/templates/default/ganglia-web-conf.php.erb +0 -0
  156. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/templates/default/gmetad.conf.erb +0 -0
  157. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/templates/default/gmond.conf.erb +0 -0
  158. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ganglia/templates/default/jaunty.sources.list.erb +0 -0
  159. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ntp/attributes/ntp.rb +0 -0
  160. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ntp/metadata.json +0 -0
  161. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ntp/metadata.rb +0 -0
  162. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ntp/recipes/default.rb +0 -0
  163. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/ntp/templates/default/ntp.conf.erb +0 -0
  164. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/README.rdoc +0 -0
  165. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/attributes/rsyslog.rb +0 -0
  166. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/files/default/rsyslog.default +0 -0
  167. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/files/ubuntu-8.04/rsyslog.default +0 -0
  168. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/files/ubuntu-9.10/rsyslog.default +0 -0
  169. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/metadata.json +0 -0
  170. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/metadata.rb +0 -0
  171. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/recipes/client.rb +0 -0
  172. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/recipes/default.rb +0 -0
  173. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/recipes/server.rb +0 -0
  174. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/templates/default/remote.conf.erb +0 -0
  175. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/templates/default/rsyslog.conf.erb +0 -0
  176. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/templates/default/server.conf.erb +0 -0
  177. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/templates/ubuntu-9.10/50-default.conf.erb +0 -0
  178. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/templates/ubuntu-9.10/remote.conf.erb +0 -0
  179. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/rsyslog/templates/ubuntu-9.10/server.conf.erb +0 -0
  180. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/runit/attributes/sv_bin.rb +0 -0
  181. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/runit/definitions/runit_service.rb +0 -0
  182. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/runit/files/ubuntu-6.10/runsvdir +0 -0
  183. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/runit/files/ubuntu-7.04/runsvdir +0 -0
  184. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/runit/files/ubuntu-7.10/runsvdir +0 -0
  185. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/runit/files/ubuntu-8.04/runsvdir +0 -0
  186. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/runit/metadata.json +0 -0
  187. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/runit/metadata.rb +0 -0
  188. /data/examples/chef_cloud/{chef-repo → chef_repo}/cookbooks/runit/recipes/default.rb +0 -0
  189. /data/examples/chef_cloud/{chef-repo → chef_repo}/roles/README +0 -0
  190. /data/examples/chef_cloud/{chef-repo → chef_repo}/roles/chef-upgrade.rb +0 -0
  191. /data/examples/chef_cloud/{chef-repo → chef_repo}/site-cookbooks/README +0 -0
  192. /data/examples/chef_cloud/{chef-repo → chef_repo}/site-cookbooks/hosts/attributes/hosts.rb +0 -0
  193. /data/examples/chef_cloud/{chef-repo → chef_repo}/site-cookbooks/hosts/metadata.rb +0 -0
  194. /data/examples/chef_cloud/{chef-repo → chef_repo}/site-cookbooks/hosts/recipes/default.rb +0 -0
  195. /data/examples/chef_cloud/{chef-repo → chef_repo}/site-cookbooks/hosts/templates/default/hosts.erb +0 -0
  196. /data/examples/chef_cloud/{chef-repo → chef_repo}/site-cookbooks/sysadmin/recipes/default.rb +0 -0
  197. /data/examples/chef_cloud/{chef-repo → chef_repo}/site-cookbooks/ubuntu/metadata.json +0 -0
  198. /data/examples/chef_cloud/{chef-repo → chef_repo}/site-cookbooks/ubuntu/metadata.rb +0 -0
  199. /data/examples/chef_cloud/{chef-repo → chef_repo}/site-cookbooks/ubuntu/recipes/default.rb +0 -0
  200. /data/examples/chef_cloud/{chef-repo → chef_repo}/site-cookbooks/ubuntu/templates/default/sources.list.erb +0 -0
  201. /data/examples/chef_cloud/{sample → user_data} +0 -0
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 4
4
- :patch: 0
4
+ :patch: 1
data/bin/cloud-contract CHANGED
@@ -21,6 +21,7 @@ EOS
21
21
 
22
22
  msg = [
23
23
  "Contracting cloud #{cld.name} (#{cld.keypair}) by 1",
24
+ "#{cld.nodes.size} running instances (#{cld.minimum_instances} - #{cld.maximum_instances})",
24
25
  " node: #{node_to_terminate.public_ip}"
25
26
  ]
26
27
 
data/bin/cloud-expand CHANGED
@@ -23,8 +23,7 @@ EOS
23
23
 
24
24
  print_msg(msg)
25
25
 
26
- inst = cld.expand
27
- inst.bootstrap!
26
+ inst = cld.expand_by(1)
28
27
 
29
28
  msg = [
30
29
  "Your cloud has expanded by node: #{inst.public_ip}"
data/bin/cloud-reboot CHANGED
@@ -11,13 +11,11 @@ Usage: #{$0} #{all_options_string}
11
11
  Cycle through nodes in the cloud and wait for the autoscaler to reboot
12
12
  EOS
13
13
 
14
- opt :configure, "Configure the cloud before rebooting", :type => :bool, :default => false
15
14
  short_desc "Cycle the instances"
16
15
 
17
16
  run do |command|
18
17
 
19
18
  @loaded_clouds.each do |cld|
20
- cld.run if command[:configure]
21
19
  cld.reboot!
22
20
  end
23
21
 
data/bin/cloud-rsync ADDED
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
+ require "poolparty"
4
+
5
+ require 'git-style-binary/command'
6
+
7
+ GitStyleBinary.command do
8
+ banner <<-EOS
9
+ Usage: #{$0} #{all_options_string}
10
+
11
+ ssh into an instance of the cloud
12
+ EOS
13
+
14
+ short_desc "ssh into an instance of the cloud"
15
+ opt :to, "To this directory", :default => "~"
16
+
17
+ run do |command|
18
+ cloud = @loaded_clouds.first
19
+ dir = command.argv.pop
20
+
21
+ if !cloud.nodes.empty?
22
+ cloud.rsync(dir, command[:to])
23
+ else
24
+ puts "No running instances can be found"
25
+ end
26
+
27
+ end
28
+ end
data/bin/cloud-show CHANGED
@@ -30,7 +30,8 @@ EOS
30
30
  "Running on: #{cld.cloud_provider.name}",
31
31
  "Keypair: #{cld.keypair.basename}",
32
32
  "Security group: #{cld.cloud_provider.security_group_names}",
33
- "Availability zones: #{cld.cloud_provider.availability_zones}"
33
+ "Availability zones: #{cld.cloud_provider.availability_zones}",
34
+ "User: #{cld.user}"
34
35
  ]
35
36
 
36
37
  if cld.load_balancers.size > 0
@@ -1,20 +1,15 @@
1
- $:.unshift("#{File.dirname(__FILE__)}/../lib")
2
- require "rubygems"
3
- require "poolparty"
4
1
 
5
2
  pool "poolparty" do
6
3
 
7
4
  cloud "chef" do
8
5
  instances 1
9
6
  using :ec2
10
- chef_repo "basic/chef-repo"
7
+ chef_repo File.dirname(__FILE__)+"/chef_cloud/chef_repo"
11
8
  recipe "apache2"
9
+ recipe "rsyslog::server"
10
+ recipe "collectd"
12
11
  chef_attributes :apache2 => {:listen_ports => ["80", "8080"]}
13
- elastic_ip "192.129.218.49", "192.129.204.191"
14
- user_data <<-EOE
15
- #!/bin/bash -x
16
- echo "New User Data! ho."
17
- EOE
12
+ user_data open(File.dirname(__FILE__)+"/chef_cloud/user_data").read
18
13
  security_group do
19
14
  authorize :from_port => "22", :to_port => "22"
20
15
  authorize :from_port => "80", :to_port => "80"
data/examples/simple.rb CHANGED
@@ -18,7 +18,7 @@ pool "poolparty" do
18
18
  # {:port=>3000..3006, :protocol=>'tcp' :group=>'monitor' },
19
19
  # {:port=>53, :protocol=>'udp' }
20
20
  # ]
21
- security_group do
21
+ security_group "dummy-test-security-group" do
22
22
  %w(22 80 443 8642).each {|port| authorize :from_port => port, :to_port => port}
23
23
  end
24
24
  load_balancer do
@@ -5,6 +5,11 @@ module CloudProviders
5
5
  class CloudProvider
6
6
  include Dslify
7
7
 
8
+ default_options(
9
+ :image_id => 'ami-ed46a784',
10
+ :user => "root"
11
+ )
12
+
8
13
  attr_reader :name, :init_opts
9
14
 
10
15
  def initialize(name, init_opts={}, &block)
@@ -55,20 +60,5 @@ module CloudProviders
55
60
  init_opts.has_key?(:cloud) ? init_opts[:cloud] : nil
56
61
  end
57
62
 
58
- def progress_bar_until(msg=nil, &block)
59
- print "#{msg}" if msg
60
- loop do
61
- if block.call
62
- break
63
- else
64
- $stdout.print "."
65
- $stdout.flush
66
- sleep 1
67
- end
68
- end
69
- print " OK" if msg
70
- puts "" if msg
71
- end
72
-
73
63
  end
74
64
  end
@@ -2,15 +2,7 @@ require "open3"
2
2
 
3
3
  module CloudProviders
4
4
  module Connections
5
-
6
- def user(n=nil)
7
- if n.nil?
8
- @user ||= 'root'
9
- else
10
- @user = n
11
- end
12
- end
13
-
5
+
14
6
  # hostname or ip to use when running remote commands
15
7
  def host(n=nil)
16
8
  if n.nil?
@@ -54,7 +54,6 @@ module CloudProviders
54
54
  end
55
55
 
56
56
  default_options(
57
- :image_id => 'ami-ed46a784',
58
57
  :instance_type => 'm1.small',
59
58
  :addressing_type => "public",
60
59
  :availability_zones => ["us-east-1a"],
@@ -73,7 +72,6 @@ module CloudProviders
73
72
  :kernel_id => nil,
74
73
  :ramdisk_id => nil,
75
74
  :block_device_mappings => nil,
76
- :elastic_ips => [], # An array of the elastic ips
77
75
  :ebs_volumes => [] # The volume id of an ebs volume # TODO: ensure this is consistent with :block_device_mappings
78
76
  )
79
77
 
@@ -83,8 +81,8 @@ module CloudProviders
83
81
  self.send(type).each {|ele| ele.create! }
84
82
  end
85
83
  end
86
-
87
- def run
84
+
85
+ def run
88
86
  puts " for cloud: #{cloud.name}"
89
87
  puts " minimum_instances: #{minimum_instances}"
90
88
  puts " maximum_instances: #{maximum_instances}"
@@ -120,27 +118,6 @@ module CloudProviders
120
118
  end
121
119
  reset!
122
120
  # ELASTIC IPS
123
- unless _elastic_ips.empty?
124
- unused_elastic_ip_addresses = ElasticIp.unused_elastic_ips(self).map {|i| i.public_ip }
125
- used_elastic_ip_addresses = ElasticIp.elastic_ips(self).map {|i| i.public_ip }
126
-
127
- elastic_ip_objects = ElasticIp.unused_elastic_ips(self).select {|ip_obj| _elastic_ips.include?(ip_obj.public_ip) }
128
-
129
- assignee_nodes = nodes.select {|n| !ElasticIp.elastic_ips(self).include?(n.public_ip) }
130
-
131
- elastic_ip_objects.each_with_index do |eip, idx|
132
- # Only get the nodes that do not have elastic ips associated with them
133
- begin
134
- if assignee_nodes[idx]
135
- puts "Assigning elastic ip: #{eip.public_ip} to node: #{assignee_nodes[idx].instance_id}"
136
- ec2.associate_address(:instance_id => assignee_nodes[idx].instance_id, :public_ip => eip.public_ip)
137
- end
138
- rescue Exception => e
139
- p [:error, e.inspect]
140
- end
141
- reset!
142
- end
143
- end
144
121
  else
145
122
  autoscalers.each do |a|
146
123
  puts " autoscaler: #{a.name}"
@@ -156,9 +133,7 @@ module CloudProviders
156
133
  end
157
134
  end
158
135
 
159
- reset!
160
- from_ports = security_groups.map {|a| a.authorizes.map {|t| t.from_port.to_i }.flatten }.flatten
161
-
136
+ from_ports = security_groups.map {|a| a.authorizes.map {|t| t.from_port.to_i }.flatten }.flatten
162
137
  if from_ports.include?(22)
163
138
  progress_bar_until("Waiting for the instances to be accessible by ssh") do
164
139
  running_nodes = nodes.select {|n| n.running? }
@@ -169,6 +144,7 @@ module CloudProviders
169
144
  end
170
145
  end
171
146
 
147
+ assign_elastic_ips
172
148
  end
173
149
 
174
150
  def teardown
@@ -191,8 +167,16 @@ module CloudProviders
191
167
  :base64_encoded => true,
192
168
  :cloud => cloud
193
169
  })
170
+ progress_bar_until("Waiting for node to launch...") do
171
+ wait_for_node(e)
172
+ end
173
+ all_nodes.select {|n| n.instance_id == e.instance_id }.first
174
+ end
175
+
176
+ def wait_for_node(instance)
194
177
  reset!
195
- e
178
+ inst = all_nodes.select {|n| n.instance_id == instance.instance_id }.first
179
+ inst.running?
196
180
  end
197
181
 
198
182
  def contract_by(num=1)
@@ -224,6 +208,30 @@ module CloudProviders
224
208
  end
225
209
  end
226
210
 
211
+ def assign_elastic_ips
212
+ unless elastic_ips.empty?
213
+ unused_elastic_ip_addresses = ElasticIp.unused_elastic_ips(self).map {|i| i.public_ip }
214
+ used_elastic_ip_addresses = ElasticIp.elastic_ips(self).map {|i| i.public_ip }
215
+
216
+ elastic_ip_objects = ElasticIp.unused_elastic_ips(self).select {|ip_obj| elastic_ips.include?(ip_obj.public_ip) }
217
+
218
+ assignee_nodes = nodes.select {|n| !ElasticIp.elastic_ips(self).include?(n.public_ip) }
219
+
220
+ elastic_ip_objects.each_with_index do |eip, idx|
221
+ # Only get the nodes that do not have elastic ips associated with them
222
+ begin
223
+ if assignee_nodes[idx]
224
+ puts "Assigning elastic ip: #{eip.public_ip} to node: #{assignee_nodes[idx].instance_id}"
225
+ ec2.associate_address(:instance_id => assignee_nodes[idx].instance_id, :public_ip => eip.public_ip)
226
+ end
227
+ rescue Exception => e
228
+ p [:error, e.inspect]
229
+ end
230
+ reset!
231
+ end
232
+ end
233
+ end
234
+
227
235
  def nodes
228
236
  all_nodes.select {|i| i.in_service? }#describe_instances.select {|i| i.in_service? && security_groups.include?(i.security_groups) }
229
237
  end
@@ -251,17 +259,17 @@ module CloudProviders
251
259
 
252
260
  # Extras!
253
261
 
254
- def load_balancer(name=cloud.proper_name, o={}, &block)
255
- load_balancers << ElasticLoadBalancer.new(name, sub_opts.merge(o || {}), &block)
262
+ def load_balancer(given_name=cloud.proper_name, o={}, &block)
263
+ load_balancers << ElasticLoadBalancer.new(given_name, sub_opts.merge(o || {}), &block)
256
264
  end
257
- def autoscale(name=cloud.proper_name, o={}, &block)
258
- autoscalers << ElasticAutoScaler.new(name, sub_opts.merge(o || {}), &block)
265
+ def autoscale(given_name=cloud.proper_name, o={}, &block)
266
+ autoscalers << ElasticAutoScaler.new(given_name, sub_opts.merge(o || {}), &block)
259
267
  end
260
- def security_group(name=cloud.proper_name, o={}, &block)
261
- security_groups << SecurityGroup.new(name, sub_opts.merge(o || {}), &block)
268
+ def security_group(given_name=cloud.proper_name, o={}, &block)
269
+ security_groups << SecurityGroup.new(given_name, sub_opts.merge(o || {}), &block)
262
270
  end
263
271
  def elastic_ip(*ips)
264
- ips.each {|ip| _elastic_ips << ip}
272
+ ips.each {|ip| elastic_ips << ip}
265
273
  end
266
274
 
267
275
  # Proxy to the raw Grempe amazon-aws @ec2 instance
@@ -290,6 +298,9 @@ module CloudProviders
290
298
  def autoscalers
291
299
  @autoscalers ||= []
292
300
  end
301
+ def elastic_ips
302
+ @elastic_ips ||= []
303
+ end
293
304
 
294
305
  # Clear the cache
295
306
  def reset!
@@ -301,9 +312,6 @@ module CloudProviders
301
312
  def sub_opts
302
313
  dsl_options.merge(:parent => self, :cloud => cloud)
303
314
  end
304
- def _elastic_ips
305
- @_elastic_ips ||= []
306
- end
307
315
  def generate_keypair(n=nil)
308
316
  puts "[EC2] generate_keypair is called with #{default_keypair_path/n}"
309
317
  begin
@@ -41,7 +41,7 @@ module CloudProviders
41
41
  end
42
42
 
43
43
  def run!
44
- cloud_provider.ec2.run_instances(:image_id => image_id,
44
+ r = cloud_provider.ec2.run_instances(:image_id => image_id,
45
45
  :min_count => min_count,
46
46
  :max_count => max_count,
47
47
  :key_name => keypair.basename,
@@ -50,6 +50,10 @@ module CloudProviders
50
50
  :instance_type => instance_type,
51
51
  :availability_zone => availability_zone,
52
52
  :base64_encoded => true)
53
+ r.instancesSet.item.map do |i|
54
+ inst_options = i.merge(r.merge(:cloud => cloud)).merge(cloud.cloud_provider.dsl_options)
55
+ Ec2Instance.new(inst_options)
56
+ end.first
53
57
  end
54
58
  def self.run!(hsh); new(hsh).run!; end
55
59
 
@@ -9,7 +9,7 @@ module CloudProviders
9
9
  :owner_id => nil})
10
10
 
11
11
  def run
12
- puts "Authorizing: #{cloud.proper_name} for #{protocol} to #{from_port}:#{to_port} #{network}"
12
+ puts "Authorizing: #{name} for #{protocol} to #{from_port}:#{to_port} #{network}"
13
13
  options =
14
14
  if group_name
15
15
  {:authorize_security_group_ingress => group_name, :source_security_group_owner_id => owner_id}
@@ -21,7 +21,7 @@ module CloudProviders
21
21
 
22
22
  def to_hash
23
23
  {
24
- :group_name => cloud.proper_name,
24
+ :group_name => name,
25
25
  :ip_protocol => protocol,
26
26
  :from_port => from_port,
27
27
  :to_port => to_port,
data/lib/core/object.rb CHANGED
@@ -7,5 +7,27 @@ class Object
7
7
  def reset!
8
8
  @@pool = nil
9
9
  end
10
-
10
+
11
+ def print_msg(msg_arr)
12
+ msg_arr.each do |line|
13
+ puts line
14
+ end
15
+ end
16
+
17
+ def progress_bar_until(msg=nil, &block)
18
+ print "#{msg}" if msg
19
+ loop do
20
+ if block.call
21
+ break
22
+ else
23
+ $stdout.print "."
24
+ $stdout.flush
25
+ sleep 1
26
+ end
27
+ end
28
+ print " OK" if msg
29
+ puts "" if msg
30
+ end
31
+
32
+
11
33
  end
@@ -91,7 +91,9 @@ You did not specify a cloud provider in your clouds.rb. Make sure you have a blo
91
91
  puts "Copying the chef-repo into the base directory from #{chef_repo}"
92
92
  FileUtils.mkdir_p base_directory/"roles"
93
93
  if File.directory?(chef_repo)
94
- FileUtils.cp_r chef_repo, base_directory
94
+ FileUtils.cp_r "#{chef_repo}/.", base_directory
95
+ else
96
+ raise "#{chef_repo} chef repo directory does not exist"
95
97
  end
96
98
  puts "Creating the dna.json"
97
99
  chef_attributes.to_dna [], base_directory/"dna.json", {:run_list => ["role[#{name}]"]}
@@ -101,7 +103,7 @@ You did not specify a cloud provider in your clouds.rb. Make sure you have a blo
101
103
 
102
104
  def write_solo_dot_rb(to=tmp_path/"etc"/"chef"/"solo.rb")
103
105
  content = <<-EOE
104
- cookbook_path ["/etc/chef/chef-repo/site-cookbooks", "/etc/chef/chef-repo/cookbooks"]
106
+ cookbook_path ["/etc/chef/site-cookbooks", "/etc/chef/cookbooks"]
105
107
  role_path "/etc/chef/roles"
106
108
  log_level :info
107
109
  EOE
@@ -138,9 +140,11 @@ log_level :info
138
140
  (class << self; self; end).class_eval do
139
141
  @cloud_provider.public_methods(false).each do |meth|
140
142
  next if respond_to?(meth) || method_defined?(meth) || private_method_defined?(meth)
141
- define_method meth.to_sym do |*args, &block|
142
- @cloud_provider.send(meth, *args, &block)
143
- end
143
+ eval <<-EOE
144
+ def #{meth}(*args, &block)
145
+ @cloud_provider.send(:#{meth}, *args, &block)
146
+ end
147
+ EOE
144
148
  end
145
149
  end
146
150
  end
@@ -201,17 +205,19 @@ log_level :info
201
205
 
202
206
  def reboot!
203
207
  orig_nodes = nodes
204
- num_nodes = nodes.size
205
208
  if autoscalers.empty?
206
209
  puts <<-EOE
207
210
  No autoscalers defined
208
211
  Launching new nodes and then shutting down original nodes
209
212
  EOE
210
- # Start new nodes
211
- expand_by(num_nodes)
212
213
  # Terminate the nodes
213
- orig_nodes.each do |node|
214
+ orig_nodes.each_with_index do |node, i|
215
+ # Start new nodes
216
+ print "Starting node: #{i}...\n"
217
+ expand_by(1)
218
+ print "Terminating node: #{i}...\n"
214
219
  node.terminate!
220
+ puts ""
215
221
  end
216
222
  else
217
223
  # Terminate the nodes
@@ -229,6 +235,7 @@ No autoscalers defined
229
235
  end
230
236
  end
231
237
  end
238
+ run
232
239
  puts ""
233
240
  end
234
241