auser-poolparty 1.2.2 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (247) hide show
  1. data/VERSION.yml +1 -1
  2. data/bin/cloud +37 -48
  3. data/bin/cloud-bootstrap +33 -23
  4. data/bin/cloud-configure +33 -34
  5. data/bin/cloud-console +31 -9
  6. data/bin/cloud-contract +27 -11
  7. data/bin/cloud-expand +32 -19
  8. data/bin/cloud-list +31 -15
  9. data/bin/cloud-osxcopy +22 -12
  10. data/bin/cloud-provision +35 -24
  11. data/bin/cloud-setup-dev +31 -20
  12. data/bin/cloud-show +40 -21
  13. data/bin/cloud-ssh +24 -15
  14. data/bin/cloud-start +33 -19
  15. data/bin/cloud-terminate +33 -20
  16. data/bin/cloud-verify +38 -29
  17. data/bin/install-poolparty +4 -198
  18. data/bin/server-cloud-elections +1 -1
  19. data/examples/basic.rb +9 -9
  20. data/examples/fairchild.rb +1 -1
  21. data/examples/metavirt_cloud.rb +21 -0
  22. data/lib/poolparty/aska.rb +3 -0
  23. data/lib/poolparty/base_packages/haproxy.rb +19 -18
  24. data/lib/poolparty/base_packages/poolparty.rb +1 -1
  25. data/lib/poolparty/core/hash.rb +46 -0
  26. data/lib/poolparty/core/object.rb +21 -15
  27. data/lib/poolparty/core/string.rb +16 -0
  28. data/lib/poolparty/dependency_resolver/chef_resolver.rb +23 -6
  29. data/lib/poolparty/dependency_resolver/dependency_resolver.rb +1 -1
  30. data/lib/poolparty/dependency_resolver/dependency_resolver_cloud_extensions.rb +2 -2
  31. data/lib/poolparty/dependency_resolver/puppet_resolver.rb +10 -32
  32. data/lib/poolparty/helpers/optioner.rb +19 -14
  33. data/lib/poolparty/installers/base_installer.rb +113 -0
  34. data/lib/poolparty/installers/ec2.rb +141 -0
  35. data/lib/poolparty/installers/vmrun.rb +144 -0
  36. data/lib/poolparty/modules/callbacks.rb +6 -2
  37. data/lib/poolparty/modules/cloud_dsl.rb +2 -2
  38. data/lib/poolparty/modules/cloud_resourcer.rb +10 -50
  39. data/lib/poolparty/modules/file_writer.rb +2 -2
  40. data/lib/poolparty/modules/pinger.rb +4 -1
  41. data/lib/poolparty/modules/resourcing_dsl.rb +1 -29
  42. data/lib/poolparty/modules/searchable_paths.rb +3 -3
  43. data/lib/poolparty/monitors/monitor_rack.rb +1 -1
  44. data/lib/poolparty/net/remote_bases.rb +2 -0
  45. data/lib/poolparty/net/remote_instance.rb +6 -4
  46. data/lib/poolparty/net/remoter/interactive.rb +2 -3
  47. data/lib/poolparty/net/remoter_base.rb +54 -31
  48. data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +49 -26
  49. data/lib/poolparty/net/remoter_bases/ec2/ec2_remote_instance.rb +6 -19
  50. data/lib/poolparty/net/remoter_bases/ec2/ec2_response_object.rb +4 -3
  51. data/lib/poolparty/net/remoter_bases/metavirt/metavirt.rb +99 -0
  52. data/lib/poolparty/net/remoter_bases/metavirt/metavirt_instance.rb +52 -0
  53. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vm_disk.rb +1 -1
  54. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx.rb +1 -1
  55. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx_file.rb +117 -117
  56. data/lib/poolparty/net/remoter_bases/vmrun/vmrun.rb +36 -31
  57. data/lib/poolparty/net/remoter_bases/vmrun/vmrun_instance.rb +9 -5
  58. data/lib/poolparty/plugins/apache2/apache.rb +118 -73
  59. data/lib/poolparty/plugins/chef.rb +15 -17
  60. data/lib/poolparty/plugins/chef_deploy.rb +18 -4
  61. data/lib/poolparty/plugins/deploy_directory.rb +25 -16
  62. data/lib/poolparty/plugins/gem_package.rb +15 -5
  63. data/lib/poolparty/plugins/git.rb +44 -30
  64. data/lib/poolparty/plugins/line_in_file.rb +5 -1
  65. data/lib/poolparty/plugins/rails_deploy.rb +79 -26
  66. data/lib/poolparty/plugins/svn.rb +2 -2
  67. data/lib/poolparty/poolparty/cloud.rb +101 -47
  68. data/lib/poolparty/poolparty/default.rb +25 -23
  69. data/lib/poolparty/poolparty/key.rb +18 -27
  70. data/lib/poolparty/poolparty/neighborhoods.rb +1 -1
  71. data/lib/poolparty/poolparty/plugin.rb +17 -7
  72. data/lib/poolparty/poolparty/pool.rb +3 -3
  73. data/lib/poolparty/poolparty/poolparty_base_class.rb +41 -35
  74. data/lib/poolparty/poolparty/resource.rb +18 -44
  75. data/lib/poolparty/poolparty/service.rb +1 -5
  76. data/lib/poolparty/provision/boot_strapper.rb +24 -19
  77. data/lib/poolparty/provision/configurations/chef.rb +4 -4
  78. data/lib/poolparty/provision/dr_configure.rb +11 -10
  79. data/lib/poolparty/resources/cron.rb +7 -3
  80. data/lib/poolparty/resources/directory.rb +7 -0
  81. data/lib/poolparty/resources/exec.rb +2 -1
  82. data/lib/poolparty/resources/file.rb +23 -9
  83. data/lib/poolparty/resources/group.rb +21 -0
  84. data/lib/poolparty/resources/host.rb +2 -1
  85. data/lib/poolparty/resources/mount.rb +0 -4
  86. data/lib/poolparty/resources/remote_file.rb +1 -1
  87. data/lib/poolparty/resources/service.rb +2 -1
  88. data/lib/poolparty/resources/sshkey.rb +10 -12
  89. data/lib/poolparty/resources/symlink.rb +3 -5
  90. data/lib/poolparty/resources/user.rb +5 -0
  91. data/lib/poolparty/resources/variable.rb +1 -1
  92. data/lib/poolparty/templates/haproxy.conf +1 -1
  93. data/lib/poolparty/verification/verify.rb +4 -0
  94. data/lib/poolparty.rb +9 -4
  95. data/lib/poolpartycl.rb +1 -52
  96. data/spec/bin/bin_spec_helper.rb +1 -0
  97. data/spec/bin/server-list-active_spec.rb +3 -3
  98. data/spec/poolparty/core/object_spec.rb +9 -46
  99. data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +18 -12
  100. data/spec/poolparty/fixtures/clouds.json +1 -1
  101. data/spec/poolparty/helpers/optioner_spec.rb +4 -11
  102. data/spec/poolparty/modules/cloud_resourcer_spec.rb +1 -1
  103. data/spec/poolparty/net/remote_instance_spec.rb +0 -1
  104. data/spec/poolparty/net/remoter_base_spec.rb +7 -11
  105. data/spec/poolparty/net/remoter_bases/ec2_mocks_and_stubs.rb +9 -11
  106. data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +6 -44
  107. data/spec/poolparty/net/remoter_bases/ec2_spec.rb +2 -3
  108. data/spec/poolparty/net/remoter_spec.rb +2 -3
  109. data/spec/poolparty/plugins/git_spec.rb +5 -8
  110. data/spec/poolparty/poolparty/cloud_spec.rb +17 -24
  111. data/spec/poolparty/poolparty/configurers/files/ruby_basic.rb +1 -3
  112. data/spec/poolparty/poolparty/configurers/ruby_spec.rb +1 -6
  113. data/spec/poolparty/poolparty/default_spec.rb +23 -22
  114. data/spec/poolparty/poolparty/example_spec.rb +6 -5
  115. data/spec/poolparty/poolparty/plugin_model_spec.rb +7 -4
  116. data/spec/poolparty/poolparty/pool_spec.rb +2 -9
  117. data/spec/poolparty/poolparty/resource_spec.rb +10 -24
  118. data/spec/poolparty/poolparty/script_spec.rb +1 -4
  119. data/spec/poolparty/poolparty/test_plugins/webserver.rb +0 -2
  120. data/spec/poolparty/resources/file_spec.rb +4 -4
  121. data/spec/poolparty/resources/service_spec.rb +1 -1
  122. data/spec/poolparty/spec_helper.rb +9 -38
  123. data/tasks/spec.rake +6 -2
  124. data/test/fixtures/test_key +1 -0
  125. data/test/poolparty/core/object_test.rb +29 -0
  126. data/test/poolparty/dependency_resolver/puppet_resolver_test.rb +1 -1
  127. data/test/poolparty/modules/cloud_dsl_test.rb +4 -4
  128. data/test/poolparty/net/remoter_bases/metavirt/metavirt_test.rb +55 -0
  129. data/test/poolparty/net/remoter_bases/vmrun/vmrun_test.rb +41 -14
  130. data/test/poolparty/plugins/chef_deploy_test.rb +37 -0
  131. data/test/poolparty/plugins/rails_deploy_test.rb +50 -0
  132. data/test/poolparty/poolparty/plugin_test.rb +18 -0
  133. data/test/poolparty/poolparty/poolparty_base_class_test.rb +41 -3
  134. data/test/test_helper.rb +5 -1
  135. data/vendor/gems/dslify/LICENSE +20 -0
  136. data/vendor/gems/dslify/README.rdoc +33 -0
  137. data/vendor/gems/dslify/Rakefile +56 -56
  138. data/vendor/gems/dslify/lib/dslify.rb +76 -5
  139. data/vendor/gems/dslify/test/dslify_test.rb +197 -0
  140. data/vendor/gems/dslify/test/test_helper.rb +7 -0
  141. data/vendor/gems/git-style-binaries/README.markdown +274 -0
  142. data/vendor/gems/{butterfly → git-style-binaries}/Rakefile +64 -62
  143. data/vendor/gems/git-style-binaries/VERSION.yml +4 -0
  144. data/vendor/gems/git-style-binaries/doc/EXAMPLES +1 -0
  145. data/vendor/gems/git-style-binaries/doc/poolparty-binaries.screenplay +45 -0
  146. data/vendor/gems/git-style-binaries/git-style-binaries.gemspec +69 -0
  147. data/vendor/gems/git-style-binaries/lib/ext/colorize.rb +198 -0
  148. data/vendor/gems/git-style-binaries/lib/ext/core.rb +16 -0
  149. data/vendor/gems/git-style-binaries/lib/git-style-binary/autorunner.rb +21 -0
  150. data/vendor/gems/git-style-binaries/lib/git-style-binary/command.rb +204 -0
  151. data/vendor/gems/git-style-binaries/lib/git-style-binary/commands/help.rb +32 -0
  152. data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/name_resolver.rb +78 -0
  153. data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb +37 -0
  154. data/vendor/gems/git-style-binaries/lib/git-style-binary/parser.rb +223 -0
  155. data/vendor/gems/git-style-binaries/lib/git-style-binary.rb +74 -0
  156. data/vendor/gems/git-style-binaries/test/fixtures/flickr +4 -0
  157. data/vendor/gems/git-style-binaries/test/fixtures/flickr-download +17 -0
  158. data/vendor/gems/git-style-binaries/test/fixtures/wordpress +42 -0
  159. data/vendor/gems/git-style-binaries/test/fixtures/wordpress-categories +18 -0
  160. data/vendor/gems/git-style-binaries/test/fixtures/wordpress-list +18 -0
  161. data/vendor/gems/git-style-binaries/test/fixtures/wordpress-post +26 -0
  162. data/vendor/gems/git-style-binaries/test/git-style-binary/command_test.rb +17 -0
  163. data/vendor/gems/git-style-binaries/test/git_style_binary_test.rb +21 -0
  164. data/vendor/gems/git-style-binaries/test/running_binaries_test.rb +224 -0
  165. data/vendor/gems/git-style-binaries/test/shoulda_macros/matching_stdio.rb +13 -0
  166. data/vendor/gems/git-style-binaries/test/test_helper.rb +28 -0
  167. data/vendor/gems/parenting/lib/parenting/parenting.rb +13 -4
  168. data/vendor/gems/rest-client/README.rdoc +151 -0
  169. data/vendor/gems/rest-client/Rakefile +85 -0
  170. data/vendor/gems/rest-client/bin/restclient +87 -0
  171. data/vendor/gems/rest-client/lib/rest_client.rb +2 -0
  172. data/vendor/gems/rest-client/lib/restclient/exceptions.rb +84 -0
  173. data/vendor/gems/rest-client/lib/restclient/mixin/response.rb +43 -0
  174. data/vendor/gems/rest-client/lib/restclient/raw_response.rb +30 -0
  175. data/vendor/gems/rest-client/lib/restclient/request.rb +232 -0
  176. data/vendor/gems/rest-client/lib/restclient/resource.rb +146 -0
  177. data/vendor/gems/rest-client/lib/restclient/response.rb +20 -0
  178. data/vendor/gems/rest-client/lib/restclient.rb +93 -0
  179. data/vendor/gems/rest-client/rest-client.gemspec +21 -0
  180. data/vendor/gems/rest-client/spec/base.rb +4 -0
  181. data/vendor/gems/rest-client/spec/exceptions_spec.rb +54 -0
  182. data/vendor/gems/rest-client/spec/mixin/response_spec.rb +46 -0
  183. data/vendor/gems/rest-client/spec/raw_response_spec.rb +17 -0
  184. data/vendor/gems/rest-client/spec/request_spec.rb +442 -0
  185. data/vendor/gems/rest-client/spec/resource_spec.rb +75 -0
  186. data/vendor/gems/rest-client/spec/response_spec.rb +16 -0
  187. data/vendor/gems/rest-client/spec/restclient_spec.rb +53 -0
  188. data/vendor/gems/trollop/FAQ.txt +35 -0
  189. data/vendor/gems/trollop/History.txt +97 -0
  190. data/vendor/gems/trollop/Manifest.txt +7 -0
  191. data/vendor/gems/trollop/README.txt +40 -0
  192. data/vendor/gems/trollop/Rakefile +36 -0
  193. data/vendor/gems/trollop/lib/trollop.rb +735 -0
  194. data/vendor/gems/trollop/release-script.txt +13 -0
  195. data/vendor/gems/trollop/test/test_trollop.rb +1042 -0
  196. data/vendor/gems/trollop/www/index.html +167 -0
  197. metadata +100 -70
  198. data/bin/cloud-describe +0 -28
  199. data/bin/cloud-handle-load +0 -27
  200. data/bin/cloud-rsync +0 -28
  201. data/bin/cloud-spec +0 -40
  202. data/lib/poolparty/plugins/nanite.rb +0 -41
  203. data/lib/poolparty/plugins/runit.rb +0 -96
  204. data/vendor/gems/butterfly/History.txt +0 -4
  205. data/vendor/gems/butterfly/PostInstall.txt +0 -2
  206. data/vendor/gems/butterfly/README.rdoc +0 -48
  207. data/vendor/gems/butterfly/VERSION.yml +0 -4
  208. data/vendor/gems/butterfly/bin/flutter +0 -4
  209. data/vendor/gems/butterfly/butterfly.gemspec +0 -37
  210. data/vendor/gems/butterfly/examples/config.ru +0 -15
  211. data/vendor/gems/butterfly/examples/my_app.rb +0 -12
  212. data/vendor/gems/butterfly/lib/butterfly.rb +0 -14
  213. data/vendor/gems/butterfly/lib/handler.rb +0 -48
  214. data/vendor/gems/butterfly/lib/request.rb +0 -29
  215. data/vendor/gems/butterfly/lib/response.rb +0 -49
  216. data/vendor/gems/butterfly/script/console +0 -10
  217. data/vendor/gems/butterfly/script/destroy +0 -14
  218. data/vendor/gems/butterfly/script/generate +0 -14
  219. data/vendor/gems/butterfly/test/test_adapter_base.rb +0 -23
  220. data/vendor/gems/butterfly/test/test_butterfly_request.rb +0 -46
  221. data/vendor/gems/butterfly/test/test_butterfly_response.rb +0 -43
  222. data/vendor/gems/butterfly/test/test_butterfly_server.rb +0 -16
  223. data/vendor/gems/butterfly/test/test_default.rb +0 -12
  224. data/vendor/gems/butterfly/test/test_helper.rb +0 -6
  225. data/vendor/gems/dslify/History.txt +0 -4
  226. data/vendor/gems/dslify/Manifest.txt +0 -25
  227. data/vendor/gems/dslify/PostInstall.txt +0 -5
  228. data/vendor/gems/dslify/README.txt +0 -60
  229. data/vendor/gems/dslify/config/hoe.rb +0 -73
  230. data/vendor/gems/dslify/config/requirements.rb +0 -15
  231. data/vendor/gems/dslify/dslify.gemspec +0 -40
  232. data/vendor/gems/dslify/lib/dslify/dslify.rb +0 -76
  233. data/vendor/gems/dslify/lib/dslify/version.rb +0 -10
  234. data/vendor/gems/dslify/script/console +0 -10
  235. data/vendor/gems/dslify/script/destroy +0 -14
  236. data/vendor/gems/dslify/script/generate +0 -14
  237. data/vendor/gems/dslify/script/txt2html +0 -82
  238. data/vendor/gems/dslify/setup.rb +0 -1585
  239. data/vendor/gems/dslify/tasks/deployment.rake +0 -34
  240. data/vendor/gems/dslify/tasks/environment.rake +0 -7
  241. data/vendor/gems/dslify/tasks/website.rake +0 -17
  242. data/vendor/gems/dslify/test/test_dslify.rb +0 -138
  243. data/vendor/gems/dslify/website/index.html +0 -86
  244. data/vendor/gems/dslify/website/index.txt +0 -83
  245. data/vendor/gems/dslify/website/javascripts/rounded_corners_lite.inc.js +0 -285
  246. data/vendor/gems/dslify/website/stylesheets/screen.css +0 -138
  247. data/vendor/gems/dslify/website/template.html.erb +0 -48
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :minor: 2
3
- :patch: 2
3
+ :patch: 3
4
4
  :major: 1
data/bin/cloud CHANGED
@@ -1,52 +1,41 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
- require "poolpartycl"
5
-
6
- # name = ARGV.select {|arg| arg if Binary.available_binaries_for("cloud").include?(arg) }.first
7
- name = ARGV.shift if Binary.available_binaries_for("cloud").include?(ARGV.first)
8
- # If the options include -h and they don't include a valid command, then we can just pass the
9
- # original options back, but if they do contain a binary, we don't want -h getting through to
10
- # these options, so we'll strip it if it's included
11
- DUP_ARG = ARGV.dup
12
- new_args = DUP_ARG.map {|arg| DUP_ARG.delete(arg) unless help_array.include?(arg) || Binary.available_binaries_for("cloud").include?(arg) }
13
- new_args = new_args.reject {|arg| Binary.available_binaries_for("cloud").include?(arg) }.empty? ? ARGV : (name ? (help_array.each {|arg| DUP_ARG.delete(arg)}; DUP_ARG) : DUP_ARG)
14
-
15
- # Let's make sure if no command is passed in that we show the help message
16
- new_args.push("-h") unless name
17
-
18
- # Binary.list_binaries_for("cloud")
19
- extra_help_string = <<-EOE
20
-
21
- Cloud commands
22
- cloud start starts a single instance in your cloud.
23
- cloud bootstrap bootstraps an instance or multiple instances
24
- cloud configure configures an instance or multiple instances
25
- cloud provision combines bootstrap and configures an instance or multiple instances
26
- cloud expand expands the cloud by a single instance
27
- cloud contract contracts the cloud by a single instance
28
- cloud describe show the configuration of the current clouds.rb configuration file
29
- cloud list show a list of the current instances on the cloud
30
- cloud show shows output about the clouds.rb
31
- cloud ssh ssh into an instance of the cloud
32
- cloud terminate terminate the cloud
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
6
+
7
+ GitStyleBinary.primary do
8
+ @theme = :short
9
+
10
+ version "PoolParty cloud command"
11
+ banner <<-EOS
12
+ Usage: #{$0} #{all_options_string} COMMAND [ARGS]
13
+
14
+ The cloud subcommands commands are:
15
+ \#{GitStyleBinary.pretty_known_subcommands(:short).join(" ")}
16
+
17
+ See 'cloud help COMMAND' for more information on a specific command.
18
+ EOS
19
+
20
+ opt :debug, "Debug the output", :type => :boolean, :default => false
21
+ opt :spec, "Set the pool spec file", :type => String
22
+ opt :testing, "Set testing mode on", :type => :boolean, :default => false
23
+ opt :cloud_name, "Name of the working cloud", :type => String, :default => nil
24
+
25
+ before_run do |command|
26
+ # Setup testing/debugging
27
+ $TESTING = true if command[:testing]
28
+ $DEBUGGING = true if command[:debug]
33
29
 
34
- EOE
35
-
36
- o = PoolParty::Optioner.new(new_args, {
37
- :extra_help => extra_help_string,
38
- :abstract => true}) do |opts, optioner|
39
- opts.on('-n cloudname', '--name name', 'Address this cloud') { |c| optioner.cloudname c }
40
- end
41
-
42
- program_name = "#{File.basename($0)}-#{name}"
43
- program_location = File.join(Binary.binary_directory, program_name)
44
-
45
- command_line = "#{program_location}"
46
-
47
- # Run it from the command-line first
48
- if Binary.available_binaries_for("cloud").include?(name)
49
- system command_line, *new_args
50
- else
51
- puts "Unknown poolparty binary: #{name}"
30
+ @loaded_pool = load_pool( command[:spec] ? command[:spec] : Binary.get_existing_spec_location)
31
+ @loaded_clouds = command[:cloud_name] ? [clouds[command[:cloud_name].to_sym]] : clouds.map {|k,c| c }
32
+ @loaded_clouds.each do |cld|
33
+ cld.verbose command[:verbose]
34
+ cld.debug command[:debug]
35
+ end
36
+ end
37
+
38
+ run do |command|
39
+ puts "Primary Options: #{command.opts.inspect}"
40
+ end
52
41
  end
data/bin/cloud-bootstrap CHANGED
@@ -1,31 +1,41 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
- require "poolparty/provision/boot_strapper"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
5
6
 
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
6
11
 
7
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
8
- opts.on('-n cloudname', '--name name', 'Start cloud by this name') { |c| optioner.cloudname c }
9
- opts.on('-i num', '--num i', 'Instance number') { |i| optioner.inst_num i.to_i }
10
- end
12
+ Bootstrap a cloud instance
13
+ EOS
11
14
 
12
- o.loaded_clouds.each do |cld|
13
- # If an IP or DNS name is given, bootstrap that node, otherwise, bootstrap all running nodes.
14
- # ::FileUtils.rm_rf "#{Default.tmp_path}/" unless o.testing?
15
+ short_desc "Bootstrap a cloud instance"
15
16
 
16
- nodes = !o.unflagged_args.empty? ? o.unflagged_args : cld.nodes(:status => "running").collect {|i| i.ip }.sort.compact
17
- if nodes.empty?
18
- puts "No nodes to bootstrap"
19
- else
20
- if o.inst_num?
21
- vputs "\nBootStrapping: #{nodes[o.inst_num]}\n--------------------"
22
- ::PoolParty::Provision::BootStrapper.new nodes[o.inst_num], :cloud => cld
23
- else
24
- nodes.each do |address|
25
- vputs "\nBootStrapping: #{address}\n--------------------"
26
- ::PoolParty::Provision::BootStrapper.new address, :cloud => cld
27
- end
17
+ opt :inst_num, "The number of the instance to run bootstrap on", :type => :int
18
+
19
+ run do |command|
20
+
21
+ @loaded_clouds.each do |cld|
22
+
23
+ # If an IP or DNS name is given, bootstrap that node, otherwise, bootstrap all running nodes.
24
+ if cld.nodes(:status => "running").empty?
25
+ puts "No nodes to bootstrap"
26
+ else
27
+ if command[:inst_num]
28
+ vputs "\nBootStrapping: #{nodes[o.inst_num]}\n--------------------"
29
+ ::PoolParty::Provision::BootStrapper.new cld.nodes(:status => "running")[ command[:inst_num] ], :cloud => cld
30
+ else
31
+ cld.nodes(:status => "running").each do |address|
32
+ cld.vputs "\nBootStrapping: #{address[:ip]}\n--------------------"
33
+ ::PoolParty::Provision::BootStrapper.new address[:ip], :cloud => cld
34
+ end
35
+ end
36
+ end
37
+
28
38
  end
39
+
29
40
  end
30
- end
31
-
41
+ end
data/bin/cloud-configure CHANGED
@@ -1,43 +1,42 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
4
6
 
5
- extra_help_string = <<-EOE
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
6
11
 
7
- Cloud configure
8
-
9
- Cloud configure will repackage the deployment and send it off to a
10
- remote instance from within the cloud. It then will reconfigure
11
- itself and alert the rest of the cloud
12
-
13
- EOE
12
+ Configure a cloud instance
13
+ EOS
14
14
 
15
- o = PoolParty::Optioner.new(ARGV, {:extra_help => extra_help_string}) do |opts, optioner|
16
- opts.on('-n cloudname', '--name name', 'Start cloud by this name') { |c| optioner.cloudname c }
17
- opts.on('-i num', '--num i', 'Instance number') { |i| optioner.inst_num i.to_i }
18
- end
19
-
20
- o.loaded_clouds.each do |cld|
21
- # If an IP or DNS name is given, bootstrap that node, otherwise, bootstrap all running nodes.
22
- # ::FileUtils.rm_rf "#{Default.tmp_path}/" unless o.testing?
15
+ short_desc "Configure a cloud instance"
23
16
 
24
- if cld.nodes(:status => "running").size < 1
25
- puts header("No instances running")
26
- else
27
- nodes = !o.unflagged_args.empty? ? o.unflagged_args : cld.nodes(:status => "running").collect {|i| i.ip }.sort.compact
28
- if nodes.empty?
29
- puts "No nodes to configure"
30
- else
31
- if o.inst_num?
32
- vputs "Configuring #{nodes[o.inst_num]}"
33
- ::PoolParty::Provision::DrConfigure.new( nodes[o.inst_num], :cloud => cld )
34
- else
35
- nodes.each do |address|
36
- puts "Configuring: #{address}"
37
- ::PoolParty::Provision::DrConfigure.new( address, :cloud => cld )
17
+ opt :inst_num, "The number of the instance to run bootstrap on", :type => :int
18
+
19
+ run do |command|
20
+
21
+ @loaded_clouds.each do |cld|
22
+
23
+ # If an IP or DNS name is given, bootstrap that node, otherwise, bootstrap all running nodes.
24
+ if cld.nodes(:status => "running").empty?
25
+ puts "No nodes to bootstrap"
26
+ else
27
+ if command[:inst_num]
28
+ vputs "\nConfiguring: #{nodes[o.inst_num]}\n--------------------"
29
+ address = cld.nodes(:status => "running")[ command[:inst_num] ]
30
+ ::PoolParty::Provision::DrConfigure.new( address[:ip], :cloud => cld )
31
+ else
32
+ cld.nodes(:status => "running").each do |address|
33
+ cld.vputs "\nConfiguring: #{address[:ip]}\n--------------------"
34
+ ::PoolParty::Provision::DrConfigure.new address[:ip], :cloud => cld
35
+ end
36
+ end
38
37
  end
39
- end
38
+
40
39
  end
40
+
41
41
  end
42
- end
43
-
42
+ end
data/bin/cloud-console CHANGED
@@ -1,12 +1,34 @@
1
1
  #!/usr/bin/env ruby
2
- # File: script/console
3
- irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
+ require "poolparty"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
4
6
 
5
- libs = " -r irb/completion"
6
- # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
- # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
- libs << " -r #{File.dirname(__FILE__) + '/../lib/poolparty.rb'}"
9
- libs << " -r #{File.dirname(__FILE__) + '/../lib/poolpartycl.rb'}"
10
- puts "Loading PoolParty console..."
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
11
11
 
12
- exec "#{irb} #{libs} --simple-prompt"
12
+ Open an irb session with the clouds.rb loaded
13
+ EOS
14
+
15
+ short_desc "Open an irb session with clouds.rb loaded"
16
+
17
+ opt :inst_num, "The number of the instance to run bootstrap on", :type => :int
18
+
19
+ run do |command|
20
+
21
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
22
+
23
+ libs = " -r irb/completion"
24
+ # Perhaps use a console_lib to store any extra methods I may want available in the cosole
25
+ # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
26
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/poolparty.rb'}"
27
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/poolpartycl.rb'}"
28
+ libs << " -r #{$pool_specfile}" if $pool_specfile
29
+ puts "Loading PoolParty console..."
30
+
31
+ exec "#{irb} #{libs} --simple-prompt"
32
+
33
+ end
34
+ end
data/bin/cloud-contract CHANGED
@@ -1,17 +1,33 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
- require "poolpartycl"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
5
6
 
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
8
- end
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
9
11
 
10
- o.loaded_clouds.each do |cld|
11
- puts header("Contracting cloud #{cld.name}")
12
- puts "#{cld.nodes(:status => "running").size} running instances (#{cld.minimum_instances} minimum instances)"
13
- puts testing ? "Not contracting (test mode)" : "Contracting the cloud if possible"
12
+ contracts the cloud by a single instance
13
+ EOS
14
14
 
15
- last_instance_id = cld.nodes(:status => "running").last[:instance_id]
16
- cld.remote_base.terminate_instance! cld.options.merge(:instance_id => last_instance_id)
15
+ short_desc "contracts the cloud by a single instance"
16
+
17
+ run do |command|
18
+ @loaded_clouds.each do |cld|
19
+
20
+ puts header("Contracting cloud #{cld.name}")
21
+ puts "#{cld.nodes(:status => "running").size} running instances (#{cld.minimum_instances} minimum instances)"
22
+ puts testing ? "Not contracting (test mode)" : "Contracting the cloud if possible"
23
+
24
+ if cld.minimum_instances < cld.nodes(:status => "running").size
25
+ last_instance_id = cld.nodes(:status => "running").last[:instance_id]
26
+ cld.remote_base.terminate_instance! cld.options.merge(:instance_id => last_instance_id)
27
+ else
28
+ puts "The cloud #{cld.name} is running minimum instances (#{cld.nodes(:status => "running").size})"
29
+ end
30
+
31
+ end
32
+ end
17
33
  end
data/bin/cloud-expand CHANGED
@@ -1,26 +1,39 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
- require "poolpartycl"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
5
6
 
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'Expand the cloud on this name') { |c| optioner.cloudname c }
8
- end
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
9
11
 
10
- o.loaded_clouds.each do |cld|
12
+ expands the cloud by a single instance
13
+ EOS
11
14
 
12
- vputs header("Expanding cloud #{cld.name}")
13
- vputs "#{cld.nodes(:status => "running").size} running instances of #{cld.maximum_instances} possible instances"
14
- vputs testing ? "Not expanding (test mode)" : "Expanding the cloud"
15
-
16
- cld.launch_instance! do |node|
17
- ::PoolParty::Provision::BootStrapper.new(node.ip, :cloud => cld)
18
- ::PoolParty::Provision::DrConfigure.new(node.ip, :cloud => cld)
19
-
20
- puts <<-EOM
21
- Your cloud has expanded. The new ip is #{node.ip}
22
- EOM
15
+ short_desc "expands the cloud by a single instance"
16
+
17
+ run do |command|
18
+ @loaded_clouds.each do |cld|
19
+
20
+ vputs header("Expanding cloud #{cld.name}")
21
+ vputs "#{cld.nodes(:status => "running").size} running instances of #{cld.maximum_instances} possible instances"
22
+ vputs testing ? "Not expanding (test mode)" : "Expanding the cloud"
23
+
24
+ if cld.maximum_instances > cld.nodes(:status => "running").size
25
+ cld.launch_instance!(:cloud_name => cld.name) do |node|
26
+ ::PoolParty::Provision::BootStrapper.new(node.ip, :cloud => cld)
27
+ ::PoolParty::Provision::DrConfigure.new(node.ip, :cloud => cld)
28
+
29
+ puts <<-EOM
30
+ Your cloud has expanded. The new ip is #{node.ip}
31
+ EOM
32
+ end
33
+ else
34
+ puts "The cloud #{cld.name} has too many instances already (#{cld.nodes(:status => "running").size})"
35
+ end
36
+
37
+ end
23
38
  end
24
-
25
-
26
39
  end
data/bin/cloud-list CHANGED
@@ -1,21 +1,37 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
4
6
 
5
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
6
- opts.on('-f [remote|local]', '--from [remote|local]', 'Remote or local (default: local)') { |o| optioner.location o }
7
- opts.on('-r', '--remote', 'Remote listing') { optioner.location "remote" }
8
- opts.on('-l', '--local', 'Local listing') { optioner.location "local" }
9
- opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
10
- end
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
11
11
 
12
- o.loaded_clouds.each do |cld|
13
- puts header("Listing cloud #{cld.name}")
14
- puts subheader("Active instances")
15
- puts cld.nodes(:status => "running").map{|a| "#{a[:instance_id]}\t#{a[:ip]}" }.join("\n")
16
-
17
- if cld.nodes(:status => "pending").size > 0
18
- puts subheader("Pending instances")
19
- puts cld.nodes(:status => "pending").map{|a| "#{a[:instance_id]}\t#{a[:ip]}" }.join("\n")
12
+ List the clouds and their nodes
13
+ e.g. show a list of the current instances on the cloud
14
+ EOS
15
+
16
+ opt :instance_id, "Describe a specific instance", :type => String, :default => nil
17
+
18
+ short_desc "show a list of the current instances on the clouds"
19
+
20
+ run do |command|
21
+ @loaded_clouds.each do |cld|
22
+ if command[:instance_id]
23
+ require 'pp'
24
+ pp result = cld.describe_instance(:instance_id=>command[:instance_id])
25
+ else
26
+ puts header("Listing cloud #{cld.name}")
27
+ puts subheader("Active instances")
28
+ puts cld.nodes(:status => "running").map{|a| "#{a[:instance_id] || a[:id]}\t#{a[:ip] ||a[:public_ip] }" }.join("\n")
29
+
30
+ if cld.nodes(:status => "pending").size > 0
31
+ puts subheader("Pending instances")
32
+ puts cld.nodes(:status => "pending").map{|a| "#{a[:instance_id] || a[:id]}\t#{a[:ip] ||a[:public_ip] }" }.join("\n")
33
+ end
34
+ end
35
+ end
20
36
  end
21
37
  end
data/bin/cloud-osxcopy CHANGED
@@ -1,17 +1,27 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
- require "poolpartycl"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
5
6
 
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'Copy an ip from this cloud to the clipboard') { |c| optioner.cloudname c }
8
- end
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string} COMMAND [ARGS]
9
11
 
10
- o.loaded_clouds.each do |cld|
11
-
12
- node = cld.nodes(:status => "running").first
13
- ip = node.ip
14
- puts "ip: #{ip}"
15
- Kernel.system "echo #{ip} | pbcopy"
16
-
12
+ Copy the IP address of a node to the Mac OS X clipboard
13
+ EOS
14
+
15
+ short_desc "Copy the IP address of a node to the Mac OS X clipboard"
16
+
17
+ run do |command|
18
+ @loaded_clouds.each do |cld|
19
+
20
+ node = cld.nodes(:status => "running").first
21
+ ip = node.ip
22
+ puts "ip: #{ip}"
23
+ Kernel.system "echo #{ip} | pbcopy"
24
+
25
+ end
26
+ end
17
27
  end
data/bin/cloud-provision CHANGED
@@ -1,30 +1,41 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
- require "poolparty/provision/boot_strapper"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
5
6
 
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n cloudname', '--name name', 'Start cloud by this name') { |c| optioner.cloudname c }
8
- opts.on('-i num', '--num i', 'Instance number') { |i| optioner.inst_num i.to_i }
9
- end
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
10
11
 
11
- o.loaded_clouds.each do |cld|
12
- # If an IP or DNS name is given, bootstrap that node, otherwise, bootstrap all running nodes.
13
- nodes = !o.unflagged_args.empty? ? o.unflagged_args : cld.nodes(:status => "running").collect {|i|i.ip }.compact
14
- if nodes.empty?
15
- puts "No nodes to bootstrap"
16
- else
17
- if o.inst_num?
18
- ::PoolParty::Provision::BootStrapper.new( nodes[o.inst_num], :full_keypair_path => cld.keypair.full_filepath, :cloud => cld )
19
- ::PoolParty::Provision::DrConfigure.new( nodes[o.inst_num], :full_keypair_path => cld.keypair.full_filepath, :cloud => cld )
20
- else
21
- nodes.each do |address|
22
- puts "bootstrapping: #{address}"
23
- ::PoolParty::Provision::BootStrapper.new( address, :full_keypair_path => cld.keypair.full_filepath, :cloud => cld )
24
- ::PoolParty::Provision::DrConfigure.new( address, :full_keypair_path => cld.keypair.full_filepath,
25
- :cloud => cld )
12
+ combines bootstrap and configures an instance or multiple instances
13
+ EOS
14
+
15
+ short_desc "combines bootstrap and configures an instance or multiple instances"
16
+
17
+ run do |command|
18
+ @loaded_clouds.each do |cld|
19
+
20
+ # If an IP or DNS name is given, bootstrap that node, otherwise, bootstrap all running nodes.
21
+ if cld.nodes.empty?
22
+ puts "No nodes to provision"
23
+ else
24
+ if command[:inst_num]
25
+ vputs "\nConfiguring: #{nodes[o.inst_num]}\n--------------------"
26
+ address = cld.nodes[ command[:inst_num] ]
27
+ ::PoolParty::Provision::BootStrapper.new( address[:ip], :cloud => cld )
28
+ ::PoolParty::Provision::DrConfigure.new( address[:ip], :cloud => cld )
29
+ else
30
+ cld.nodes(:status => "running").each do |address|
31
+ cld.vputs "\nConfiguring: #{address[:ip]}\n--------------------"
32
+ ::PoolParty::Provision::BootStrapper.new( address[:ip], :cloud => cld )
33
+ ::PoolParty::Provision::DrConfigure.new( address[:ip], :cloud => cld )
34
+
35
+ end
36
+ end
26
37
  end
27
- end
38
+
39
+ end
28
40
  end
29
- end
30
-
41
+ end
data/bin/cloud-setup-dev CHANGED
@@ -1,25 +1,36 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
- require "poolpartycl"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
5
6
 
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'Setup development environment for cloud named') { |c| optioner.cloudname c }
8
- end
9
-
10
- o.loaded_clouds.each do |cld|
11
-
12
- if cld.remote_instances_list.empty?
13
- puts "Your cloud is not running"
14
- else
15
- str =<<-EOE
16
- Host #{cld.name}
17
- User #{cld.user}
18
- Hostname #{cld.remote_instances_list.first.ip}
19
- IdentityFile #{cld.keypair}
20
- EOE
21
-
22
- puts "Enter the following in your .ssh/config file"
23
- puts str
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string} COMMAND [ARGS]
11
+
12
+ puts a helpful ssh config
13
+ EOS
14
+
15
+ short_desc "puts a helpful ssh config"
16
+
17
+ run do |command|
18
+ @loaded_clouds.each do |cld|
19
+
20
+ if cld.nodes(:status => "running").empty?
21
+ puts "Your cloud is not running"
22
+ else
23
+ str =<<-EOE
24
+ Host #{cld.name}
25
+ User #{cld.user}
26
+ Hostname #{cld.nodes(:status => "running").first.ip}
27
+ IdentityFile #{cld.keypair}
28
+ EOE
29
+
30
+ puts "Enter the following in your .ssh/config file"
31
+ puts str
32
+ end
33
+
34
+ end
24
35
  end
25
36
  end