auser-poolparty 1.2.2 → 1.2.3

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/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