poolparty 0.2.69 → 0.2.84
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.
- 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
|