fairchild-poolparty 1.1.5 → 1.2.12
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +3 -0
- data/README.txt +13 -9
- data/Rakefile +0 -1
- data/VERSION.yml +2 -2
- data/bin/cloud +43 -46
- data/bin/cloud-bootstrap +33 -23
- data/bin/cloud-configure +33 -34
- data/bin/cloud-console +31 -9
- data/bin/cloud-contract +27 -11
- data/bin/cloud-expand +32 -19
- data/bin/cloud-list +43 -15
- data/bin/cloud-osxcopy +22 -12
- data/bin/cloud-provision +39 -24
- data/bin/cloud-run +37 -0
- data/bin/cloud-setup-dev +31 -20
- data/bin/cloud-show +40 -21
- data/bin/cloud-ssh +24 -15
- data/bin/cloud-start +33 -19
- data/bin/cloud-terminate +34 -15
- data/bin/cloud-verify +41 -0
- data/bin/install-poolparty +22 -0
- data/bin/server-cloud-elections +17 -23
- data/bin/server-list-active +23 -22
- data/bin/server-manage-election +14 -23
- data/bin/server-show-stats +1 -1
- data/config/jeweler.rb +6 -6
- data/examples/basic.rb +13 -14
- data/examples/fairchild.rb +25 -20
- data/examples/maize.rb +37 -0
- data/examples/metavirt_cloud.rb +33 -0
- data/examples/simple.rb +13 -0
- data/examples/vmrun_cloud.rb +17 -0
- data/lib/poolparty/{aska/aska.rb → aska.rb} +3 -0
- data/lib/poolparty/core/array.rb +13 -1
- data/lib/poolparty/core/exception.rb +1 -1
- data/lib/poolparty/core/hash.rb +63 -2
- data/lib/poolparty/core/integer.rb +11 -0
- data/lib/poolparty/core/object.rb +41 -19
- data/lib/poolparty/core/proc.rb +0 -7
- data/lib/poolparty/core/string.rb +35 -2
- data/lib/poolparty/core/symbol.rb +10 -0
- data/lib/poolparty/core/time.rb +6 -0
- data/lib/poolparty/dependency_resolver/chef_resolver.rb +40 -41
- data/lib/poolparty/dependency_resolver/dependency_resolver.rb +1 -1
- data/lib/poolparty/dependency_resolver/dependency_resolver_cloud_extensions.rb +6 -6
- data/lib/poolparty/dependency_resolver/puppet.rb +0 -1
- data/lib/poolparty/dependency_resolver/puppet_resolver.rb +14 -48
- data/lib/poolparty/exceptions/MasterException.rb +2 -2
- data/lib/poolparty/extra/duration.rb +96 -0
- data/lib/poolparty/helpers/binary.rb +1 -1
- data/lib/poolparty/helpers/console.rb +0 -5
- data/lib/poolparty/helpers/optioner.rb +18 -13
- data/lib/poolparty/installers/base_installer.rb +113 -0
- data/lib/poolparty/installers/ec2.rb +141 -0
- data/lib/poolparty/installers/vmrun.rb +144 -0
- data/lib/poolparty/lite.rb +5 -2
- data/lib/poolparty/modules/callbacks.rb +15 -2
- data/lib/poolparty/modules/cloud_dsl.rb +10 -8
- data/lib/poolparty/modules/cloud_resourcer.rb +39 -59
- data/lib/poolparty/modules/daemonizable.rb +4 -5
- data/lib/poolparty/modules/definable_resource.rb +6 -7
- data/lib/poolparty/modules/file_writer.rb +2 -2
- data/lib/poolparty/modules/output.rb +2 -2
- data/lib/poolparty/modules/pinger.rb +9 -2
- data/lib/poolparty/modules/pretty_printer.rb +1 -1
- data/lib/poolparty/modules/resourcing_dsl.rb +1 -29
- data/lib/poolparty/modules/searchable_paths.rb +100 -0
- data/lib/poolparty/modules/user_helpers.rb +1 -1
- data/lib/poolparty/monitors/base_monitor.rb +65 -0
- data/lib/poolparty/monitors/monitor_daemon.rb +168 -0
- data/lib/poolparty/monitors/monitor_rack.rb +29 -15
- data/lib/poolparty/monitors/monitors/{time_monitor.rb → clock_monitor.rb} +7 -2
- data/lib/poolparty/monitors/monitors/cloud_monitor.rb +36 -0
- data/lib/poolparty/monitors/monitors/elections_monitor.rb +76 -0
- data/lib/poolparty/monitors/monitors/neighborhood_monitor.rb +15 -12
- data/lib/poolparty/monitors/monitors/stats_monitor.rb +68 -49
- data/lib/poolparty/net/init.rb +12 -7
- data/lib/poolparty/net/remote_instance.rb +48 -64
- data/lib/poolparty/net/remoter/cloud_control.rb +0 -177
- data/lib/poolparty/net/remoter/connections.rb +19 -14
- data/lib/poolparty/net/remoter/interactive.rb +30 -24
- data/lib/poolparty/net/remoter_base.rb +140 -48
- data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +119 -71
- data/lib/poolparty/net/remoter_bases/ec2/ec2_remote_instance.rb +42 -31
- data/lib/poolparty/net/remoter_bases/ec2/ec2_response_object.rb +75 -10
- data/lib/poolparty/net/remoter_bases/libvirt/libvirt.rb +73 -0
- data/lib/poolparty/net/remoter_bases/libvirt/libvirt_instance.rb +64 -0
- data/lib/poolparty/net/remoter_bases/metavirt/metavirt.rb +110 -0
- data/lib/poolparty/net/remoter_bases/metavirt/metavirt_instance.rb +37 -0
- data/lib/poolparty/net/remoter_bases/vmrun/utilities/vm_disk.rb +1 -1
- data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx.rb +1 -1
- data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx_file.rb +117 -117
- data/lib/poolparty/net/remoter_bases/vmrun/vmrun.rb +59 -43
- data/lib/poolparty/net/remoter_bases/vmrun/vmrun_instance.rb +37 -21
- data/lib/poolparty/plugins/apache2/apache.rb +266 -0
- data/lib/poolparty/plugins/apache2/passenger_site.rb +86 -0
- data/lib/poolparty/plugins/apache2/php5.rb +40 -0
- data/lib/poolparty/plugins/apache2/virtual_host.rb +53 -0
- data/lib/poolparty/plugins/authorized_key.rb +29 -0
- data/lib/poolparty/plugins/bind.rb +5 -6
- data/lib/poolparty/plugins/{chef.rb → chef/chef.rb} +32 -44
- data/lib/poolparty/plugins/chef/chef_deploy.rb +55 -0
- data/lib/poolparty/plugins/chef/chef_deploy_definition.rb +32 -0
- data/lib/poolparty/plugins/chef/chef_library.rb +7 -0
- data/lib/poolparty/plugins/chef/chef_recipe.rb +7 -0
- data/lib/poolparty/plugins/chef/include_chef_recipe.rb +14 -0
- data/lib/poolparty/plugins/deploy_directory.rb +41 -26
- data/lib/poolparty/plugins/gem_package.rb +42 -14
- data/lib/poolparty/plugins/git.rb +62 -33
- data/lib/poolparty/{base_packages → plugins}/haproxy.rb +21 -20
- data/lib/poolparty/plugins/heartbeat.rb +16 -0
- data/lib/poolparty/plugins/host.rb +39 -0
- data/lib/poolparty/plugins/line_in_file.rb +24 -2
- data/lib/poolparty/plugins/plugin_template.rb +13 -0
- data/lib/poolparty/{base_packages/poolparty.rb → plugins/poolparty_base_packages.rb} +4 -6
- data/lib/poolparty/plugins/rails_deploy.rb +128 -0
- data/lib/poolparty/{base_packages → plugins}/ruby.rb +3 -3
- data/lib/poolparty/plugins/runit.rb +17 -92
- data/lib/poolparty/plugins/sshkey.rb +50 -0
- data/lib/poolparty/plugins/svn.rb +10 -8
- data/lib/poolparty/poolparty/cloud.rb +224 -61
- data/lib/poolparty/poolparty/default.rb +22 -15
- data/lib/poolparty/poolparty/key.rb +19 -28
- data/lib/poolparty/poolparty/neighborhoods.rb +16 -5
- data/lib/poolparty/poolparty/plugin.rb +49 -13
- data/lib/poolparty/poolparty/pool.rb +32 -9
- data/lib/poolparty/poolparty/poolparty_base_class.rb +65 -45
- data/lib/poolparty/poolparty/resource.rb +24 -49
- data/lib/poolparty/poolparty/service.rb +11 -9
- data/lib/poolparty/provision/boot_strapper.rb +48 -37
- data/lib/poolparty/provision/configurations/chef.rb +6 -5
- data/lib/poolparty/provision/dr_configure.rb +25 -19
- data/lib/poolparty/resources/cron.rb +37 -4
- data/lib/poolparty/resources/directory.rb +30 -0
- data/lib/poolparty/resources/exec.rb +31 -1
- data/lib/poolparty/resources/file.rb +54 -12
- data/lib/poolparty/resources/group.rb +21 -0
- data/lib/poolparty/resources/mount.rb +24 -4
- data/lib/poolparty/resources/package.rb +30 -6
- data/lib/poolparty/resources/remote_file.rb +33 -1
- data/lib/poolparty/resources/service.rb +22 -1
- data/lib/poolparty/resources/symlink.rb +37 -2
- data/lib/poolparty/resources/user.rb +25 -0
- data/lib/poolparty/resources/variable.rb +26 -1
- data/lib/poolparty/resources.rb +42 -0
- data/lib/poolparty/schema.rb +6 -8
- data/lib/poolparty/templates/apache2/apache2.conf +14 -0
- data/lib/poolparty/templates/apache2/base.conf.erb +168 -0
- data/lib/poolparty/templates/apache2/browser_fixes.conf.erb +26 -0
- data/lib/poolparty/templates/apache2/debian.conf.erb +675 -0
- data/lib/poolparty/templates/apache2/default-site.conf.erb +41 -0
- data/lib/poolparty/templates/apache2/directory_indexes.conf.erb +101 -0
- data/lib/poolparty/templates/apache2/logging-syslog.conf.erb +42 -0
- data/lib/poolparty/templates/apache2/mime-extras.conf.erb +211 -0
- data/lib/poolparty/templates/apache2/mime-minimal.conf.erb +15 -0
- data/lib/poolparty/templates/apache2/mpm-worker.conf.erb +20 -0
- data/lib/poolparty/templates/apache2/mpm-worker.erb +20 -0
- data/lib/poolparty/templates/apache2/passenger.conf.erb +20 -0
- data/lib/poolparty/templates/apache2/php.ini.erb +1253 -0
- data/lib/poolparty/templates/apache2/server-status.erb +19 -0
- data/lib/poolparty/templates/{gemrc → gemrc_template} +0 -0
- data/lib/poolparty/templates/haproxy.conf +2 -2
- data/lib/poolparty/templates/monitor.ru +13 -0
- data/lib/poolparty/templates/php.ini.erb +1253 -0
- data/lib/poolparty/verification/verifier_base.rb +10 -0
- data/lib/poolparty/verification/verifiers/http_match.rb +43 -0
- data/lib/poolparty/verification/verifiers/http_status.rb +59 -0
- data/lib/poolparty/verification/verifiers/ping.rb +18 -1
- data/lib/poolparty/verification/verify.rb +6 -0
- data/lib/poolparty.rb +14 -15
- data/lib/poolpartycl.rb +1 -1
- data/spec/bin/bin_spec_helper.rb +1 -0
- data/spec/bin/fixtures/bin_cloud_for_test.rb +0 -6
- data/spec/bin/server-list-active_spec.rb +4 -6
- data/spec/poolparty/core/object_spec.rb +1 -62
- data/spec/poolparty/core/ordered_hash_spec.rb +7 -7
- data/spec/poolparty/core/string_spec.rb +1 -1
- data/spec/poolparty/dependency_resolver/chef_resolver_spec.rb +0 -8
- data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +35 -32
- data/spec/poolparty/extra/deployments_spec.rb +68 -68
- data/spec/poolparty/fixtures/clouds.json +1 -1
- data/spec/poolparty/fixtures/fake_key.pub +1 -0
- data/spec/poolparty/helpers/optioner_spec.rb +4 -11
- data/spec/poolparty/modules/cloud_resourcer_spec.rb +1 -1
- data/spec/poolparty/modules/searchable_paths_spec.rb +83 -0
- data/spec/poolparty/net/remote_instance_spec.rb +1 -2
- data/spec/poolparty/net/remoter_base_spec.rb +7 -11
- data/spec/poolparty/net/remoter_bases/ec2_mocks_and_stubs.rb +9 -11
- data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +6 -56
- data/spec/poolparty/net/remoter_bases/ec2_spec.rb +10 -7
- data/spec/poolparty/net/remoter_spec.rb +2 -3
- data/spec/poolparty/plugins/authorized_key_spec.rb +23 -0
- data/spec/poolparty/plugins/deploydirectory_spec.rb +64 -51
- data/spec/poolparty/plugins/git_spec.rb +8 -10
- data/spec/poolparty/poolparty/cloud_spec.rb +61 -64
- data/spec/poolparty/poolparty/configurers/files/ruby_basic.rb +2 -4
- data/spec/poolparty/poolparty/configurers/files/ruby_plugins.rb +1 -1
- data/spec/poolparty/poolparty/configurers/ruby_spec.rb +1 -6
- data/spec/poolparty/poolparty/default_spec.rb +23 -22
- data/spec/poolparty/poolparty/example_spec.rb +47 -26
- data/spec/poolparty/{base_packages → poolparty}/haproxy_spec.rb +1 -1
- data/spec/poolparty/{base_packages → poolparty}/heartbeat_spec.rb +1 -1
- data/spec/poolparty/poolparty/key_spec.rb +2 -2
- data/spec/poolparty/poolparty/neighborhoods_spec.rb +1 -1
- data/spec/poolparty/poolparty/plugin_model_spec.rb +13 -17
- data/spec/poolparty/poolparty/plugin_spec.rb +7 -7
- data/spec/poolparty/poolparty/pool_spec.rb +4 -10
- data/spec/poolparty/poolparty/resource_spec.rb +25 -29
- data/spec/poolparty/poolparty/script_spec.rb +1 -4
- data/spec/poolparty/poolparty/test_plugins/webserver.rb +27 -25
- data/spec/poolparty/resources/file_spec.rb +5 -4
- data/spec/poolparty/resources/sshkey_spec.rb +39 -40
- data/spec/poolparty/spec_helper.rb +9 -39
- data/tasks/poolparty.rake +29 -1
- data/tasks/spec.rake +39 -1
- data/test/fixtures/fake_clouds.rb +11 -0
- data/test/fixtures/metavirt_cloud.json +1 -0
- data/test/fixtures/test_key +1 -0
- data/test/poolparty/core/array_test.rb +11 -0
- data/test/poolparty/core/hash_test.rb +5 -7
- data/test/poolparty/core/object_test.rb +29 -0
- data/test/poolparty/dependency_resolver/chef_resolver_test.rb +82 -0
- data/test/poolparty/dependency_resolver/puppet_resolver_test.rb +5 -26
- data/test/poolparty/modules/callbacks_test.rb +1 -1
- data/test/poolparty/modules/cloud_dsl_test.rb +10 -8
- data/test/poolparty/monitors/test_base_monitor.rb +17 -0
- data/test/poolparty/monitors/test_monitor_rack.rb +26 -0
- data/test/poolparty/net/remoter_base_test.rb +17 -0
- data/test/poolparty/net/remoter_bases/libvirt/libvirt_test.rb +70 -0
- data/test/poolparty/net/remoter_bases/metavirt/metavirt_test.rb +81 -0
- data/test/poolparty/net/remoter_bases/vmrun/vmrun_test.rb +58 -27
- data/test/poolparty/plugins/chef_deploy_test.rb +37 -0
- data/test/poolparty/plugins/chef_plugin_test.rb +23 -0
- data/test/poolparty/plugins/rails_deploy_test.rb +50 -0
- data/test/poolparty/poolparty/cloud_test.rb +65 -0
- data/test/poolparty/poolparty/isolated_cloud_test.rb +25 -0
- data/test/poolparty/poolparty/neighborhood_test.rb +1 -1
- data/test/poolparty/poolparty/plugin_test.rb +19 -0
- data/test/poolparty/poolparty/pool_test.rb +22 -0
- data/test/poolparty/poolparty/poolparty_base_class_test.rb +53 -15
- data/test/poolparty/poolparty/schema_test.rb +13 -0
- data/test/poolparty/poolparty/template_test.rb +6 -6
- data/test/poolparty/verification/verify_test.rb +7 -3
- data/test/test_helper.rb +15 -4
- data/test/test_methods.rb +11 -0
- data/vendor/chef/apache2/attributes/apache.rb +1 -1
- data/vendor/gems/dslify/LICENSE +20 -0
- data/vendor/gems/dslify/README.rdoc +33 -0
- data/vendor/gems/dslify/Rakefile +56 -0
- data/vendor/gems/dslify/VERSION.yml +4 -0
- data/vendor/gems/dslify/dslify.gemspec +29 -0
- data/vendor/gems/dslify/lib/dslify.rb +81 -0
- data/vendor/gems/dslify/test/dslify_test.rb +283 -0
- data/vendor/gems/dslify/test/test_helper.rb +7 -0
- data/vendor/gems/git-style-binaries/README.markdown +280 -0
- data/vendor/gems/git-style-binaries/Rakefile +64 -0
- data/vendor/gems/git-style-binaries/VERSION.yml +4 -0
- data/vendor/gems/git-style-binaries/doc/EXAMPLES +1 -0
- data/vendor/gems/git-style-binaries/doc/gsb-screencast.png +0 -0
- data/vendor/gems/git-style-binaries/doc/poolparty-binaries.screenplay +412 -0
- data/vendor/gems/git-style-binaries/git-style-binaries.gemspec +78 -0
- data/vendor/gems/git-style-binaries/lib/ext/colorize.rb +198 -0
- data/vendor/gems/git-style-binaries/lib/ext/core.rb +16 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/autorunner.rb +21 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/command.rb +204 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/commands/help.rb +32 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/name_resolver.rb +78 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb +37 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/parser.rb +223 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary.rb +88 -0
- data/vendor/gems/git-style-binaries/test/fixtures/flickr +4 -0
- data/vendor/gems/git-style-binaries/test/fixtures/flickr-download +17 -0
- data/vendor/gems/git-style-binaries/test/fixtures/wordpress +42 -0
- data/vendor/gems/git-style-binaries/test/fixtures/wordpress-categories +18 -0
- data/vendor/gems/git-style-binaries/test/fixtures/wordpress-list +18 -0
- data/vendor/gems/git-style-binaries/test/fixtures/wordpress-post +26 -0
- data/vendor/gems/git-style-binaries/test/git-style-binary/command_test.rb +17 -0
- data/vendor/gems/git-style-binaries/test/git_style_binary_test.rb +21 -0
- data/vendor/gems/git-style-binaries/test/running_binaries_test.rb +224 -0
- data/vendor/gems/git-style-binaries/test/shoulda_macros/matching_stdio.rb +13 -0
- data/vendor/gems/git-style-binaries/test/test_helper.rb +28 -0
- data/vendor/gems/parenting/History.txt +4 -0
- data/vendor/gems/parenting/Manifest.txt +14 -0
- data/vendor/gems/parenting/PostInstall.txt +2 -0
- data/vendor/gems/parenting/README.rdoc +47 -0
- data/vendor/gems/parenting/Rakefile +28 -0
- data/vendor/gems/parenting/lib/parenting/parenting.rb +70 -0
- data/vendor/gems/parenting/lib/parenting.rb +10 -0
- data/vendor/gems/parenting/parenting.gemspec +39 -0
- data/vendor/gems/parenting/script/console +10 -0
- data/vendor/gems/parenting/script/destroy +14 -0
- data/vendor/gems/parenting/script/generate +14 -0
- data/vendor/gems/parenting/test/file_to_eval.rb +9 -0
- data/vendor/gems/parenting/test/test_helper.rb +5 -0
- data/vendor/gems/parenting/test/test_parenting.rb +117 -0
- data/vendor/gems/suitcase/LICENSE +20 -0
- data/vendor/gems/suitcase/README.rdoc +31 -0
- data/vendor/gems/suitcase/Rakefile +57 -0
- data/vendor/gems/suitcase/VERSION.yml +4 -0
- data/vendor/gems/suitcase/lib/suitcase/unzipper.rb +15 -0
- data/vendor/gems/suitcase/lib/suitcase/zipper.rb +167 -0
- data/vendor/gems/suitcase/lib/suitcase.rb +5 -0
- data/vendor/gems/suitcase/suitcase.gemspec +32 -0
- data/vendor/gems/suitcase/test/suitcase_test.rb +108 -0
- data/vendor/gems/suitcase/test/test_dir/box.rb +1 -0
- data/vendor/gems/suitcase/test/test_dir/gems/famoseagle-carrot-0.6.0.gem +0 -0
- data/vendor/gems/suitcase/test/test_dir/test.txt +1 -0
- data/vendor/gems/suitcase/test/test_helper.rb +12 -0
- data/vendor/gems/trollop/FAQ.txt +35 -0
- data/vendor/gems/trollop/History.txt +97 -0
- data/vendor/gems/trollop/Manifest.txt +7 -0
- data/vendor/gems/trollop/README.txt +40 -0
- data/vendor/gems/trollop/Rakefile +36 -0
- data/vendor/gems/trollop/lib/trollop.rb +735 -0
- data/vendor/gems/trollop/release-script.txt +13 -0
- data/vendor/gems/trollop/test/test_trollop.rb +1042 -0
- data/vendor/gems/trollop/www/index.html +167 -0
- metadata +205 -150
- data/bin/cloud-describe +0 -28
- data/bin/cloud-handle-load +0 -27
- data/bin/cloud-rsync +0 -28
- data/bin/cloud-spec +0 -41
- data/bin/messenger-get-current-nodes +0 -14
- data/bin/server-become-master +0 -24
- data/bin/server-build-messenger +0 -28
- data/bin/server-clean-cert-for +0 -15
- data/bin/server-provision +0 -32
- data/bin/server-start-agent +0 -15
- data/bin/server-start-client +0 -29
- data/bin/server-start-master +0 -26
- data/bin/server-start-node +0 -32
- data/bin/server-stop-client +0 -3
- data/bin/server-stop-master +0 -3
- data/bin/server-stop-node +0 -3
- data/bin/server-update-hosts +0 -49
- data/examples/poolparty.rb +0 -12
- data/lib/poolparty/base_packages/heartbeat.rb +0 -58
- data/lib/poolparty/base_packages/runit.rb +0 -21
- data/lib/poolparty/capistrano/cloud_tasks.rb +0 -10
- data/lib/poolparty/capistrano.rb +0 -54
- data/lib/poolparty/config/postlaunchmessage.txt +0 -5
- data/lib/poolparty/core/metaid.rb +0 -15
- data/lib/poolparty/core/module.rb +0 -40
- data/lib/poolparty/extra/deployments.rb +0 -31
- data/lib/poolparty/helpers/display.rb +0 -30
- data/lib/poolparty/net/messenger.rb +0 -57
- data/lib/poolparty/net/remote_bases.rb +0 -21
- data/lib/poolparty/plugins/chef_deploy.rb +0 -58
- data/lib/poolparty/plugins/dynomite.rb +0 -14
- data/lib/poolparty/plugins/nanite.rb +0 -41
- data/lib/poolparty/plugins/rsyncmirror.rb +0 -28
- data/lib/poolparty/plugins/tokyo_tyrant.rb +0 -23
- data/lib/poolparty/poolparty/plugin_model.rb +0 -45
- data/lib/poolparty/resources/host.rb +0 -16
- data/lib/poolparty/resources/sshkey.rb +0 -27
- data/lib/poolparty/services/conditional.rb +0 -46
- data/lib/poolparty/spec/core/string.rb +0 -18
- data/lib/poolparty/spec/matchers/a_spec_extensions_base.rb +0 -26
- data/lib/poolparty/spec/matchers/have_cron.rb +0 -28
- data/lib/poolparty/spec/matchers/have_deploydirectory.rb +0 -15
- data/lib/poolparty/spec/matchers/have_directory.rb +0 -31
- data/lib/poolparty/spec/matchers/have_exec.rb +0 -28
- data/lib/poolparty/spec/matchers/have_file.rb +0 -28
- data/lib/poolparty/spec/matchers/have_gempackage.rb +0 -28
- data/lib/poolparty/spec/matchers/have_git.rb +0 -28
- data/lib/poolparty/spec/matchers/have_host.rb +0 -28
- data/lib/poolparty/spec/matchers/have_mount.rb +0 -28
- data/lib/poolparty/spec/matchers/have_package.rb +0 -28
- data/lib/poolparty/spec/matchers/have_remotefile.rb +0 -28
- data/lib/poolparty/spec/matchers/have_rsyncmirror.rb +0 -28
- data/lib/poolparty/spec/matchers/have_service.rb +0 -28
- data/lib/poolparty/spec/matchers/have_sshkey.rb +0 -28
- data/lib/poolparty/spec/matchers/have_symlink.rb +0 -28
- data/lib/poolparty/spec/matchers/have_variable.rb +0 -32
- data/lib/poolparty/spec/spec/dynamic_matchers.rb +0 -63
- data/lib/poolparty/spec/spec/ensure_matchers_exist.rb +0 -7
- data/lib/poolparty/spec/templates/have_base.rb +0 -28
- data/lib/poolparty/spec.rb +0 -31
- data/spec/poolparty/core/module_spec.rb +0 -15
- data/spec/poolparty/helpers/display_spec.rb +0 -13
- data/spec/poolparty/id_rsa +0 -27
- data/spec/poolparty/net/messenger_spec.rb +0 -16
- data/spec/poolparty/resources/host_spec.rb +0 -35
- data/spec/poolparty/services/conditional_spec.rb +0 -52
- data/spec/poolparty/spec/core/string_spec.rb +0 -57
@@ -20,13 +20,12 @@
|
|
20
20
|
=end
|
21
21
|
module PoolParty
|
22
22
|
|
23
|
-
class ChefResolver< DependencyResolver
|
23
|
+
class ChefResolver < DependencyResolver
|
24
24
|
|
25
25
|
# Compile and add to the zipper
|
26
26
|
def compile(props=@properties_hash, tabs=0, default_namespace="poolparty")
|
27
27
|
base_dir(default_namespace)
|
28
28
|
build_base_recipe_directory( default_namespace )
|
29
|
-
|
30
29
|
# ::Suitcase::Zipper.add( base_dir, "chef/cookbooks")
|
31
30
|
|
32
31
|
_compile(props, tabs, default_namespace)
|
@@ -39,18 +38,13 @@ module PoolParty
|
|
39
38
|
|
40
39
|
def comp(cld_name, props, tabs)
|
41
40
|
|
42
|
-
default_recipe = [
|
43
|
-
resources_to_string(props[:resources],tabs),
|
44
|
-
services_to_string(props[:services],tabs)
|
45
|
-
].join("\n")
|
46
|
-
|
41
|
+
default_recipe = resources_to_string(props[:resources],tabs)
|
47
42
|
::File.open("#{base_dir}/recipes/default.rb", "w+") {|f| f << default_recipe }
|
48
43
|
|
49
44
|
default_recipe
|
50
45
|
end
|
51
46
|
|
52
47
|
def build_base_recipe_directory(nm)
|
53
|
-
dputs "Making new #{base_dir}"
|
54
48
|
::FileUtils.mkdir_p "#{base_dir}"
|
55
49
|
|
56
50
|
[ "recipes", "templates", "attributes" ].each do |bdir|
|
@@ -65,7 +59,11 @@ module PoolParty
|
|
65
59
|
end
|
66
60
|
|
67
61
|
def base_dir(nm="poolparty")
|
68
|
-
@base_dir ||= "#{
|
62
|
+
@base_dir ||= "#{tmp_path}/dr_configure/chef/cookbooks/#{nm}"
|
63
|
+
end
|
64
|
+
|
65
|
+
def tmp_path
|
66
|
+
the_cloud ? the_cloud.tmp_path : "#{Default.tmp_path}/pool/cloud"
|
69
67
|
end
|
70
68
|
|
71
69
|
def options_to_string(opts,tabs=0)
|
@@ -73,7 +71,7 @@ module PoolParty
|
|
73
71
|
end
|
74
72
|
|
75
73
|
def resources_to_string(opts,tabs=0)
|
76
|
-
out = []
|
74
|
+
out = []
|
77
75
|
out << opts.map do |resource|
|
78
76
|
case ty = resource.delete(:pp_type)
|
79
77
|
when "variable"
|
@@ -82,6 +80,8 @@ module PoolParty
|
|
82
80
|
"#{tf(tabs)}include_recipe #{to_option_string(resource.name)}"
|
83
81
|
when "chef_library"
|
84
82
|
"#{tf(tabs)}require #{to_option_string("/etc/chef/lib/#{resource.name}")}"
|
83
|
+
when "plugin"
|
84
|
+
handle_print_service(resource, tabs)
|
85
85
|
else
|
86
86
|
real_type = handle_chef_types(ty)
|
87
87
|
real_name = resource[:name]
|
@@ -89,22 +89,22 @@ module PoolParty
|
|
89
89
|
"#{tf(tabs)}#{real_type} \"#{real_name}\" do\n#{tf(tabs+1)}#{hash_flush_out(res).compact.join("\n#{tf(tabs+1)}")}\n#{tf(tabs)}end"
|
90
90
|
end
|
91
91
|
end
|
92
|
-
out.join("\n")
|
92
|
+
out.compact.join("\n")
|
93
93
|
end
|
94
94
|
|
95
95
|
def handle_print_variable(varhash)
|
96
96
|
o = []
|
97
97
|
if varhash[:namespace]
|
98
98
|
o << ["\n#{varhash[:namespace]} Mash.new unless attribute?('#{varhash[:namespace]}')"]
|
99
|
-
o << "#{varhash[:namespace]}[
|
99
|
+
o << "#{varhash[:namespace]}['#{varhash[:name]}'] = #{to_option_string(varhash[:value])}\n"
|
100
100
|
else
|
101
|
-
o << "poolparty[
|
101
|
+
o << "poolparty['#{varhash[:name]}'] = #{to_option_string(varhash[:value])}"
|
102
102
|
end
|
103
103
|
::File.open("#{base_dir}/attributes/poolparty.rb", "a+") do |f|
|
104
104
|
f << o.join("\n")
|
105
105
|
f << "\n"
|
106
106
|
end
|
107
|
-
|
107
|
+
nil
|
108
108
|
end
|
109
109
|
|
110
110
|
def handle_chef_types(ty)
|
@@ -137,19 +137,15 @@ module PoolParty
|
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
140
|
-
def handle_print_service(
|
141
|
-
|
142
|
-
|
143
|
-
nil
|
144
|
-
else
|
145
|
-
kname = klassname.to_s.gsub(/pool_party_/, '').gsub(/_class/, '')
|
140
|
+
def handle_print_service(plugin, tabs)
|
141
|
+
if plugin && plugin.has_key?(:resources) && !plugin[:resources].empty?
|
142
|
+
kname = plugin.delete(:name).to_s.gsub(/pool_party_/, '').gsub(/_class/, '')
|
146
143
|
str = "\n#{tf(tabs)}# #{kname}\n"
|
147
144
|
str << "#{tf(tabs)}"
|
148
|
-
|
149
|
-
str << _compile(hsh,tabs+1, klassname)
|
150
|
-
end
|
145
|
+
str << _compile(plugin,tabs+1, kname)
|
151
146
|
str << "#{tf(tabs)}"
|
152
147
|
end
|
148
|
+
str
|
153
149
|
end
|
154
150
|
|
155
151
|
# Check if the hash has content and that the content exists here. This is used
|
@@ -165,26 +161,12 @@ module PoolParty
|
|
165
161
|
hsh.merge!({:source => "#{nm}.erb"})
|
166
162
|
end
|
167
163
|
#
|
168
|
-
hsh.delete(:require)
|
164
|
+
hsh.delete(:require)
|
165
|
+
hsh.delete(:requires)
|
169
166
|
hsh.delete(:name) # we don't need the names in the methods
|
170
167
|
hsh
|
171
168
|
end
|
172
169
|
|
173
|
-
# Turn the services into strings using the handle_print_service method
|
174
|
-
# Here we can strip out non-meaningful chef services
|
175
|
-
def services_to_string(opts,tabs=0)
|
176
|
-
if opts
|
177
|
-
str = ""
|
178
|
-
[:control_statements, :conditional].each do |k|
|
179
|
-
opts.delete(k)
|
180
|
-
end
|
181
|
-
opts.map do |klassname, klasshash|
|
182
|
-
str << handle_print_service(klassname, klasshash, tabs)
|
183
|
-
end
|
184
|
-
str
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
170
|
# Handle ensures
|
189
171
|
def handle_actions(key,value)
|
190
172
|
case key
|
@@ -197,6 +179,8 @@ module PoolParty
|
|
197
179
|
|
198
180
|
# Take the keys from the resource hash and turn them into chef-like
|
199
181
|
# meaningful keys. This is how helpers are created for chef
|
182
|
+
#
|
183
|
+
# * <tt>reloads</tt> - todo
|
200
184
|
def to_chef_key(key)
|
201
185
|
case key
|
202
186
|
when :ensures
|
@@ -224,14 +208,29 @@ module PoolParty
|
|
224
208
|
|
225
209
|
# Resolve the value of the resource hash into a meaningful chef
|
226
210
|
# value. Resources are turned into resource strings here
|
211
|
+
#
|
227
212
|
def to_option_string(obj)
|
228
213
|
case obj
|
229
214
|
when PoolParty::Resources::Resource
|
230
215
|
"resources(:#{handle_chef_types(obj.class.to_s.top_level_class.downcase.to_sym)} => \"#{obj.name}\")"
|
231
216
|
when Fixnum
|
232
|
-
|
217
|
+
case obj
|
218
|
+
when /^\d{3}$/
|
219
|
+
"0#{obj.to_i}"
|
220
|
+
else
|
221
|
+
"#{obj.to_i}"
|
222
|
+
end
|
233
223
|
when String
|
234
|
-
|
224
|
+
case obj
|
225
|
+
when /^\d{4}$/
|
226
|
+
"#{obj}"
|
227
|
+
when /^\d{3}$/
|
228
|
+
"0#{obj}"
|
229
|
+
else
|
230
|
+
"\"#{obj}\""
|
231
|
+
end
|
232
|
+
when Proc
|
233
|
+
obj.call # eh
|
235
234
|
when Array
|
236
235
|
# If we are sending a notifies with a second argument
|
237
236
|
if obj[1] && [:immediately, :delayed].include?(obj[1])
|
@@ -10,7 +10,7 @@ module PoolParty
|
|
10
10
|
|
11
11
|
attr_reader :properties_hash, :the_cloud
|
12
12
|
|
13
|
-
def initialize(hsh, contxt=
|
13
|
+
def initialize(hsh, contxt={:tmp_path => "/tmp/poolparty/testpool/testcloud"})
|
14
14
|
raise DependencyResolverException.new('must pass a hash') if hsh.nil? || !(hsh.instance_of?(OrderedHash) || hsh.instance_of?(Hash))
|
15
15
|
@properties_hash = hsh
|
16
16
|
@the_cloud = contxt
|
@@ -6,15 +6,15 @@ module PoolParty
|
|
6
6
|
# Take the cloud dependency tree
|
7
7
|
module DependencyResolverCloudExtensions
|
8
8
|
def to_properties_hash
|
9
|
-
oh =
|
10
|
-
oh[:options] =
|
9
|
+
oh = {}
|
10
|
+
oh[:options] = dsl_options.merge(:cloud_name => name)
|
11
11
|
oh[:resources] = ordered_resources.map {|a| a.to_properties_hash }
|
12
12
|
# oh[:resources] = resources.keys.inject(OrderedHash.new) do |sum,k|
|
13
13
|
# sum.merge(k.to_sym => resources[k].map {|a| a.to_properties_hash } )
|
14
14
|
# end
|
15
|
-
oh[:services] = services.keys.inject(OrderedHash.new) do |sum,k|
|
16
|
-
|
17
|
-
end
|
15
|
+
# oh[:services] = services.keys.inject(OrderedHash.new) do |sum,k|
|
16
|
+
# sum.merge(k.to_sym => services[k].map {|a| a.to_properties_hash } )
|
17
|
+
# end
|
18
18
|
oh
|
19
19
|
end
|
20
20
|
|
@@ -23,7 +23,7 @@ module PoolParty
|
|
23
23
|
# Adds the to_properties_hash method on top of resources, the lowest level
|
24
24
|
module DependencyResolverResourceExtensions
|
25
25
|
def to_properties_hash
|
26
|
-
|
26
|
+
{:pp_type => self.class.to_s.top_level_class}.merge!(dsl_options)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -5,12 +5,6 @@ module PoolParty
|
|
5
5
|
|
6
6
|
class PuppetResolver< DependencyResolver
|
7
7
|
|
8
|
-
permitted_resource_options({
|
9
|
-
:global => [:require, :name],
|
10
|
-
:file => [:content, :mode, :user],
|
11
|
-
:exec => [:command, :path, :refreshonly]
|
12
|
-
})
|
13
|
-
|
14
8
|
def initialize(hsh=nil)
|
15
9
|
super(hsh)
|
16
10
|
end
|
@@ -22,11 +16,7 @@ module PoolParty
|
|
22
16
|
end
|
23
17
|
|
24
18
|
def compile(props=@properties_hash, tabs=0)
|
25
|
-
[
|
26
|
-
# options_to_string(props[:options],tabs),
|
27
|
-
resources_to_string(props[:resources],tabs),
|
28
|
-
services_to_string(props[:services],tabs)
|
29
|
-
].join("\n")
|
19
|
+
resources_to_string(props[:resources],tabs)
|
30
20
|
end
|
31
21
|
|
32
22
|
def options_to_string(opts,tabs=0)
|
@@ -62,6 +52,8 @@ module PoolParty
|
|
62
52
|
case ty = resource.delete(:pp_type)
|
63
53
|
when "variable"
|
64
54
|
handle_print_variable(resource[:name], resource[:value], :variable)
|
55
|
+
when "plugin"
|
56
|
+
handle_print_service(resource.delete(:name), resource, tabs)
|
65
57
|
else
|
66
58
|
real_name = resource[:name]
|
67
59
|
handle_print_resource(resource, ty.to_sym, tabs)
|
@@ -73,19 +65,6 @@ module PoolParty
|
|
73
65
|
|
74
66
|
def permitted_option?(ty, key)
|
75
67
|
true
|
76
|
-
# if permitted_resource_options.has_key?(ty)
|
77
|
-
# permitted_resource_options[ty].include?(key) || true #permitted_resource_options[:global].include?(key)
|
78
|
-
# else
|
79
|
-
# true
|
80
|
-
# end
|
81
|
-
end
|
82
|
-
|
83
|
-
def services_to_string(opts,tabs=0)
|
84
|
-
if opts
|
85
|
-
opts.map do |klassname, klasshash|
|
86
|
-
handle_print_service(klassname, klasshash, tabs)
|
87
|
-
end
|
88
|
-
end
|
89
68
|
end
|
90
69
|
|
91
70
|
def hash_flush_out(hash, pre="", post="")
|
@@ -107,6 +86,10 @@ module PoolParty
|
|
107
86
|
"present"
|
108
87
|
end
|
109
88
|
end
|
89
|
+
|
90
|
+
if hsh.has_key?(:requires)
|
91
|
+
hsh[:require] = hsh.delete(:requires)
|
92
|
+
end
|
110
93
|
new_hsh ={}
|
111
94
|
hsh.each do |k,v|
|
112
95
|
new_hsh.merge!({k => to_option_string(v)})
|
@@ -135,29 +118,12 @@ module PoolParty
|
|
135
118
|
end
|
136
119
|
end
|
137
120
|
|
138
|
-
def handle_print_service(klassname,
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
klassarray.each do |klasshash|
|
145
|
-
# str << "\n#{tf(tabs+1)}#{compile(hsh,tabs+1)}"
|
146
|
-
str << "#{tf(tabs)}case $#{klasshash[:options][:variable]} {"
|
147
|
-
str << "#{klasshash[:services][:control_statements].map do |k,v|"\n#{tf(tabs+1)}#{k} : {#{compile(v.to_properties_hash, tabs+2)}#{tf(tabs+1)}\n#{tf(tabs)}}" end}"
|
148
|
-
end
|
149
|
-
str << "#{tf(tabs)}}"
|
150
|
-
|
151
|
-
else
|
152
|
-
kname = klassname.to_s.gsub(/pool_party_/, '').gsub(/_class/, '')
|
153
|
-
str = "\n#{tf(tabs)}# #{kname}\n"
|
154
|
-
str << "#{tf(tabs)}class #{kname} {"
|
155
|
-
klassarray.each do |hsh|
|
156
|
-
str << "\n#{tf(tabs+1)}#{compile(hsh,tabs+1)}"
|
157
|
-
end
|
158
|
-
str << "#{tf(tabs)}} include #{kname}"
|
159
|
-
|
160
|
-
end
|
121
|
+
def handle_print_service(klassname, plugin, tabs)
|
122
|
+
kname = klassname.to_s.gsub(/pool_party_/, '').gsub(/_class/, '')
|
123
|
+
str = "\n#{tf(tabs)}# #{kname}\n"
|
124
|
+
str << "#{tf(tabs)}class #{kname} {"
|
125
|
+
str << "\n#{tf(tabs+1)}#{compile(plugin,tabs+1)}"
|
126
|
+
str << "#{tf(tabs)}} include #{kname}"
|
161
127
|
end
|
162
128
|
|
163
129
|
def handle_print_variable(name, value, tabs)
|
@@ -197,4 +163,4 @@ module PoolParty
|
|
197
163
|
|
198
164
|
end
|
199
165
|
|
200
|
-
end
|
166
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
class MasterException < Exception
|
2
|
-
|
2
|
+
@messages = {
|
3
3
|
:no_ip => "Master does not have an ip or has not been launched"
|
4
4
|
}
|
5
5
|
attr_reader :message
|
6
6
|
|
7
7
|
def initialize(type=:no_ip, note="")
|
8
|
-
@message = "Master Exception: #{
|
8
|
+
@message = "Master Exception: #{@messages[type]} #{note}"
|
9
9
|
end
|
10
10
|
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
module PoolParty
|
2
|
+
# Provides accurate date and time measurements using Date#advance and
|
3
|
+
# Time#advance, respectively. It mainly supports the methods on Numeric,
|
4
|
+
# such as in this example:
|
5
|
+
#
|
6
|
+
# 1.month.ago # equivalent to Time.now.advance(:months => -1)
|
7
|
+
class Duration
|
8
|
+
attr_accessor :value, :parts
|
9
|
+
|
10
|
+
def initialize(value, parts) #:nodoc:
|
11
|
+
@value, @parts = value, parts
|
12
|
+
end
|
13
|
+
|
14
|
+
# Adds another Duration or a Numeric to this Duration. Numeric values
|
15
|
+
# are treated as seconds.
|
16
|
+
def +(other)
|
17
|
+
if Duration === other
|
18
|
+
Duration.new(value + other.value, @parts + other.parts)
|
19
|
+
else
|
20
|
+
Duration.new(value + other, @parts + [[:seconds, other]])
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Subtracts another Duration or a Numeric from this Duration. Numeric
|
25
|
+
# values are treated as seconds.
|
26
|
+
def -(other)
|
27
|
+
self + (-other)
|
28
|
+
end
|
29
|
+
|
30
|
+
def -@ #:nodoc:
|
31
|
+
Duration.new(-value, parts.map { |type,number| [type, -number] })
|
32
|
+
end
|
33
|
+
|
34
|
+
def is_a?(klass) #:nodoc:
|
35
|
+
klass == Duration || super
|
36
|
+
end
|
37
|
+
|
38
|
+
# Returns true if <tt>other</tt> is also a Duration instance with the
|
39
|
+
# same <tt>value</tt>, or if <tt>other == value</tt>.
|
40
|
+
def ==(other)
|
41
|
+
if Duration === other
|
42
|
+
other.value == value
|
43
|
+
else
|
44
|
+
other == value
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.===(other) #:nodoc:
|
49
|
+
other.is_a?(Duration) rescue super
|
50
|
+
end
|
51
|
+
|
52
|
+
# Calculates a new Time or Date that is as far in the future
|
53
|
+
# as this Duration represents.
|
54
|
+
def since(time = ::Time.current)
|
55
|
+
sum(1, time)
|
56
|
+
end
|
57
|
+
alias :from_now :since
|
58
|
+
|
59
|
+
# Calculates a new Time or Date that is as far in the past
|
60
|
+
# as this Duration represents.
|
61
|
+
def ago(time = ::Time.current)
|
62
|
+
sum(-1, time)
|
63
|
+
end
|
64
|
+
alias :until :ago
|
65
|
+
|
66
|
+
def inspect #:nodoc:
|
67
|
+
consolidated = parts.inject(::Hash.new(0)) { |h,part| h[part.first] += part.last; h }
|
68
|
+
[:years, :months, :days, :minutes, :seconds].map do |length|
|
69
|
+
n = consolidated[length]
|
70
|
+
"#{n} #{n == 1 ? length.to_s.singularize : length.to_s}" if n.nonzero?
|
71
|
+
end.compact.to_sentence
|
72
|
+
end
|
73
|
+
|
74
|
+
protected
|
75
|
+
|
76
|
+
def sum(sign, time = ::Time.current) #:nodoc:
|
77
|
+
parts.inject(time) do |t,(type,number)|
|
78
|
+
if t.acts_like?(:time) || t.acts_like?(:date)
|
79
|
+
if type == :seconds
|
80
|
+
t.since(sign * number)
|
81
|
+
else
|
82
|
+
t.advance(type => sign * number)
|
83
|
+
end
|
84
|
+
else
|
85
|
+
raise ::ArgumentError, "expected a time or date, got #{time.inspect}"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
private
|
91
|
+
|
92
|
+
def method_missing(method, *args, &block) #:nodoc:
|
93
|
+
value.send(method, *args)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -9,10 +9,15 @@ module PoolParty
|
|
9
9
|
class Optioner
|
10
10
|
include Dslify
|
11
11
|
|
12
|
+
attr_accessor :loaded_pool, :loaded_clouds, :loaded_pools
|
13
|
+
|
14
|
+
dsl_methods :spec,
|
15
|
+
:num,
|
16
|
+
:cloudname,
|
17
|
+
:poolname
|
18
|
+
|
12
19
|
default_options( :verbose => false,
|
13
|
-
:quiet => false
|
14
|
-
:cloudname => false,
|
15
|
-
:poolname => false)
|
20
|
+
:quiet => false)
|
16
21
|
|
17
22
|
def initialize(args=[], opts={}, &block)
|
18
23
|
boolean_args << opts[:boolean_args] if opts.has_key?(:boolean_args)
|
@@ -75,8 +80,8 @@ module PoolParty
|
|
75
80
|
end
|
76
81
|
|
77
82
|
def parse_options(&blk)
|
78
|
-
self.spec
|
79
|
-
self.num
|
83
|
+
self.spec nil
|
84
|
+
self.num nil
|
80
85
|
|
81
86
|
progname = $0.include?("-") ? "#{::File.basename($0[/(\w+)-/, 1])} #{::File.basename($0[/-(.*)/, 1])}" : ::File.basename($0)
|
82
87
|
@opts = OptionParser.new
|
@@ -89,7 +94,7 @@ module PoolParty
|
|
89
94
|
@opts.separator "Options:"
|
90
95
|
|
91
96
|
@opts.on('-v', '--verbose', 'Be verbose') { self.verbose true }
|
92
|
-
@opts.on('-d', "--debug", "Debug setting") { self.debugging true }
|
97
|
+
@opts.on('-d', "--debug", "Debug setting") { self.debugging = true }
|
93
98
|
@opts.on('-s [file]', '--spec-file [file]', 'Set the spec file') { |file| self.spec file.chomp }
|
94
99
|
@opts.on('-t', '--test', 'Testing mode') { self.testing true }
|
95
100
|
|
@@ -106,20 +111,20 @@ module PoolParty
|
|
106
111
|
@opts.parse(@arguments.dup)
|
107
112
|
|
108
113
|
process_options
|
109
|
-
output_options if verbose
|
114
|
+
output_options if verbose? && verbose
|
110
115
|
|
111
116
|
if @load_pools
|
112
|
-
|
113
|
-
|
114
|
-
|
117
|
+
@loaded_pool = load_pool( spec ? spec : Binary.get_existing_spec_location)
|
118
|
+
@loaded_clouds = extract_cloud_from_options(self)
|
119
|
+
@loaded_pools = extract_pool_from_options(self)
|
115
120
|
|
116
121
|
reject_junk_options!
|
117
122
|
raise CloudNotFoundException.new("Please specify your cloud with -s, move it to ./clouds.rb or in your POOL_SPEC environment variable") unless loaded_clouds && !loaded_clouds.empty?
|
118
123
|
loaded_pools.each do |pl|
|
119
|
-
pl.
|
124
|
+
pl.dsl_options.merge!(self.dsl_options)
|
120
125
|
end
|
121
126
|
loaded_clouds.each do |cl|
|
122
|
-
cl.
|
127
|
+
cl.dsl_options.merge!(self.dsl_options)
|
123
128
|
end
|
124
129
|
end
|
125
130
|
end
|
@@ -153,4 +158,4 @@ module PoolParty
|
|
153
158
|
def extract_pool_from_options(o)
|
154
159
|
o.poolname ? [pool(o.poolname.downcase.to_sym)] : pools.collect {|n,pl| pl}
|
155
160
|
end
|
156
|
-
end
|
161
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
module PoolParty
|
2
|
+
module Installers
|
3
|
+
class BaseInstaller
|
4
|
+
|
5
|
+
include ::PoolParty::Remote
|
6
|
+
include ::PoolParty::Pinger
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
self.__send__ :welcome_message
|
10
|
+
commands.each {|c| self.__send__ c.to_sym }
|
11
|
+
self.__send__ :closing_message
|
12
|
+
end
|
13
|
+
|
14
|
+
def welcome_message
|
15
|
+
welcome_msg = <<-EOE
|
16
|
+
We are going to take you through the installation process of PoolParty.
|
17
|
+
|
18
|
+
First, we'll setup your environment so using PoolParty will be a breeze
|
19
|
+
EOE
|
20
|
+
|
21
|
+
colored_say "Welcome to PoolParty!", :help
|
22
|
+
say welcome_msg
|
23
|
+
begin
|
24
|
+
t = colored_ask "Press enter to continue or Ctrl+C to exit"
|
25
|
+
rescue Exception => e
|
26
|
+
say <<-EOE
|
27
|
+
|
28
|
+
Cancelled PoolParty installation
|
29
|
+
|
30
|
+
You can always restart this by typing:
|
31
|
+
install-poolparty
|
32
|
+
EOE
|
33
|
+
exit 0
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
def closing_message
|
39
|
+
closing_message = <<-EOE
|
40
|
+
You are now set to ride the waves with PoolParty! You'll notice there is a clouds.rb file in your current directory. You can start your new cloud
|
41
|
+
by typing:
|
42
|
+
|
43
|
+
cloud start
|
44
|
+
|
45
|
+
You can start your clouds.rb. More samples are available here:
|
46
|
+
http://github.com/auser/poolparty-examples/tree/master
|
47
|
+
EOE
|
48
|
+
say closing_message
|
49
|
+
end
|
50
|
+
|
51
|
+
def commands
|
52
|
+
@commands ||= []
|
53
|
+
end
|
54
|
+
|
55
|
+
protected
|
56
|
+
|
57
|
+
def ask_with_help(opts={}, &block)
|
58
|
+
help_str = opts[:help]
|
59
|
+
message = opts[:message]
|
60
|
+
|
61
|
+
o = ask("#{message} (h for help)") do |q|
|
62
|
+
q.validate = opts[:validate] if opts.has_key?(:validate)
|
63
|
+
end
|
64
|
+
|
65
|
+
if %w(h H).include?(o)
|
66
|
+
colored_say help_str, :help
|
67
|
+
ask_with_help(opts, &block)
|
68
|
+
else
|
69
|
+
block.call(o)
|
70
|
+
end
|
71
|
+
o
|
72
|
+
end
|
73
|
+
|
74
|
+
def rescued_ask(m, r)
|
75
|
+
begin
|
76
|
+
t = colored_ask m
|
77
|
+
rescue Exception => e
|
78
|
+
say r
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def colored_ask(str, color = :notice)
|
83
|
+
setup_colors
|
84
|
+
ask("<%= color(\"#{str}\", :#{color}) %>")
|
85
|
+
end
|
86
|
+
|
87
|
+
def colored_say(str, color = :headline)
|
88
|
+
setup_colors
|
89
|
+
say("<%= color(\"#{str}\", :#{color}) %>")
|
90
|
+
end
|
91
|
+
|
92
|
+
def setup_colors
|
93
|
+
unless @setup_colors
|
94
|
+
ft = HighLine::ColorScheme.new do |cs|
|
95
|
+
cs[:headline] = [ :bold, :yellow, :on_black ]
|
96
|
+
cs[:horizontal_line] = [ :bold, :white, :on_blue]
|
97
|
+
cs[:critical] = [ :yellow, :on_red ]
|
98
|
+
cs[:error] = [ :bold, :red ]
|
99
|
+
cs[:help] = [ :bold, :white, :on_blue]
|
100
|
+
cs[:notice] = [ :blue, :on_white]
|
101
|
+
end
|
102
|
+
|
103
|
+
HighLine.color_scheme = ft
|
104
|
+
@setup_colors = true
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
Dir["#{::File.dirname(__FILE__)}/*.rb"].each {|lib| require lib }
|