poolparty 0.2.69 → 0.2.84
Sign up to get free protection for your applications and to get access to all the features.
- data/Capfile +1 -0
- data/History.txt +6 -0
- data/Manifest.txt +140 -143
- data/PostInstall.txt +1 -1
- data/README.txt +2 -0
- data/bin/cloud-configure +5 -2
- data/bin/cloud-handle-load +3 -3
- data/bin/cloud-maintain +3 -3
- data/bin/cloud-provision +6 -5
- data/bin/cloud-rsync +28 -0
- data/bin/cloud-setup-dev +25 -0
- data/bin/cloud-spec +40 -0
- data/bin/cloud-start +5 -3
- data/bin/server-clean-cert-for +15 -0
- data/bin/server-rerun +0 -1
- data/bin/server-start-client +1 -1
- data/bin/server-start-master +1 -1
- data/bin/server-start-node +1 -1
- data/bin/server-update-hosts +4 -3
- data/bin/server-write-new-nodes +26 -0
- data/generators/poolspec/USAGE +2 -2
- data/generators/poolspec/poolspec_generator.rb +1 -1
- data/lib/erlang/messenger/Makefile +15 -0
- data/lib/erlang/messenger/ebin/client_app.beam +0 -0
- data/lib/erlang/messenger/ebin/client_server.beam +0 -0
- data/lib/erlang/messenger/ebin/erl_crash.dump +10326 -0
- data/lib/erlang/messenger/ebin/master_app.beam +0 -0
- data/lib/erlang/messenger/ebin/node_app.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_client_old.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_client_supervisor.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_event_manager.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master_event_handler.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_node.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_packager.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_spawner.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_strings.beam +0 -0
- data/lib/erlang/messenger/ebin/utils.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/Makefile +28 -0
- data/lib/erlang/messenger/lib/eunit/ebin/autoload.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/code_monitor.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_autoexport.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_data.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_lib.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_proc.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_serial.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_server.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_striptests.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_test.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_tests.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_tty.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/file_monitor.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/src/Makefile +46 -0
- data/lib/erlang/messenger/src/pm_master.erl +5 -0
- data/lib/erlang/messenger/src/pm_node.erl +2 -3
- data/lib/erlang/messenger/src/pm_spawner.erl +213 -0
- data/lib/poolparty/base_packages/heartbeat.rb +57 -43
- data/lib/poolparty/base_packages/poolparty.rb +18 -15
- data/lib/poolparty/capistrano.rb +18 -0
- data/lib/poolparty/core/class.rb +24 -0
- data/lib/poolparty/core/kernel.rb +7 -0
- data/lib/poolparty/core/module.rb +2 -2
- data/lib/poolparty/core/string.rb +1 -1
- data/lib/poolparty/dependency_resolutions/puppet.rb +10 -2
- data/lib/poolparty/exceptions/ProvisionerException.rb +5 -0
- data/lib/poolparty/extra/deployments.rb +31 -0
- data/lib/poolparty/helpers/binary.rb +14 -2
- data/lib/poolparty/helpers/optioner.rb +61 -22
- data/lib/poolparty/helpers/ruberl.rb +33 -0
- data/lib/poolparty/modules/cloud_dsl.rb +2 -1
- data/lib/poolparty/modules/cloud_resourcer.rb +30 -6
- data/lib/poolparty/modules/configurable.rb +2 -0
- data/lib/poolparty/modules/file_writer.rb +4 -4
- data/lib/poolparty/modules/resourcing_dsl.rb +5 -5
- data/lib/poolparty/monitors/base_monitor.rb +1 -1
- data/lib/poolparty/monitors/monitors/cpu_monitor.rb +2 -2
- data/lib/poolparty/net/messenger.rb +1 -1
- data/lib/poolparty/net/remote.rb +2 -2
- data/lib/poolparty/net/remote_bases/ec2.rb +51 -11
- data/lib/poolparty/net/remote_instance.rb +7 -3
- data/lib/poolparty/net/remoter.rb +72 -24
- data/lib/poolparty/net/remoter_base.rb +10 -0
- data/lib/poolparty/plugins/deploydirectory.rb +10 -5
- data/lib/poolparty/plugins/git.rb +51 -0
- data/lib/poolparty/{pool → poolparty}/base.rb +4 -2
- data/lib/poolparty/{pool → poolparty}/cloud.rb +32 -10
- data/lib/poolparty/{pool → poolparty}/plugin_model.rb +4 -4
- data/lib/poolparty/{pool → poolparty}/pool.rb +2 -2
- data/lib/poolparty/{pool → poolparty}/resource.rb +33 -15
- data/lib/poolparty/{pool → poolparty}/resources/class_package.rb +3 -3
- data/lib/poolparty/{pool → poolparty}/resources/directory.rb +6 -3
- data/lib/poolparty/{pool → poolparty}/resources/exec.rb +2 -5
- data/lib/poolparty/{pool → poolparty}/resources/file.rb +3 -3
- data/lib/poolparty/{pool → poolparty}/resources/package.rb +1 -1
- data/lib/poolparty/{pool → poolparty}/resources/remote_file.rb +1 -1
- data/lib/poolparty/poolparty/resources/remote_user.rb +17 -0
- data/lib/poolparty/{pool → poolparty}/resources/sshkey.rb +5 -1
- data/lib/poolparty/{pool → poolparty}/script.rb +1 -1
- data/lib/poolparty/provisioners/capistrano/capistrano.rb +127 -0
- data/lib/poolparty/provisioners/capistrano/capistrano_configurer.rb +58 -0
- data/lib/poolparty/provisioners/capistrano/recipies/base.rb +104 -0
- data/lib/poolparty/provisioners/capistrano/recipies/master.rb +121 -0
- data/lib/poolparty/provisioners/capistrano/recipies/slave.rb +12 -0
- data/lib/poolparty/provisioners/provisioner_base.rb +204 -0
- data/lib/poolparty/spec/core/string.rb +16 -0
- data/lib/poolparty/spec/matchers/a_spec_extensions_base.rb +26 -0
- data/lib/poolparty/spec/matchers/have_cron.rb +28 -0
- data/lib/poolparty/spec/matchers/have_deploydirectory.rb +15 -0
- data/lib/poolparty/spec/matchers/have_directory.rb +31 -0
- data/lib/poolparty/spec/matchers/have_exec.rb +28 -0
- data/lib/poolparty/spec/matchers/have_file.rb +28 -0
- data/lib/poolparty/spec/matchers/have_gempackage.rb +28 -0
- data/lib/poolparty/spec/matchers/have_git.rb +28 -0
- data/lib/poolparty/spec/matchers/have_host.rb +28 -0
- data/lib/poolparty/spec/matchers/have_mount.rb +28 -0
- data/lib/poolparty/spec/matchers/have_package.rb +28 -0
- data/lib/poolparty/spec/matchers/have_remotefile.rb +28 -0
- data/lib/poolparty/spec/matchers/have_rsyncmirror.rb +28 -0
- data/lib/poolparty/spec/matchers/have_service.rb +28 -0
- data/lib/poolparty/spec/matchers/have_sshkey.rb +28 -0
- data/lib/poolparty/spec/matchers/have_symlink.rb +28 -0
- data/lib/poolparty/spec/matchers/have_variable.rb +32 -0
- data/lib/poolparty/spec/spec/dynamic_matchers.rb +63 -0
- data/lib/poolparty/spec/spec/ensure_matchers_exist.rb +7 -0
- data/lib/poolparty/spec/templates/have_base.rb +28 -0
- data/lib/poolparty/templates/authkeys +1 -1
- data/lib/poolparty/templates/gem +12 -10
- data/lib/poolparty/templates/ha.cf +9 -11
- data/lib/poolparty/templates/haresources +1 -1
- data/lib/poolparty/templates/logd.cf +42 -0
- data/lib/poolparty/templates/puppet.conf +18 -8
- data/lib/poolparty/templates/puppetcleaner +9 -3
- data/lib/poolparty/templates/puppetrerun +16 -3
- data/lib/poolparty/templates/puppetrunner +1 -1
- data/lib/poolparty/version.rb +1 -1
- data/lib/poolparty.rb +12 -8
- data/lib/poolpartyspec.rb +34 -0
- data/poolparty.gemspec +151 -149
- data/spec/poolparty/aska/aska_spec.rb +0 -5
- data/spec/poolparty/bin/console_spec.rb +3 -0
- data/spec/poolparty/extra/deployments_spec.rb +64 -0
- data/spec/poolparty/helpers/binary_spec.rb +1 -1
- data/spec/poolparty/helpers/optioner_spec.rb +17 -4
- data/spec/poolparty/modules/cloud_resourcer_spec.rb +19 -2
- data/spec/poolparty/modules/configurable_spec.rb +2 -2
- data/spec/poolparty/net/remote_bases/ec2_spec.rb +5 -2
- data/spec/poolparty/net/remote_instance_spec.rb +5 -0
- data/spec/poolparty/net/remote_spec.rb +24 -31
- data/spec/poolparty/net/remoter_base_spec.rb +11 -6
- data/spec/poolparty/net/remoter_spec.rb +55 -27
- data/spec/poolparty/plugins/deploydirectory_spec.rb +1 -0
- data/spec/poolparty/plugins/git_spec.rb +45 -0
- data/spec/poolparty/{pool → poolparty}/cloud_spec.rb +41 -0
- data/spec/poolparty/{pool → poolparty}/plugin_spec.rb +1 -1
- data/spec/poolparty/{pool → poolparty}/pool_spec.rb +1 -1
- data/spec/poolparty/{pool → poolparty}/resource_spec.rb +15 -2
- data/spec/poolparty/poolparty/resources/user_spec.rb +38 -0
- data/spec/poolparty/poolparty/test_plugins/virtual_host_template.erb +0 -0
- data/spec/poolparty/poolparty_spec.rb +1 -1
- data/spec/poolparty/provisioners/capistrano/capistrano_spec.rb +27 -0
- data/spec/poolparty/provisioners/provisioner_base_spec.rb +120 -0
- data/spec/poolparty/spec/core/string_spec.rb +57 -0
- data/spec/poolparty/spec_helper.rb +48 -6
- data/tasks/deployment.rake +3 -5
- data/tasks/spec.rake +2 -3
- data/website/index.html +2 -2
- metadata +150 -148
- data/lib/erlang/messenger/lib/eunit/.svn/all-wcprops +0 -53
- data/lib/erlang/messenger/lib/eunit/.svn/entries +0 -140
- data/lib/erlang/messenger/lib/eunit/.svn/format +0 -1
- data/lib/erlang/messenger/lib/eunit/.svn/prop-base/NOTES.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/AUTHORS.svn-base +0 -2
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/CHANGELOG.svn-base +0 -14
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/COPYING.svn-base +0 -504
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/NOTES.svn-base +0 -276
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/README.svn-base +0 -3
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/sys.config.svn-base +0 -9
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/vsn.mk.svn-base +0 -1
- data/lib/erlang/messenger/lib/eunit/doc/.svn/all-wcprops +0 -59
- data/lib/erlang/messenger/lib/eunit/doc/.svn/entries +0 -142
- data/lib/erlang/messenger/lib/eunit/doc/.svn/format +0 -1
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/erlang.png.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/eunit.html.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/index.html.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/modules-frame.html.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/overview-summary.html.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/packages-frame.html.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/edoc-info.svn-base +0 -3
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/erlang.png.svn-base +0 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/eunit.html.svn-base +0 -172
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/index.html.svn-base +0 -17
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/modules-frame.html.svn-base +0 -12
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview-summary.html.svn-base +0 -984
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview.edoc.svn-base +0 -980
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/packages-frame.html.svn-base +0 -11
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/stylesheet.css.svn-base +0 -55
- data/lib/erlang/messenger/lib/eunit/ebin/.svn/all-wcprops +0 -5
- data/lib/erlang/messenger/lib/eunit/ebin/.svn/dir-prop-base +0 -8
- data/lib/erlang/messenger/lib/eunit/ebin/.svn/entries +0 -28
- data/lib/erlang/messenger/lib/eunit/ebin/.svn/format +0 -1
- data/lib/erlang/messenger/lib/eunit/examples/.svn/all-wcprops +0 -23
- data/lib/erlang/messenger/lib/eunit/examples/.svn/entries +0 -66
- data/lib/erlang/messenger/lib/eunit/examples/.svn/format +0 -1
- data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/eunit_examples.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/fib.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/eunit_examples.erl.svn-base +0 -339
- data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/fib.erl.svn-base +0 -19
- data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/tests.txt.svn-base +0 -1
- data/lib/erlang/messenger/lib/eunit/include/.svn/all-wcprops +0 -11
- data/lib/erlang/messenger/lib/eunit/include/.svn/entries +0 -41
- data/lib/erlang/messenger/lib/eunit/include/.svn/format +0 -1
- data/lib/erlang/messenger/lib/eunit/include/.svn/prop-base/eunit.hrl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/include/.svn/text-base/eunit.hrl.svn-base +0 -313
- data/lib/erlang/messenger/lib/eunit/src/.svn/all-wcprops +0 -113
- data/lib/erlang/messenger/lib/eunit/src/.svn/entries +0 -259
- data/lib/erlang/messenger/lib/eunit/src/.svn/format +0 -1
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/autoload.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/code_monitor.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_autoexport.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_data.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_internal.hrl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_lib.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_proc.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_serial.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_server.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_striptests.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_test.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tests.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tty.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/file_monitor.erl.svn-base +0 -5
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/autoload.erl.svn-base +0 -388
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/code_monitor.erl.svn-base +0 -243
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.app.src.svn-base +0 -21
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.appup.src.svn-base +0 -1
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.erl.svn-base +0 -196
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_autoexport.erl.svn-base +0 -102
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_data.erl.svn-base +0 -798
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_internal.hrl.svn-base +0 -48
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_lib.erl.svn-base +0 -682
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_proc.erl.svn-base +0 -552
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_serial.erl.svn-base +0 -157
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_server.erl.svn-base +0 -340
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_striptests.erl.svn-base +0 -64
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_test.erl.svn-base +0 -334
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tests.erl.svn-base +0 -45
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tty.erl.svn-base +0 -272
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/file_monitor.erl.svn-base +0 -409
- data/lib/erlang/messenger/src/pm_client_old.erl +0 -52
- data/lib/poolparty/helpers/provisioner_base.rb +0 -346
- data/lib/poolparty/helpers/provisioners/master.rb +0 -205
- data/lib/poolparty/helpers/provisioners/slave.rb +0 -64
- data/spec/poolparty/helpers/provisioner_base_spec.rb +0 -134
- data/spec/poolparty/helpers/provisioners/master_spec.rb +0 -54
- data/spec/poolparty/helpers/provisioners/slave_spec.rb +0 -28
- /data/lib/poolparty/{pool → poolparty}/custom_resource.rb +0 -0
- /data/lib/poolparty/{pool → poolparty}/loggable.rb +0 -0
- /data/lib/poolparty/{pool → poolparty}/plugin.rb +0 -0
- /data/lib/poolparty/{pool → poolparty}/resources/conditional.rb +0 -0
- /data/lib/poolparty/{pool → poolparty}/resources/cron.rb +0 -0
- /data/lib/poolparty/{pool → poolparty}/resources/custom_service.rb +0 -0
- /data/lib/poolparty/{pool → poolparty}/resources/gem_package.rb +0 -0
- /data/lib/poolparty/{pool → poolparty}/resources/host.rb +0 -0
- /data/lib/poolparty/{pool → poolparty}/resources/mount.rb +0 -0
- /data/lib/poolparty/{pool → poolparty}/resources/service.rb +0 -0
- /data/lib/poolparty/{pool → poolparty}/resources/symlink.rb +0 -0
- /data/lib/poolparty/{pool → poolparty}/resources/variable.rb +0 -0
- /data/log/{pool.logs → pool.log} +0 -0
- /data/spec/poolparty/{pool/test_plugins/virtual_host_template.erb → net/log/pool.log} +0 -0
- /data/spec/poolparty/{pool → poolparty}/base_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/configurers/files/ruby_basic.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/configurers/files/ruby_plugins.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/configurers/ruby_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/custom_resource_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/example_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/plugin_model_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/class_package_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/conditional_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/cron_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/directory_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/exec_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/file_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/gem_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/host_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/package_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/remote_file_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/service_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/sshkey_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/symlink_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/resources/variable_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/script_spec.rb +0 -0
- /data/spec/poolparty/{pool → poolparty}/test_plugins/sshkey_test +0 -0
- /data/spec/poolparty/{pool → poolparty}/test_plugins/webserver.rb +0 -0
@@ -2,7 +2,11 @@ require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
2
|
|
3
3
|
class ResourcerTestClass
|
4
4
|
include CloudResourcer
|
5
|
-
include Configurable
|
5
|
+
include Configurable
|
6
|
+
|
7
|
+
default_options({
|
8
|
+
:minimum_runtime => 50.minutes
|
9
|
+
})
|
6
10
|
|
7
11
|
def initialize(&block)
|
8
12
|
store_block(&block) if block
|
@@ -35,10 +39,23 @@ describe "CloudResourcer" do
|
|
35
39
|
@tc.instances 4..10
|
36
40
|
@tc.minimum_instances.should == 4
|
37
41
|
end
|
38
|
-
it "should
|
42
|
+
it "should be able to accept a Fixnum and set the minimum_instances and maximum_instances" do
|
43
|
+
@tc.instances 1
|
44
|
+
@tc.minimum_instances.should == 1
|
45
|
+
@tc.maximum_instances.should == 1
|
46
|
+
end
|
47
|
+
it "should set the max to the maximum instances to the last in a given range" do
|
39
48
|
@tc.instances 4..10
|
40
49
|
@tc.maximum_instances.should == 10
|
41
50
|
end
|
51
|
+
it "should have default minimum_runtime of 50 minutes (3000 seconds)" do
|
52
|
+
Base.stub!(:minimum_runtime).and_return 50.minutes
|
53
|
+
@tc.minimum_runtime.should == 50.minutes
|
54
|
+
end
|
55
|
+
it "should have minimum_runtime" do
|
56
|
+
@tc.minimum_runtime 40.minutes
|
57
|
+
@tc.minimum_runtime.should == 40.minutes
|
58
|
+
end
|
42
59
|
describe "keypair_path" do
|
43
60
|
before(:each) do
|
44
61
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
2
|
|
3
|
-
class
|
3
|
+
class TestClass2
|
4
4
|
include Configurable
|
5
5
|
end
|
6
6
|
|
7
7
|
describe "configurable" do
|
8
8
|
before(:each) do
|
9
|
-
@tc =
|
9
|
+
@tc = TestClass2.new
|
10
10
|
end
|
11
11
|
it "should set the name as frank" do
|
12
12
|
@tc.configure({:name => "frank"})
|
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
2
|
|
3
3
|
# include Remote
|
4
4
|
|
5
|
-
class
|
5
|
+
class TestEC2Class
|
6
6
|
include PoolParty::Remote::RemoterBase
|
7
7
|
include Ec2
|
8
8
|
include CloudResourcer
|
@@ -14,6 +14,9 @@ class TestClass
|
|
14
14
|
|
15
15
|
def ami;"ami-abc123";end
|
16
16
|
def size; "small";end
|
17
|
+
def security_group; "default";end
|
18
|
+
def ebs_volume_id; "ebs_volume_id";end
|
19
|
+
def availabilty_zone; "us-east-1a";end
|
17
20
|
def verbose
|
18
21
|
false
|
19
22
|
end
|
@@ -24,7 +27,7 @@ end
|
|
24
27
|
describe "ec2 remote base" do
|
25
28
|
before(:each) do
|
26
29
|
setup
|
27
|
-
@tr =
|
30
|
+
@tr = TestEC2Class.new
|
28
31
|
stub_remoter_for(@tr)
|
29
32
|
@tr.stub!(:get_instances_description).and_return response_list_of_instances
|
30
33
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
2
|
|
3
3
|
include Remote
|
4
|
+
include Aska
|
4
5
|
|
5
6
|
describe "Remote Instance" do
|
6
7
|
before(:each) do
|
@@ -58,6 +59,10 @@ describe "Remote Instance" do
|
|
58
59
|
before(:each) do
|
59
60
|
@ri = RemoteInstance.new(@valid_hash, nil)
|
60
61
|
end
|
62
|
+
it "should give the elapsed time" do
|
63
|
+
@ri.stub!(:launching_time).and_return(30.minutes.ago)
|
64
|
+
@ri.elapsed_runtime.should be >= 1800
|
65
|
+
end
|
61
66
|
it "should be say that it is the master if the name is master" do
|
62
67
|
@ri.name.should == "master"
|
63
68
|
@ri.master?.should == true
|
@@ -10,20 +10,11 @@ module Hype
|
|
10
10
|
end
|
11
11
|
register_remote_base :Hype
|
12
12
|
end
|
13
|
-
class TestClass
|
14
|
-
include Remote
|
15
|
-
include RemoterBase
|
16
|
-
|
17
|
-
def keypair
|
18
|
-
"fake_keypair"
|
19
|
-
end
|
20
|
-
def verbose
|
21
|
-
false
|
22
|
-
end
|
23
|
-
end
|
24
13
|
|
25
14
|
describe "Remote" do
|
26
15
|
before(:each) do
|
16
|
+
@cloud = cloud :test_cloud do;end
|
17
|
+
|
27
18
|
@tc = TestClass.new
|
28
19
|
@tc.stub!(:verbose).and_return false
|
29
20
|
setup
|
@@ -32,6 +23,9 @@ describe "Remote" do
|
|
32
23
|
@tc.respond_to?(:using).should == true
|
33
24
|
end
|
34
25
|
it "should include the module with using" do
|
26
|
+
@tc.instance_eval do
|
27
|
+
@remote_base = nil
|
28
|
+
end
|
35
29
|
@tc.should_receive(:extend).with("Hype".preserved_module_constant).once
|
36
30
|
@tc.using :hype
|
37
31
|
end
|
@@ -59,6 +53,9 @@ describe "Remote" do
|
|
59
53
|
@tc.using :hype
|
60
54
|
end
|
61
55
|
it "should only include the remote class once" do
|
56
|
+
@tc.instance_eval do
|
57
|
+
@remote_base = nil
|
58
|
+
end
|
62
59
|
@tc.should_receive(:extend).with(Hype).once
|
63
60
|
@tc.using :hype
|
64
61
|
@tc.using :hype
|
@@ -106,6 +103,8 @@ describe "Remote" do
|
|
106
103
|
end
|
107
104
|
it "should be true if there are" do
|
108
105
|
add_stub_instance_to(@tc, 8)
|
106
|
+
add_stub_instance_to(@tc, 9)
|
107
|
+
add_stub_instance_to(@tc, 10)
|
109
108
|
@tc.minimum_number_of_instances_are_running?.should == true
|
110
109
|
end
|
111
110
|
end
|
@@ -191,10 +190,6 @@ describe "Remote" do
|
|
191
190
|
@tc.request_termination_of_non_master_instance
|
192
191
|
end
|
193
192
|
end
|
194
|
-
describe "should_expand_cloud?" do
|
195
|
-
end
|
196
|
-
describe "should_contract_cloud?" do
|
197
|
-
end
|
198
193
|
describe "expansions" do
|
199
194
|
before(:each) do
|
200
195
|
setup
|
@@ -214,13 +209,21 @@ describe "Remote" do
|
|
214
209
|
before(:each) do
|
215
210
|
setup
|
216
211
|
stub_list_from_remote_for(@tc)
|
217
|
-
@
|
212
|
+
@ri = PoolParty::Remote::RemoteInstance.new(:ip => "127.0.0.1", :num => 1, :name => "master")
|
213
|
+
@tc.stub!(:request_launch_new_instances).and_return @ri
|
218
214
|
@tc.stub!(:can_start_a_new_instance).and_return true
|
219
215
|
@tc.stub!(:list_of_pending_instances).and_return []
|
220
216
|
@tc.stub!(:prepare_for_configuration).and_return true
|
221
217
|
@tc.stub!(:build_and_store_new_config_file).and_return true
|
222
218
|
PoolParty::Provisioner.stub!(:provision_slaves).and_return true
|
223
|
-
|
219
|
+
@cloud.stub!(:master).and_return @ri
|
220
|
+
@cloud.stub!(:list_of_nonterminated_instances).and_return [@ri]
|
221
|
+
@cloud.stub!(:full_keypair_path).and_return "keyairs"
|
222
|
+
|
223
|
+
@provisioner = PoolParty::Provisioner::Capistrano.new(@ri, @cloud, :ubuntu)
|
224
|
+
PoolParty::Provisioner::Capistrano.stub!(:new).and_return @provisioner
|
225
|
+
@provisioner.stub!(:install).and_return true
|
226
|
+
@provisioner.stub!(:configure).and_return true
|
224
227
|
end
|
225
228
|
it "should receive can_start_a_new_instance?" do
|
226
229
|
@tc.should_receive(:can_start_a_new_instance?).once
|
@@ -234,12 +237,7 @@ describe "Remote" do
|
|
234
237
|
end
|
235
238
|
it "should call a new slave provisioner" do
|
236
239
|
@tc.stub!(:should_expand_cloud?).once.and_return true
|
237
|
-
|
238
|
-
# Kernel.should_receive(:system).with(". /etc/profile && cloud-provision -i 5 2>&1 > /dev/null &").and_return true
|
239
|
-
end
|
240
|
-
it "should call reconfigure on the master to pick up the new slave" do
|
241
|
-
@tc.stub!(:should_expand_cloud?).once.and_return true
|
242
|
-
PoolParty::Provisioner.should_receive(:reconfigure_master).once
|
240
|
+
@provisioner.should_receive(:install).at_least(1)
|
243
241
|
end
|
244
242
|
after(:each) do
|
245
243
|
@tc.expand_cloud_if_necessary
|
@@ -248,9 +246,10 @@ describe "Remote" do
|
|
248
246
|
describe "contract_cloud_if_necessary" do
|
249
247
|
before(:each) do
|
250
248
|
@tc.stub!(:request_termination_of_non_master_instance).and_return true
|
251
|
-
@tc.stub!(:
|
249
|
+
@tc.stub!(:are_any_nodes_exceeding_minimum_runtime?).and_return true
|
252
250
|
@tc.stub!(:wait).and_return true
|
253
251
|
@tc.stub!(:valid_rules?).and_return false
|
252
|
+
@tc.stub!(:can_shutdown_an_instance?).and_return true
|
254
253
|
end
|
255
254
|
it "should receive can_shutdown_an_instance?" do
|
256
255
|
@tc.should_receive(:can_shutdown_an_instance?).once
|
@@ -259,7 +258,7 @@ describe "Remote" do
|
|
259
258
|
@tc.should_receive(:should_contract_cloud?).once.and_return false
|
260
259
|
end
|
261
260
|
it "should call request_termination_of_non_master_instance if we should_contract_cloud?" do
|
262
|
-
@tc.
|
261
|
+
@tc.stub!(:should_contract_cloud?).and_return true
|
263
262
|
@tc.should_receive(:request_termination_of_non_master_instance).once.and_return true
|
264
263
|
end
|
265
264
|
after(:each) do
|
@@ -275,12 +274,6 @@ describe "Remote" do
|
|
275
274
|
@obj = Object.new
|
276
275
|
@obj.stub!(:ip).and_return "192.168.0.1"
|
277
276
|
end
|
278
|
-
it "should raise an exception if it cannot find the keypair" do
|
279
|
-
@tc.stub!(:keypair_path).and_return nil
|
280
|
-
lambda {
|
281
|
-
@tc.rsync_storage_files_to(@tc.master)
|
282
|
-
}.should raise_error
|
283
|
-
end
|
284
277
|
it "should call exec on the kernel" do
|
285
278
|
@tc.stub!(:keypair).and_return "funky"
|
286
279
|
::File.stub!(:exists?).with("#{File.expand_path(Base.base_keypair_path)}/id_rsa-funky").and_return true
|
@@ -1,9 +1,12 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
2
|
|
3
|
-
|
3
|
+
class TestRemoteClass
|
4
|
+
include CloudResourcer
|
5
|
+
include PoolParty::Remote
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
+
def keypair
|
8
|
+
"fake_keypair"
|
9
|
+
end
|
7
10
|
end
|
8
11
|
|
9
12
|
describe "RemoterBase" do
|
@@ -12,7 +15,7 @@ describe "RemoterBase" do
|
|
12
15
|
end
|
13
16
|
describe "methods" do
|
14
17
|
before(:each) do
|
15
|
-
@tr =
|
18
|
+
@tr = TestRemoteClass.new
|
16
19
|
end
|
17
20
|
%w(launch_new_instance! terminate_instance describe_instance instances_list).each do |method|
|
18
21
|
eval <<-EOE
|
@@ -22,7 +25,7 @@ describe "RemoterBase" do
|
|
22
25
|
it "should not raise an exception if #{method} is defined as a method" do
|
23
26
|
lambda {
|
24
27
|
@tr.instance_eval do
|
25
|
-
def #{method}
|
28
|
+
def #{method}
|
26
29
|
end
|
27
30
|
end
|
28
31
|
@tr.#{method}
|
@@ -32,6 +35,7 @@ describe "RemoterBase" do
|
|
32
35
|
end
|
33
36
|
describe "lists" do
|
34
37
|
before(:each) do
|
38
|
+
@tr = TestClass.new
|
35
39
|
stub_list_of_instances_for(@tr)
|
36
40
|
end
|
37
41
|
it "should gather a list of the running instances" do
|
@@ -47,7 +51,7 @@ describe "RemoterBase" do
|
|
47
51
|
@tr.list_of_nonterminated_instances.map {|a| a.name }.should == ["master", "node1", "node3"]
|
48
52
|
end
|
49
53
|
it "should return a list of remote instances" do
|
50
|
-
@tr.remote_instances_list.first.class.should == RemoteInstance
|
54
|
+
@tr.remote_instances_list.first.class.should == PoolParty::Remote::RemoteInstance
|
51
55
|
end
|
52
56
|
describe "by keypairs" do
|
53
57
|
it "should be able to grab all the alist keypairs" do
|
@@ -74,6 +78,7 @@ describe "RemoterBase" do
|
|
74
78
|
before(:each) do
|
75
79
|
@master = Object.new
|
76
80
|
@master.stub!(:ip).and_return "192.68.0.1"
|
81
|
+
@tr = TestClass.new
|
77
82
|
@tr.stub!(:master).and_return @master
|
78
83
|
end
|
79
84
|
it "should have the method custom_install_tasks" do;@tr.respond_to?(:custom_install_tasks_for).should == true;end
|
@@ -1,21 +1,5 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
2
|
|
3
|
-
include PoolParty::Remote
|
4
|
-
|
5
|
-
def valid_rules?(*args)
|
6
|
-
false
|
7
|
-
end
|
8
|
-
|
9
|
-
class TestClass
|
10
|
-
include CloudResourcer
|
11
|
-
include Remote
|
12
|
-
using :ec2
|
13
|
-
attr_accessor :parent
|
14
|
-
|
15
|
-
def keypair
|
16
|
-
"fake_keypair"
|
17
|
-
end
|
18
|
-
end
|
19
3
|
describe "Remoter" do
|
20
4
|
before(:each) do
|
21
5
|
setup
|
@@ -27,7 +11,7 @@ describe "Remoter" do
|
|
27
11
|
end
|
28
12
|
describe "ssh_string" do
|
29
13
|
it "should have the ssh command" do
|
30
|
-
@tc.ssh_string.should =~ /ssh -o StrictHostKeyChecking=no -l
|
14
|
+
@tc.ssh_string.should =~ /ssh -o StrictHostKeyChecking=no -l/
|
31
15
|
end
|
32
16
|
it "should have the keypair in the ssh_string" do
|
33
17
|
@tc.ssh_string.should =~ /#{@tc.keypair}/
|
@@ -37,9 +21,6 @@ describe "Remoter" do
|
|
37
21
|
it "should have StrictHostKeyChecking set to no" do
|
38
22
|
@tc.ssh_array.include?("-o StrictHostKeyChecking=no").should == true
|
39
23
|
end
|
40
|
-
it "should have the user set to the base user class" do
|
41
|
-
@tc.ssh_array.include?("-l '#{Base.user}'").should == true
|
42
|
-
end
|
43
24
|
it "should have the keypair path in the ssh_array" do
|
44
25
|
@tc.ssh_array.include?('-i "'+@tc.full_keypair_path+'"').should == true
|
45
26
|
end
|
@@ -50,7 +31,7 @@ describe "Remoter" do
|
|
50
31
|
@ri.stub!(:ip).and_return "192.168.0.22"
|
51
32
|
end
|
52
33
|
it "should have rsync in the rsync_command" do
|
53
|
-
@tc.rsync_command.should == "rsync -azP --exclude cache -e '#{@tc.ssh_string}'"
|
34
|
+
@tc.rsync_command.should == "rsync -azP --exclude cache -e '#{@tc.ssh_string} -l #{Base.user}'"
|
54
35
|
end
|
55
36
|
it "should be able to rsync storage commands" do
|
56
37
|
@tc.rsync_storage_files_to_command(@ri).should == "#{@tc.rsync_command} #{Base.storage_directory}/ 192.168.0.22:/var/poolparty"
|
@@ -60,15 +41,22 @@ describe "Remoter" do
|
|
60
41
|
before(:each) do
|
61
42
|
@tc.stub!(:wait).and_return true
|
62
43
|
stub_list_from_remote_for(@tc)
|
44
|
+
stub_remoting_methods_for(@tc)
|
63
45
|
@tc.stub!(:maximum_instances).and_return 5
|
64
46
|
@tc.stub!(:list_of_pending_instances).and_return []
|
47
|
+
@tc.stub!(:list_of_nonterminated_instances).and_return []
|
65
48
|
@tc.stub!(:list_of_running_instances).and_return []
|
66
49
|
@tc.stub!(:master).and_return ris.first
|
67
50
|
@tc.stub!(:after_launched).and_return true
|
68
51
|
@tc.stub!(:verbose).and_return false
|
69
|
-
|
70
|
-
|
71
|
-
Provisioner.
|
52
|
+
::File.stub!(:exists?).and_return true
|
53
|
+
|
54
|
+
@pb = PoolParty::Provisioner::Capistrano.new(nil, @tc)
|
55
|
+
PoolParty::Provisioner::Capistrano.stub!(:new).and_return @pb
|
56
|
+
@pb.stub!(:setup_runner)
|
57
|
+
@pb.stub!(:install).and_return true
|
58
|
+
@pb.stub!(:configure).and_return true
|
59
|
+
@pb.stub!(:create_roles).and_return true
|
72
60
|
end
|
73
61
|
it "should have the method launch_master!" do
|
74
62
|
@tc.respond_to?(:launch_and_configure_master!).should == true
|
@@ -84,12 +72,52 @@ describe "Remoter" do
|
|
84
72
|
@tc.stub!(:can_start_a_new_instance?).and_return true
|
85
73
|
@tc.stub!(:is_master_running?).and_return false
|
86
74
|
end
|
87
|
-
it "should tell the provisioner to provision_master" do
|
88
|
-
Provisioner.should_receive(:provision_master).once.and_return true
|
89
|
-
end
|
90
75
|
after(:each) do
|
91
76
|
@tc.launch_and_configure_master!
|
92
77
|
end
|
93
78
|
end
|
79
|
+
describe "expansions and contractions" do
|
80
|
+
before(:each) do
|
81
|
+
@tc = TestClass.new
|
82
|
+
stub_list_from_remote_for @tc # sets the list of instances to 2
|
83
|
+
end
|
84
|
+
describe "list_of_nodes_exceeding_minimum_runtime" do
|
85
|
+
before(:each) do
|
86
|
+
@tc.stub!(:minimum_runtime).and_return 3000
|
87
|
+
end
|
88
|
+
it "should not be empty" do
|
89
|
+
@tc.list_of_running_instances.size.should == 2
|
90
|
+
@tc.list_of_running_instances.first.elapsed_runtime.should be > 3000
|
91
|
+
@tc.list_of_nodes_exceeding_minimum_runtime.size.should be > 0
|
92
|
+
end
|
93
|
+
it "should return a RemoteInstance" do
|
94
|
+
@tc.list_of_nodes_exceeding_minimum_runtime.first.should be_instance_of(PoolParty::Remote::RemoteInstance)
|
95
|
+
end
|
96
|
+
it "are_any_nodes_exceeding_minimum_runtime? should be true" do
|
97
|
+
@tc.are_any_nodes_exceeding_minimum_runtime?.should == true
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe "are_too_few_instances_running?" do
|
102
|
+
it "should be false if the number of running instances is larger than the minimum instances" do
|
103
|
+
@tc.stub!(:minimum_instances).and_return 1
|
104
|
+
@tc.are_too_few_instances_running?.should == false
|
105
|
+
end
|
106
|
+
it "should be true if the number of running instances is smaller than the minimum instances" do
|
107
|
+
@tc.stub!(:minimum_instances).and_return 5
|
108
|
+
@tc.are_too_few_instances_running?.should == true
|
109
|
+
end
|
110
|
+
end
|
111
|
+
describe "are_too_many_instances_running?" do
|
112
|
+
it "should be true if the number of running instances is larger than the maximum instances" do
|
113
|
+
@tc.stub!(:maximum_instances).and_return 1
|
114
|
+
@tc.are_too_many_instances_running?.should == true
|
115
|
+
end
|
116
|
+
it "should be false if the number of running instances is smaller than the maximum instances" do
|
117
|
+
@tc.stub!(:maximum_instances).and_return 5
|
118
|
+
@tc.are_too_many_instances_running?.should == false
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
94
122
|
|
95
123
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
include PoolParty::Resources
|
4
|
+
|
5
|
+
class TestGitClass
|
6
|
+
include PoolParty::Resources
|
7
|
+
|
8
|
+
def options(h={})
|
9
|
+
{}
|
10
|
+
end
|
11
|
+
end
|
12
|
+
describe "Remote Instance" do
|
13
|
+
before(:each) do
|
14
|
+
reset_resources!
|
15
|
+
end
|
16
|
+
describe "wrapped" do
|
17
|
+
before(:each) do
|
18
|
+
@tc = TestGitClass.new
|
19
|
+
end
|
20
|
+
it "should be a string" do
|
21
|
+
@tc.has_git(:at => "/var/www/", :name => "gitrepos.git", :source => "git://source.git").to_string.should =~ /exec/
|
22
|
+
end
|
23
|
+
it "should included the flushed out options" do
|
24
|
+
@tc.has_git({:name => "git.git", :source => "git://source.git", :requires_user => "finger", :at => "/var/www/"}).to_string.should =~ /finger@git:/
|
25
|
+
end
|
26
|
+
it "should not include the user if none is given" do
|
27
|
+
@tc.has_git({:name => "git.git", :source => "git://source.git",:at => "/var/www/"}).to_string.should =~ /git clone git:/
|
28
|
+
end
|
29
|
+
describe "in resource" do
|
30
|
+
before(:each) do
|
31
|
+
@tc.instance_eval do
|
32
|
+
has_git(:name => "gittr") do
|
33
|
+
source "git://source.git"
|
34
|
+
path "/var/www/xnot.org"
|
35
|
+
symlink "/var/www/xnot.org/public"
|
36
|
+
at "/var/www"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
it "should have the path set within the resource" do
|
41
|
+
@tc.resource(:git).first.to_string.should =~ /exec \{ \"git-gittr/
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -302,6 +302,7 @@ describe "Cloud" do
|
|
302
302
|
describe "prepare_for_configuration" do
|
303
303
|
before(:each) do
|
304
304
|
@cloud.stub!(:copy_ssh_key).and_return true
|
305
|
+
@cloud.stub!(:before_configuration_tasks).and_return []
|
305
306
|
end
|
306
307
|
it "should make_base_directory" do
|
307
308
|
@cloud.should_receive(:make_base_directory).at_least(1)
|
@@ -312,6 +313,12 @@ describe "Cloud" do
|
|
312
313
|
it "should copy_custom_monitors" do
|
313
314
|
@cloud.should_receive(:copy_custom_monitors).once
|
314
315
|
end
|
316
|
+
it "should call before_configuration_tasks callback" do
|
317
|
+
@cloud.should_receive(:before_configuration_tasks).once
|
318
|
+
end
|
319
|
+
it "should call call write_unique_cookie" do
|
320
|
+
@cloud.should_receive(:write_unique_cookie).once
|
321
|
+
end
|
315
322
|
describe "copy_custom_monitors" do
|
316
323
|
before(:each) do
|
317
324
|
Base.stub!(:custom_monitor_directories).and_return ["/tmp/monitors/custom_monitor.rb"]
|
@@ -360,6 +367,40 @@ describe "Cloud" do
|
|
360
367
|
end
|
361
368
|
end
|
362
369
|
end
|
370
|
+
describe "minimum_runnable_options" do
|
371
|
+
it "should be an array on the cloud" do
|
372
|
+
@cloud.minimum_runnable_options.class.should == Array
|
373
|
+
end
|
374
|
+
["keypair","minimum_instances","maximum_instances",
|
375
|
+
"expand_when","contract_when","set_master_ip_to"].each do |k|
|
376
|
+
eval <<-EOE
|
377
|
+
it "should have #{k} in the minimum_runnable_options" do
|
378
|
+
@cloud.minimum_runnable_options.include?(:#{k}).should == true
|
379
|
+
end
|
380
|
+
EOE
|
381
|
+
end
|
382
|
+
it "should include the custom_minimum_runnable_options" do
|
383
|
+
@cloud.stub!(:custom_minimum_runnable_options).and_return [:blank]
|
384
|
+
@cloud.minimum_runnable_options.include?(:blank).should == true
|
385
|
+
end
|
386
|
+
end
|
387
|
+
describe "unique_cookie" do
|
388
|
+
it "should have the method generate generate_unique_cookie_string" do
|
389
|
+
@cloud.respond_to?(:generate_unique_cookie_string).should == true
|
390
|
+
end
|
391
|
+
it "should call hexdigest to digest/sha" do
|
392
|
+
Digest::SHA256.should_receive(:hexdigest).with("#{@cloud.full_keypair_name}#{@cloud.name}")
|
393
|
+
@cloud.generate_unique_cookie_string
|
394
|
+
end
|
395
|
+
it "should generate the same cookie string every time" do
|
396
|
+
older = @cloud.generate_unique_cookie_string
|
397
|
+
old = @cloud.generate_unique_cookie_string
|
398
|
+
new_one = @cloud.generate_unique_cookie_string
|
399
|
+
older.should == old
|
400
|
+
old.should == new_one
|
401
|
+
new_one.should == older
|
402
|
+
end
|
403
|
+
end
|
363
404
|
end
|
364
405
|
|
365
406
|
describe "instances" do
|
@@ -100,7 +100,7 @@ describe "Plugin" do
|
|
100
100
|
Kernel::PoolPartyApacheClass.stub!(:new).and_return @plugin
|
101
101
|
end
|
102
102
|
it "should call enable on calling realize! when there is no block included" do
|
103
|
-
@plugin.should_receive(:enable).and_return true
|
103
|
+
@plugin.should_receive(:enable).at_least(1).and_return true
|
104
104
|
@cloud = cloud :app do
|
105
105
|
apache
|
106
106
|
end
|
@@ -240,6 +240,11 @@ describe "Resource" do
|
|
240
240
|
it "should say there is 1 resource because the lower-level resources should be contained on the parenting resource" do
|
241
241
|
@cloud1.resources.size.should == 1
|
242
242
|
end
|
243
|
+
it "should set the exec to notify apache2" do
|
244
|
+
has_service("apache2")
|
245
|
+
has_exec(:name => "reload-page", :notify => get_service("apache2"))
|
246
|
+
resource(:exec).get_named("reload-page").first.options[:notify].to_s.should == "Service['apache2']"
|
247
|
+
end
|
243
248
|
it "should say there is one resource on the outer resource" do
|
244
249
|
@dir.resources.size.should == 1
|
245
250
|
end
|
@@ -250,6 +255,14 @@ describe "Resource" do
|
|
250
255
|
@file.parent.to_s.should == @dir.to_s
|
251
256
|
end
|
252
257
|
end
|
258
|
+
describe "handle_option_value" do
|
259
|
+
it "should turn a string into a hash with the string as the key name" do
|
260
|
+
handle_option_values("vat of cats").should == {:name => "vat of cats"}
|
261
|
+
end
|
262
|
+
it "should not change a hash into anything" do
|
263
|
+
handle_option_values({:name => "poe"}).should == {:name => "poe"}
|
264
|
+
end
|
265
|
+
end
|
253
266
|
describe "fetching" do
|
254
267
|
before(:each) do
|
255
268
|
@file = file(:name => "pancakes")
|
@@ -283,10 +296,10 @@ describe "Resource" do
|
|
283
296
|
end
|
284
297
|
describe "virtual_resources" do
|
285
298
|
before(:each) do
|
286
|
-
@virtual_resource = git(:name => "tank", :source => "git://github.com/auser/testgit.git")
|
299
|
+
@virtual_resource = git(:at => "/var/paint/cans", :name => "tank", :source => "git://github.com/auser/testgit.git")
|
287
300
|
end
|
288
301
|
it "should fetch a virtual resource the same" do
|
289
|
-
git(:name => "tank", :source => "git://github.com/auser/testgit.git").to_s.should == @virtual_resource.to_s
|
302
|
+
git(:at => "/var/paint/cans", :name => "tank", :source => "git://github.com/auser/testgit.git").to_s.should == @virtual_resource.to_s
|
290
303
|
end
|
291
304
|
end
|
292
305
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
include PoolParty::Resources
|
4
|
+
|
5
|
+
describe "User" do
|
6
|
+
describe "instances" do
|
7
|
+
before(:each) do
|
8
|
+
@user = remote_user({:name => "fred"})
|
9
|
+
end
|
10
|
+
it "should turn the one hash instance into a string" do
|
11
|
+
@user.to_string.should =~ /"fred":/
|
12
|
+
end
|
13
|
+
it "should turn the two hash instance into a string" do
|
14
|
+
@user = remote_user do
|
15
|
+
name "bob"
|
16
|
+
home "/home/bob"
|
17
|
+
end
|
18
|
+
@user.to_string.should =~ /"bob":/
|
19
|
+
@user.to_string.should =~ /home => '\/home\/bob'/
|
20
|
+
end
|
21
|
+
describe "as included" do
|
22
|
+
before(:each) do
|
23
|
+
@user = remote_user({:rent => "low"}) do
|
24
|
+
name "/www/conf/httpd.conf"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
it "should use default values" do
|
28
|
+
@user.name.should == "/www/conf/httpd.conf"
|
29
|
+
end
|
30
|
+
it "should keep the default values for the user" do
|
31
|
+
@user.shell.should == "/bin/sh"
|
32
|
+
end
|
33
|
+
it "should also set options through a hash" do
|
34
|
+
@user.rent.should == "low"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
File without changes
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
describe "Capistrano provisioner" do
|
4
|
+
before(:each) do
|
5
|
+
@cloud = cloud :app do;end
|
6
|
+
@remote_instance = PoolParty::Remote::RemoteInstance.new({:ip => "192.168.0.1", :status => "running", :name => "master"}, @cloud)
|
7
|
+
stub_list_from_remote_for(@cloud)
|
8
|
+
end
|
9
|
+
describe "instance" do
|
10
|
+
before(:each) do
|
11
|
+
@pb = PoolParty::Provisioner::Capistrano.new(@remote_instance, @cloud)
|
12
|
+
end
|
13
|
+
it "should create the config on the initialize" do
|
14
|
+
@pb.config.class.should == ::Capistrano::Configuration
|
15
|
+
end
|
16
|
+
describe "config" do
|
17
|
+
it "should create the config at ::Capistrano::Logger::INFO if the cloud is verbose" do
|
18
|
+
@cloud.stub!(:verbose).and_return true
|
19
|
+
PoolParty::Provisioner::Capistrano.new(nil, @cloud).config.logger.level.should == ::Capistrano::Logger::INFO
|
20
|
+
end
|
21
|
+
it "should create the config at ::Capistrano::Logger::IMPORTANT if the cloud is not verbose" do
|
22
|
+
@cloud.stub!(:verbose).and_return false
|
23
|
+
PoolParty::Provisioner::Capistrano.new(nil, @cloud).config.logger.level.should == ::Capistrano::Logger::IMPORTANT
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|