poolparty 0.2.18 → 0.2.69
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/Manifest.txt +142 -47
- data/PostInstall.txt +5 -5
- data/README.txt +25 -4
- data/Rakefile +46 -2
- data/bin/cloud +12 -21
- data/bin/cloud-add-keypair +18 -13
- data/bin/cloud-configure +11 -18
- data/bin/cloud-contract +7 -17
- data/bin/cloud-ensure-provisioning +39 -0
- data/bin/cloud-expand +9 -17
- data/bin/cloud-handle-load +27 -0
- data/bin/cloud-list +3 -9
- data/bin/cloud-maintain +12 -18
- data/bin/cloud-osxcopy +3 -9
- data/bin/cloud-provision +20 -21
- data/bin/cloud-refresh +4 -13
- data/bin/cloud-run +3 -4
- data/bin/cloud-ssh +3 -2
- data/bin/cloud-start +18 -21
- data/bin/cloud-stats +17 -0
- data/bin/cloud-terminate +4 -7
- data/bin/messenger-get-current-nodes +14 -0
- data/bin/pool +12 -12
- data/bin/pool-describe +0 -1
- data/bin/{pool-spec → pool-generate} +1 -0
- data/bin/pool-init +28 -0
- data/bin/pool-list +14 -12
- data/bin/pool-start +11 -17
- data/bin/server-build-messenger +13 -6
- data/bin/server-fire-cmd +1 -1
- data/bin/server-get-load +5 -16
- data/bin/server-list-active +3 -10
- data/bin/server-rerun +4 -4
- data/bin/server-send-command +18 -0
- data/bin/server-show-stats +17 -0
- data/bin/server-start-client +29 -0
- data/bin/server-start-master +13 -14
- data/bin/server-start-node +14 -15
- data/bin/server-stop-client +3 -0
- data/bin/server-stop-master +3 -0
- data/bin/server-stop-node +3 -0
- data/bin/server-update-hosts +48 -0
- data/config/hoe.rb +4 -3
- data/examples/plugin_without_plugin_directory.rb +1 -2
- data/generators/poolspec/USAGE +2 -2
- data/generators/poolspec/poolspec_generator.rb +2 -1
- data/generators/poolspec/templates/pool_spec_template.erb +3 -2
- data/lib/erlang/messenger/Rakefile +12 -0
- data/lib/erlang/messenger/ebin/client.app +19 -0
- data/lib/erlang/messenger/ebin/master.app +1 -1
- data/lib/erlang/messenger/ebin/node.app +1 -1
- data/lib/erlang/messenger/ebin/pm_client_rel-0.1.rel +1 -0
- data/lib/erlang/messenger/ebin/pm_master_rel-0.1.rel +1 -1
- data/lib/erlang/messenger/ebin/pm_node_rel-0.1.rel +1 -1
- data/lib/erlang/messenger/include/defines.hrl +27 -0
- data/lib/erlang/messenger/lib/eunit/.svn/all-wcprops +53 -0
- data/lib/erlang/messenger/lib/eunit/.svn/entries +140 -0
- data/lib/erlang/messenger/lib/eunit/.svn/format +1 -0
- data/lib/erlang/messenger/lib/eunit/.svn/prop-base/NOTES.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/AUTHORS.svn-base +2 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/CHANGELOG.svn-base +14 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/COPYING.svn-base +504 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/NOTES.svn-base +276 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/README.svn-base +3 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/sys.config.svn-base +9 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/vsn.mk.svn-base +1 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/all-wcprops +59 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/entries +142 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/format +1 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/erlang.png.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/eunit.html.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/index.html.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/modules-frame.html.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/overview-summary.html.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/packages-frame.html.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/edoc-info.svn-base +3 -0
- 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 +172 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/index.html.svn-base +17 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/modules-frame.html.svn-base +12 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview-summary.html.svn-base +984 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview.edoc.svn-base +980 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/packages-frame.html.svn-base +11 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/stylesheet.css.svn-base +55 -0
- data/lib/erlang/messenger/lib/eunit/ebin/.svn/all-wcprops +5 -0
- data/lib/erlang/messenger/lib/eunit/ebin/.svn/dir-prop-base +8 -0
- data/lib/erlang/messenger/lib/eunit/ebin/.svn/entries +28 -0
- data/lib/erlang/messenger/lib/eunit/ebin/.svn/format +1 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/all-wcprops +23 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/entries +66 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/format +1 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/eunit_examples.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/fib.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/eunit_examples.erl.svn-base +339 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/fib.erl.svn-base +19 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/tests.txt.svn-base +1 -0
- data/lib/erlang/messenger/lib/eunit/include/.svn/all-wcprops +11 -0
- data/lib/erlang/messenger/lib/eunit/include/.svn/entries +41 -0
- data/lib/erlang/messenger/lib/eunit/include/.svn/format +1 -0
- data/lib/erlang/messenger/lib/eunit/include/.svn/prop-base/eunit.hrl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/include/.svn/text-base/eunit.hrl.svn-base +313 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/all-wcprops +113 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/entries +259 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/format +1 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/autoload.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/code_monitor.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_autoexport.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_data.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_internal.hrl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_lib.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_proc.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_serial.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_server.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_striptests.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_test.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tests.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tty.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/file_monitor.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/autoload.erl.svn-base +388 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/code_monitor.erl.svn-base +243 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.app.src.svn-base +21 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.appup.src.svn-base +1 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.erl.svn-base +196 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_autoexport.erl.svn-base +102 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_data.erl.svn-base +798 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_internal.hrl.svn-base +48 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_lib.erl.svn-base +682 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_proc.erl.svn-base +552 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_serial.erl.svn-base +157 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_server.erl.svn-base +340 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_striptests.erl.svn-base +64 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_test.erl.svn-base +334 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tests.erl.svn-base +45 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tty.erl.svn-base +272 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/file_monitor.erl.svn-base +409 -0
- data/lib/erlang/messenger/pm_client_rel-0.1.boot +0 -0
- data/lib/erlang/messenger/pm_client_rel-0.1.script +238 -0
- data/lib/erlang/messenger/pm_master_rel-0.1.boot +0 -0
- data/lib/erlang/messenger/pm_master_rel-0.1.script +82 -85
- data/lib/erlang/messenger/pm_node_rel-0.1.boot +0 -0
- data/lib/erlang/messenger/pm_node_rel-0.1.script +80 -85
- data/lib/erlang/messenger/src/client_app.erl +39 -0
- data/lib/erlang/messenger/src/client_server.erl +60 -0
- data/lib/erlang/messenger/src/pm_client.erl +48 -18
- data/lib/erlang/messenger/src/pm_client_old.erl +52 -0
- data/lib/erlang/messenger/src/pm_client_supervisor.erl +38 -0
- data/lib/erlang/messenger/src/pm_cluster.erl +20 -16
- data/lib/erlang/messenger/src/pm_event_manager.erl +27 -0
- data/lib/erlang/messenger/src/pm_master.erl +126 -34
- data/lib/erlang/messenger/src/pm_master_event_handler.erl +72 -0
- data/lib/erlang/messenger/src/pm_master_supervisor.erl +9 -10
- data/lib/erlang/messenger/src/pm_node.erl +107 -30
- data/lib/erlang/messenger/src/pm_node_supervisor.erl +13 -15
- data/lib/erlang/messenger/src/pm_packager.erl +5 -2
- data/lib/erlang/messenger/src/pm_strings.erl +11 -0
- data/lib/erlang/messenger/src/utils.erl +43 -8
- data/lib/erlang/messenger/useful_snippets +17 -0
- data/lib/poolparty/aska/aska.rb +150 -0
- data/lib/poolparty/base_packages/haproxy.rb +19 -26
- data/lib/poolparty/base_packages/heartbeat.rb +48 -47
- data/lib/poolparty/base_packages/poolparty.rb +88 -36
- data/lib/poolparty/base_packages/runit.rb +21 -0
- data/lib/poolparty/config/postlaunchmessage.txt +5 -0
- data/lib/poolparty/core/array.rb +4 -1
- data/lib/poolparty/core/class.rb +2 -0
- data/lib/poolparty/core/exception.rb +2 -1
- data/lib/poolparty/core/hash.rb +2 -2
- data/lib/poolparty/core/kernel.rb +3 -3
- data/lib/poolparty/core/metaid.rb +15 -0
- data/lib/poolparty/core/object.rb +42 -2
- data/lib/poolparty/core/string.rb +21 -6
- data/lib/poolparty/core/symbol.rb +9 -0
- data/lib/poolparty/dependency_resolutions/puppet.rb +20 -7
- data/lib/poolparty/exceptions/CloudNotFoundException.rb +7 -0
- data/lib/poolparty/exceptions/LoadRulesException.rb +7 -0
- data/lib/poolparty/exceptions/MasterException.rb +10 -0
- data/lib/poolparty/helpers/binary.rb +37 -4
- data/lib/poolparty/helpers/console.rb +25 -8
- data/lib/poolparty/helpers/nice_printer.rb +36 -0
- data/lib/poolparty/helpers/optioner.rb +51 -16
- data/lib/poolparty/helpers/provisioner_base.rb +117 -28
- data/lib/poolparty/helpers/provisioners/master.rb +102 -35
- data/lib/poolparty/helpers/provisioners/slave.rb +25 -9
- data/lib/poolparty/modules/cloud_dsl.rb +13 -0
- data/lib/poolparty/modules/cloud_resourcer.rb +51 -8
- data/lib/poolparty/modules/configurable.rb +1 -1
- data/lib/poolparty/modules/definable_resource.rb +2 -2
- data/lib/poolparty/modules/file_writer.rb +37 -6
- data/lib/poolparty/modules/method_missing_sugar.rb +8 -3
- data/lib/poolparty/modules/pretty_printer.rb +1 -0
- data/lib/poolparty/modules/resourcing_dsl.rb +4 -2
- data/lib/poolparty/modules/thread_pool.rb +106 -0
- data/lib/poolparty/monitors/base_monitor.rb +65 -6
- data/lib/poolparty/monitors/monitors/cpu_monitor.rb +1 -1
- data/lib/poolparty/monitors/monitors/memory_monitor.rb +28 -1
- data/lib/poolparty/monitors/monitors/web_monitor.rb +18 -0
- data/lib/poolparty/net/messenger.rb +72 -0
- data/lib/poolparty/net/remote.rb +5 -2
- data/lib/poolparty/net/remote_bases/ec2/ec2_response_object.rb +66 -0
- data/lib/poolparty/net/remote_bases/ec2.rb +133 -131
- data/lib/poolparty/net/remote_instance.rb +28 -6
- data/lib/poolparty/net/remoter.rb +117 -64
- data/lib/poolparty/net/remoter_base.rb +49 -11
- data/lib/poolparty/plugins/deploydirectory.rb +66 -0
- data/lib/poolparty/plugins/line.rb +5 -4
- data/lib/poolparty/plugins/rsyncmirror.rb +26 -0
- data/lib/poolparty/plugins/runit.rb +96 -0
- data/lib/poolparty/plugins/svn.rb +1 -1
- data/lib/poolparty/pool/base.rb +47 -18
- data/lib/poolparty/pool/cloud.rb +121 -65
- data/lib/poolparty/pool/custom_resource.rb +4 -20
- data/lib/poolparty/pool/loggable.rb +3 -8
- data/lib/poolparty/pool/plugin.rb +14 -19
- data/lib/poolparty/pool/plugin_model.rb +8 -8
- data/lib/poolparty/pool/pool.rb +28 -11
- data/lib/poolparty/pool/resource.rb +109 -40
- data/lib/poolparty/pool/resources/class_package.rb +74 -33
- data/lib/poolparty/pool/resources/conditional.rb +32 -10
- data/lib/poolparty/pool/resources/custom_service.rb +30 -0
- data/lib/poolparty/pool/resources/exec.rb +6 -5
- data/lib/poolparty/pool/resources/gem_package.rb +52 -0
- data/lib/poolparty/pool/resources/mount.rb +22 -0
- data/lib/poolparty/pool/resources/package.rb +13 -3
- data/lib/poolparty/pool/resources/sshkey.rb +1 -1
- data/lib/poolparty/pool/resources/variable.rb +4 -0
- data/lib/poolparty/pool/script.rb +8 -6
- data/lib/poolparty/templates/haproxy.conf +1 -1
- data/lib/poolparty/templates/messenger/client/log-run.erb +2 -0
- data/lib/poolparty/templates/messenger/client/run.erb +4 -0
- data/lib/poolparty/templates/messenger/master/log-run.erb +2 -0
- data/lib/poolparty/templates/messenger/master/run.erb +4 -0
- data/lib/poolparty/templates/messenger/node/log-run.erb +2 -0
- data/lib/poolparty/templates/messenger/node/run.erb +4 -0
- data/lib/poolparty/templates/poolparty.monitor +1 -1
- data/lib/poolparty/templates/puppet.conf +0 -0
- data/lib/poolparty/templates/puppetcleaner +6 -0
- data/lib/poolparty/templates/puppetrerun +9 -0
- data/lib/poolparty/templates/puppetrunner +8 -0
- data/lib/poolparty/templates/yaws.conf +19 -0
- data/lib/poolparty/version.rb +1 -1
- data/lib/poolparty.rb +35 -6
- data/lib/poolpartycl.rb +4 -0
- data/log/pool.logs +0 -0
- data/poolparty.gemspec +574 -61
- data/spec/poolparty/aska/aska_spec.rb +122 -0
- data/spec/poolparty/bin/console_spec.rb +18 -0
- data/spec/poolparty/core/hash_spec.rb +4 -4
- data/spec/poolparty/core/object_spec.rb +29 -0
- data/spec/poolparty/core/string_spec.rb +6 -0
- data/spec/poolparty/core/time_spec.rb +0 -3
- data/spec/poolparty/helpers/binary_spec.rb +2 -2
- data/spec/poolparty/helpers/optioner_spec.rb +1 -4
- data/spec/poolparty/helpers/provisioner_base_spec.rb +14 -1
- data/spec/poolparty/helpers/provisioners/master_spec.rb +3 -3
- data/spec/poolparty/modules/cloud_resourcer_spec.rb +3 -3
- data/spec/poolparty/modules/configurable_spec.rb +4 -1
- data/spec/poolparty/monitors/base_monitor_spec.rb +94 -2
- data/spec/poolparty/monitors/monitors/cpu_monitor_spec.rb +0 -1
- data/spec/poolparty/monitors/monitors/memory_monitor_spec.rb +47 -0
- data/spec/poolparty/{helpers → net}/messenger_spec.rb +3 -1
- data/spec/poolparty/net/remote_bases/ec2_spec.rb +46 -5
- data/spec/poolparty/net/remote_instance_spec.rb +2 -1
- data/spec/poolparty/net/remote_spec.rb +30 -8
- data/spec/poolparty/net/remoter_base_spec.rb +4 -1
- data/spec/poolparty/net/remoter_spec.rb +11 -108
- data/spec/poolparty/plugins/deploydirectory_spec.rb +51 -0
- data/spec/poolparty/pool/base_spec.rb +43 -33
- data/spec/poolparty/pool/cloud_spec.rb +299 -248
- data/spec/poolparty/pool/custom_resource_spec.rb +10 -5
- data/spec/poolparty/pool/example_spec.rb +0 -84
- data/spec/poolparty/pool/plugin_model_spec.rb +3 -2
- data/spec/poolparty/pool/plugin_spec.rb +89 -62
- data/spec/poolparty/pool/pool_spec.rb +17 -2
- data/spec/poolparty/pool/resource_spec.rb +341 -236
- data/spec/poolparty/pool/resources/class_package_spec.rb +102 -66
- data/spec/poolparty/pool/resources/conditional_spec.rb +65 -26
- data/spec/poolparty/pool/resources/cron_spec.rb +3 -2
- data/spec/poolparty/pool/resources/exec_spec.rb +1 -1
- data/spec/poolparty/pool/resources/gem_spec.rb +18 -14
- data/spec/poolparty/pool/resources/remote_file_spec.rb +1 -1
- data/spec/poolparty/pool/resources/variable_spec.rb +1 -1
- data/spec/poolparty/pool/script_spec.rb +58 -37
- data/spec/poolparty/pool/test_plugins/webserver.rb +1 -0
- data/spec/poolparty/spec_helper.rb +16 -5
- data/tasks/deployment.rake +19 -3
- data/tasks/development.rake +11 -2
- data/tasks/ec2.rake +9 -1
- data/website/index.html +2 -2
- metadata +167 -70
- data/bin/pool-provision +0 -34
- data/erl_crash.dump +0 -8409
- data/examples/with_apache_plugin.rb +0 -22
- data/lib/erlang/messenger/Makefile +0 -15
- 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_cluster.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_event_handler.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master.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/utils.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/Makefile +0 -28
- 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 +0 -46
- data/lib/erlang/messenger/src/pm_event_handler.erl +0 -21
- data/lib/poolparty/config/allowed_commands.yml +0 -1
- data/lib/poolparty/helpers/messenger.rb +0 -29
- data/lib/poolparty/plugins/git.rb +0 -39
- data/lib/poolparty/pool/resources/gem.rb +0 -28
- data/lib/poolparty/pool/tmp/.ppkeys +0 -3
- data/lib/poolparty/pool/tmp/happydayz +0 -1
- data/lib/poolparty/pool/tmp/install_master.sh +0 -33
- data/lib/poolparty/pool/tmp/pool.spec +0 -11
- data/lib/poolparty/pool/tmp/poolparty.pp +0 -600
- data/lib/poolparty/pool/tmp/tc-instances.list +0 -1
- data/lib/poolparty/templates/fileserver.conf +0 -4
- data/spec/poolparty/plugins/git_spec.rb +0 -33
- data/test_manifest.pp +0 -658
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
+
|
|
3
|
+
include PoolParty::Resources
|
|
4
|
+
|
|
2
5
|
require File.dirname(__FILE__) + '/test_plugins/webserver'
|
|
3
6
|
|
|
4
7
|
class MyResource < PoolParty::Resources::Resource
|
|
@@ -9,282 +12,384 @@ class MyResource < PoolParty::Resources::Resource
|
|
|
9
12
|
end
|
|
10
13
|
describe "Resource" do
|
|
11
14
|
before(:each) do
|
|
12
|
-
|
|
13
|
-
b "90"
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
it "should set a from the hash" do
|
|
17
|
-
@resource.a.should == 10
|
|
18
|
-
end
|
|
19
|
-
it "should set b from within the block" do
|
|
20
|
-
@resource.b.should == "90"
|
|
21
|
-
end
|
|
22
|
-
it "should not wipe out the rest of the default options" do
|
|
23
|
-
@resource.c.should == 3
|
|
24
|
-
end
|
|
25
|
-
describe "to_s" do
|
|
26
|
-
it "should be able to coalesce the instances" do
|
|
27
|
-
@resource.to_string.should =~ /resource \{\n/
|
|
28
|
-
end
|
|
29
|
-
describe "with resources" do
|
|
30
|
-
before(:each) do
|
|
31
|
-
self.stub!(:options).and_return(:name => "cook")
|
|
32
|
-
|
|
33
|
-
@obj = PoolParty::Resources::Resource.new
|
|
34
|
-
@obj.stub!(:name).and_return "cook"
|
|
35
|
-
|
|
36
|
-
@resource2 = MyResource.new do
|
|
37
|
-
file(:name => "shulie")
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
it "should call classpackage_with_self when it has resources" do
|
|
41
|
-
@resource2.should_receive(:classpackage_with_self).and_return @obj
|
|
42
|
-
@resource2.to_string
|
|
43
|
-
end
|
|
44
|
-
it "should call to_string on the class package" do
|
|
45
|
-
@obj.should_receive(:to_string).and_return "wee"
|
|
46
|
-
@resource2.should_receive(:classpackage_with_self).and_return @obj
|
|
47
|
-
@resource2.to_string
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
describe "class methods" do
|
|
52
|
-
it "should have an array of available resources" do
|
|
53
|
-
PoolParty::Resources::Resource.available_resources.class.should == Array
|
|
54
|
-
end
|
|
55
|
-
it "should not be empty" do
|
|
56
|
-
PoolParty::Resources::Resource.available_resources.should_not be_empty
|
|
57
|
-
end
|
|
15
|
+
setup
|
|
58
16
|
end
|
|
59
|
-
describe "
|
|
17
|
+
describe "wrapped" do
|
|
60
18
|
before(:each) do
|
|
61
|
-
@resource = MyResource.new
|
|
62
|
-
|
|
63
|
-
%w(requires ensures is_present is_absent ifnot).each do |method|
|
|
64
|
-
eval <<-EOE
|
|
65
|
-
it "should have the method #{method} available" do; @resource.respond_to?(:#{method}).should == true; end
|
|
66
|
-
EOE
|
|
67
|
-
end
|
|
68
|
-
it "should be able to take requires method" do
|
|
69
|
-
@resource.respond_to?(:requires).should == true
|
|
70
|
-
end
|
|
71
|
-
it "should push require onto the options" do
|
|
72
|
-
@resource.options.has_key?(:require).should == false
|
|
73
|
-
@resource.requires("nibbles")
|
|
74
|
-
@resource.options.has_key?(:require).should == true
|
|
75
|
-
end
|
|
76
|
-
it "should be able to call ensures method on the resource" do
|
|
77
|
-
@resource.respond_to?(:ensures).should == true
|
|
78
|
-
end
|
|
79
|
-
it "should push the option ensure onto the options" do
|
|
80
|
-
@resource.options.has_key?(:ensure).should == false
|
|
81
|
-
@resource.ensures("nibbles")
|
|
82
|
-
@resource.options.has_key?(:ensure).should == true
|
|
83
|
-
end
|
|
84
|
-
it "should write the option ensures as present with is_present" do
|
|
85
|
-
@resource.options.has_key?(:ensure).should == false
|
|
86
|
-
@resource.is_present
|
|
87
|
-
@resource.options[:ensure].should == "present"
|
|
88
|
-
end
|
|
89
|
-
it "should write the option ensures as absent with is_absent" do
|
|
90
|
-
@resource.options.has_key?(:ensure).should == false
|
|
91
|
-
@resource.is_absent
|
|
92
|
-
@resource.options[:ensure].should == "absent"
|
|
93
|
-
end
|
|
94
|
-
it "should write the option unless for ifnot" do
|
|
95
|
-
@resource.options.has_key?(:unless).should == false
|
|
96
|
-
@resource.ifnot "str"
|
|
97
|
-
@resource.options[:unless].should == "str"
|
|
98
|
-
end
|
|
99
|
-
describe "templating" do
|
|
100
|
-
before(:each) do
|
|
101
|
-
FileUtils.stub!(:cp).and_return true
|
|
102
|
-
end
|
|
103
|
-
it "should have the method template" do
|
|
104
|
-
@resource.respond_to?(:template).should == true
|
|
105
|
-
end
|
|
106
|
-
it "should raise an exception if no file is given" do
|
|
107
|
-
lambda {
|
|
108
|
-
@resource.template
|
|
109
|
-
}.should raise_error
|
|
110
|
-
end
|
|
111
|
-
it "should raise an excepton if the file cannot be found" do
|
|
112
|
-
lambda {
|
|
113
|
-
@resource.template("radar")
|
|
114
|
-
}.should raise_error
|
|
19
|
+
@resource = MyResource.new({:a => 10}) do
|
|
20
|
+
b "90"
|
|
115
21
|
end
|
|
116
|
-
it "should not raise an exception if there is a file passed and the file is found" do
|
|
117
|
-
File.should_receive(:file?).with("radar").and_return true
|
|
118
|
-
lambda {
|
|
119
|
-
@resource.template("radar")
|
|
120
|
-
}.should_not raise_error
|
|
121
|
-
end
|
|
122
|
-
# it "should push the template option on to the options" do
|
|
123
|
-
# File.stub!(:file?).with("radar").and_return true
|
|
124
|
-
# @resource.options.has_key?(:template).should == false
|
|
125
|
-
# @resource.template("radar")
|
|
126
|
-
# @resource.options.has_key?(:template).should == true
|
|
127
|
-
# end
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
describe "command" do
|
|
131
|
-
include PoolParty::Resources
|
|
132
|
-
before(:each) do
|
|
133
|
-
reset_resources!
|
|
134
|
-
@cloud = cloud :command_cloud do; end
|
|
135
22
|
end
|
|
136
|
-
it "should
|
|
137
|
-
@
|
|
138
|
-
@cloud.instance_eval do
|
|
139
|
-
file(:name => "frank")
|
|
140
|
-
end
|
|
23
|
+
it "should set a from the hash" do
|
|
24
|
+
@resource.a.should == 10
|
|
141
25
|
end
|
|
142
|
-
it "should
|
|
143
|
-
resource
|
|
26
|
+
it "should set b from within the block" do
|
|
27
|
+
@resource.b.should == "90"
|
|
144
28
|
end
|
|
145
|
-
it "should
|
|
146
|
-
resource
|
|
147
|
-
file({:name => "pop"})
|
|
29
|
+
it "should not wipe out the rest of the default options" do
|
|
30
|
+
@resource.c.should == 3
|
|
148
31
|
end
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
resource(:file).size.should == 3
|
|
32
|
+
describe "to_s" do
|
|
33
|
+
it "should be able to coalesce the instances" do
|
|
34
|
+
@resource.to_string.should =~ /resource \{/
|
|
35
|
+
end
|
|
154
36
|
end
|
|
155
|
-
describe "
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
@b = file({:name => "hot"})
|
|
159
|
-
@c = file({:name => "summer"})
|
|
37
|
+
describe "class methods" do
|
|
38
|
+
it "should have an array of available resources" do
|
|
39
|
+
PoolParty::Resources::Resource.available_resources.class.should == Array
|
|
160
40
|
end
|
|
161
|
-
it "should
|
|
162
|
-
|
|
41
|
+
it "should not be empty" do
|
|
42
|
+
PoolParty::Resources::Resource.available_resources.should_not be_empty
|
|
163
43
|
end
|
|
164
44
|
end
|
|
165
|
-
describe "
|
|
45
|
+
describe "instance methods" do
|
|
166
46
|
before(:each) do
|
|
167
|
-
|
|
168
|
-
file({:name => "hot"})
|
|
169
|
-
file({:name => "summer"})
|
|
47
|
+
@resource = MyResource.new
|
|
170
48
|
end
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
49
|
+
%w(requires ensures is_present is_absent ifnot).each do |method|
|
|
50
|
+
eval <<-EOE
|
|
51
|
+
it "should have the method #{method} available" do; @resource.respond_to?(:#{method}).should == true; end
|
|
52
|
+
EOE
|
|
175
53
|
end
|
|
176
|
-
it "should
|
|
177
|
-
|
|
178
|
-
crabs_file
|
|
179
|
-
}.should raise_error
|
|
54
|
+
it "should be able to take requires method" do
|
|
55
|
+
@resource.respond_to?(:requires).should == true
|
|
180
56
|
end
|
|
181
|
-
it "should
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
57
|
+
it "should push require onto the options" do
|
|
58
|
+
@resource.options.has_key?(:require).should == false
|
|
59
|
+
@resource.requires("nibbles")
|
|
60
|
+
@resource.options.has_key?(:require).should == true
|
|
185
61
|
end
|
|
186
|
-
it "should
|
|
187
|
-
|
|
188
|
-
resource(:file).get_named("redface").first.options[:ensure].should == "present"
|
|
62
|
+
it "should be able to call ensures method on the resource" do
|
|
63
|
+
@resource.respond_to?(:ensures).should == true
|
|
189
64
|
end
|
|
190
|
-
it "should
|
|
191
|
-
|
|
192
|
-
resource
|
|
65
|
+
it "should push the option ensure onto the options" do
|
|
66
|
+
@resource.options.has_key?(:ensure).should == false
|
|
67
|
+
@resource.ensures("nibbles")
|
|
68
|
+
@resource.options.has_key?(:ensure).should == true
|
|
193
69
|
end
|
|
194
|
-
it "should
|
|
195
|
-
|
|
196
|
-
resource
|
|
197
|
-
|
|
198
|
-
end
|
|
199
|
-
describe "get_resource" do
|
|
200
|
-
before(:each) do
|
|
201
|
-
@red = file(:name => "red")
|
|
202
|
-
@hot = file(:name => "hot")
|
|
203
|
-
@tamales = file(:name => "tamales")
|
|
70
|
+
it "should write the option ensures as present with is_present" do
|
|
71
|
+
@resource.options.has_key?(:ensure).should == false
|
|
72
|
+
@resource.is_present
|
|
73
|
+
@resource.options[:ensure].should == "present"
|
|
204
74
|
end
|
|
205
|
-
it "should
|
|
206
|
-
|
|
75
|
+
it "should write the option ensures as absent with is_absent" do
|
|
76
|
+
@resource.options.has_key?(:ensure).should == false
|
|
77
|
+
@resource.is_absent
|
|
78
|
+
@resource.options[:ensure].should == "absent"
|
|
207
79
|
end
|
|
208
|
-
it "should
|
|
209
|
-
|
|
80
|
+
it "should write the option unless for ifnot" do
|
|
81
|
+
@resource.options.has_key?(:unless).should == false
|
|
82
|
+
@resource.ifnot "str"
|
|
83
|
+
@resource.options[:unless].should == "str"
|
|
210
84
|
end
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
end
|
|
215
|
-
describe "parent" do
|
|
216
|
-
before(:each) do
|
|
217
|
-
@cloud = cloud :app do
|
|
218
|
-
tangerine "orange"
|
|
219
|
-
file(:name => "file.txt")
|
|
85
|
+
describe "templating" do
|
|
86
|
+
before(:each) do
|
|
87
|
+
FileUtils.stub!(:cp).and_return true
|
|
220
88
|
end
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
89
|
+
it "should have the method template" do
|
|
90
|
+
@resource.respond_to?(:template).should == true
|
|
91
|
+
end
|
|
92
|
+
it "should raise an exception if no file is given" do
|
|
93
|
+
lambda {
|
|
94
|
+
@resource.template
|
|
95
|
+
}.should raise_error
|
|
96
|
+
end
|
|
97
|
+
it "should raise an excepton if the file cannot be found" do
|
|
98
|
+
lambda {
|
|
99
|
+
@resource.template("radar")
|
|
100
|
+
}.should raise_error
|
|
101
|
+
end
|
|
102
|
+
it "should not raise an exception if there is a file passed and the file is found" do
|
|
103
|
+
File.should_receive(:file?).with("radar").and_return true
|
|
104
|
+
lambda {
|
|
105
|
+
@resource.template("radar")
|
|
106
|
+
}.should_not raise_error
|
|
107
|
+
end
|
|
108
|
+
# it "should push the template option on to the options" do
|
|
109
|
+
# File.stub!(:file?).with("radar").and_return true
|
|
110
|
+
# @resource.options.has_key?(:template).should == false
|
|
111
|
+
# @resource.template("radar")
|
|
112
|
+
# @resource.options.has_key?(:template).should == true
|
|
113
|
+
# end
|
|
228
114
|
end
|
|
229
115
|
end
|
|
230
|
-
describe "
|
|
116
|
+
describe "command" do
|
|
117
|
+
include PoolParty::Resources
|
|
231
118
|
before(:each) do
|
|
232
|
-
@
|
|
233
|
-
directory(:name => "/var/www") do
|
|
234
|
-
file(:name => "/var/www/file.html")
|
|
235
|
-
end
|
|
236
|
-
end
|
|
237
|
-
@dir = @cloud1.get_resource(:directory, "/var/www")
|
|
238
|
-
@file = @dir.get_resource(:file, "/var/www/file.html")
|
|
239
|
-
end
|
|
240
|
-
it "should say there is 1 resource because the lower-level resources should be contained on the parenting resource" do
|
|
241
|
-
@cloud1.resources.size.should == 1
|
|
119
|
+
@cloud = cloud :command_cloud do; end
|
|
242
120
|
end
|
|
243
|
-
|
|
244
|
-
|
|
121
|
+
describe "add_resource" do
|
|
122
|
+
it "should call add_resource when creating using the command: file" do
|
|
123
|
+
@cloud.should_receive(:add_resource).with(:file, {:name => "frank"}, @cloud)
|
|
124
|
+
@cloud.instance_eval do
|
|
125
|
+
file(:name => "frank")
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
it "should return a resource when the resource does not exist" do
|
|
129
|
+
file(:name => "/etc/frank.txt").class.should == PoolParty::Resources::File
|
|
130
|
+
end
|
|
131
|
+
it "should return a resource when the resource does exist" do
|
|
132
|
+
file(:name => "frank")
|
|
133
|
+
file(:name => "frank").class.should == PoolParty::Resources::File
|
|
134
|
+
end
|
|
245
135
|
end
|
|
246
|
-
it "should
|
|
247
|
-
|
|
136
|
+
it "should create the new 'resource' as a resource" do
|
|
137
|
+
resource(:file).class.should == Array
|
|
248
138
|
end
|
|
249
|
-
it "should
|
|
250
|
-
|
|
139
|
+
it "should receive << when adding a new one" do
|
|
140
|
+
resource(:file).should_receive(:<<).once
|
|
141
|
+
has_file({:name => "pop"})
|
|
251
142
|
end
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
143
|
+
it "should contain 3 instances after calling resource 3 times" do
|
|
144
|
+
file({:name => "red"})
|
|
145
|
+
file({:name => "hot"})
|
|
146
|
+
file({:name => "summer"})
|
|
147
|
+
resource(:file).size.should == 3
|
|
256
148
|
end
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
149
|
+
describe "adding" do
|
|
150
|
+
before(:each) do
|
|
151
|
+
@a = file({:name => "red"})
|
|
152
|
+
@b = file({:name => "hot"})
|
|
153
|
+
@c = file({:name => "summer"})
|
|
154
|
+
end
|
|
155
|
+
it "should contain file named with 'red'" do
|
|
156
|
+
get_resource(:file, "red").nil?.should == false
|
|
157
|
+
end
|
|
260
158
|
end
|
|
261
|
-
|
|
262
|
-
|
|
159
|
+
describe "method_missing" do
|
|
160
|
+
before(:each) do
|
|
161
|
+
file({:name => "red"})
|
|
162
|
+
file({:name => "hot"})
|
|
163
|
+
file({:name => "summer"})
|
|
164
|
+
end
|
|
165
|
+
it "should be able to pick out methods with the phrase has_" do
|
|
166
|
+
lambda {
|
|
167
|
+
has_file
|
|
168
|
+
}.should_not raise_error
|
|
169
|
+
end
|
|
170
|
+
it "should not have a method prepended with crabs_" do
|
|
171
|
+
lambda {
|
|
172
|
+
crabs_file
|
|
173
|
+
}.should raise_error
|
|
174
|
+
end
|
|
175
|
+
it "should pick out methods with the phrase does_not_" do
|
|
176
|
+
lambda {
|
|
177
|
+
does_not_have_file({:name => "red"})
|
|
178
|
+
}.should_not raise_error
|
|
179
|
+
end
|
|
180
|
+
it "should set the has_file to present ensure" do
|
|
181
|
+
has_file({:name => "redface"})
|
|
182
|
+
resource(:file).get_named("redface").first.options[:ensure].should == "present"
|
|
183
|
+
end
|
|
184
|
+
it "should set the does_not_have_file to absent ensure" do
|
|
185
|
+
does_not_have_file({:name => "net"})
|
|
186
|
+
resource(:file).get_named("net").first.options[:ensure].should == "absent"
|
|
187
|
+
end
|
|
188
|
+
it "should be able to have_service as well" do
|
|
189
|
+
has_service({:name => "apache"})
|
|
190
|
+
resource(:service).get_named("apache").first.options[:ensure].should == "running"
|
|
191
|
+
end
|
|
263
192
|
end
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
193
|
+
describe "get_resource" do
|
|
194
|
+
before(:each) do
|
|
195
|
+
reset_resources!
|
|
196
|
+
@cloud_get_resource = cloud :get_resource do
|
|
197
|
+
file(:name => "red")
|
|
198
|
+
file(:name => "hot")
|
|
199
|
+
file(:name => "tamales")
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
it "should return a type of resource when looking for a resource that exists" do
|
|
203
|
+
@cloud_get_resource.get_resource(:file, "hot").class.should == PoolParty::Resources::File
|
|
204
|
+
end
|
|
205
|
+
it "should return the resource of the name requested" do
|
|
206
|
+
@cloud_get_resource.get_resource(:file, "hot").name.should == "hot"
|
|
207
|
+
end
|
|
208
|
+
it "should return nil if the resource requested is not there" do
|
|
209
|
+
@cloud_get_resource.get_resource(:file, "smarties").should be_nil
|
|
210
|
+
end
|
|
211
|
+
it "should not have created any more resources" do
|
|
212
|
+
@cloud_get_resource.resource(:file).size.should == 3
|
|
213
|
+
end
|
|
267
214
|
end
|
|
268
|
-
|
|
269
|
-
|
|
215
|
+
describe "parent" do
|
|
216
|
+
before(:each) do
|
|
217
|
+
@cloud = cloud :orange do
|
|
218
|
+
tangerine "orange"
|
|
219
|
+
file(:name => "file.txt")
|
|
220
|
+
end
|
|
221
|
+
@file = @cloud.resources[:file].first
|
|
222
|
+
end
|
|
223
|
+
it "should take the options of the parent" do
|
|
224
|
+
@file.parent.tangerine.should_not == nil
|
|
225
|
+
end
|
|
226
|
+
it "should set the option as the same from the parent" do
|
|
227
|
+
@file.parent.tangerine.should == "orange"
|
|
228
|
+
end
|
|
270
229
|
end
|
|
271
|
-
describe "
|
|
272
|
-
|
|
273
|
-
@
|
|
230
|
+
describe "appending to resource" do
|
|
231
|
+
before(:each) do
|
|
232
|
+
@cloud1 = cloud :apples do
|
|
233
|
+
directory(:name => "/var/www") do
|
|
234
|
+
file(:name => "/var/www/file.html")
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
@dir = @cloud1.get_resource(:directory, "/var/www")
|
|
238
|
+
@file = @dir.get_resource(:file, "/var/www/file.html")
|
|
239
|
+
end
|
|
240
|
+
it "should say there is 1 resource because the lower-level resources should be contained on the parenting resource" do
|
|
241
|
+
@cloud1.resources.size.should == 1
|
|
274
242
|
end
|
|
275
|
-
it "should say
|
|
276
|
-
@
|
|
277
|
-
|
|
243
|
+
it "should say there is one resource on the outer resource" do
|
|
244
|
+
@dir.resources.size.should == 1
|
|
245
|
+
end
|
|
246
|
+
it "should contain the file as a resource" do
|
|
247
|
+
@dir.resource(:file)[0].to_s.should == @file.to_s
|
|
248
|
+
end
|
|
249
|
+
it "should set the parent as the parenting resource" do
|
|
250
|
+
@file.parent.to_s.should == @dir.to_s
|
|
278
251
|
end
|
|
279
252
|
end
|
|
280
|
-
describe "
|
|
253
|
+
describe "fetching" do
|
|
281
254
|
before(:each) do
|
|
282
|
-
@
|
|
255
|
+
@file = file(:name => "pancakes")
|
|
256
|
+
end
|
|
257
|
+
it "should not create a new resource if the same resource exists" do
|
|
258
|
+
PoolParty::Resources::File.should_not_receive(:new)
|
|
259
|
+
file(:name => "pancakes")
|
|
260
|
+
end
|
|
261
|
+
it "should return the file preiously created" do
|
|
262
|
+
get_resource(:file, "pancakes").options.keys.sort.should == @file.options.keys.sort
|
|
283
263
|
end
|
|
284
|
-
it "should
|
|
285
|
-
|
|
264
|
+
it "should be able to use the helper to grab the file" do
|
|
265
|
+
PoolParty::Resources::File.should_not_receive(:new)
|
|
266
|
+
self.stub!(:key).and_return "false"
|
|
267
|
+
file(:name => "pancakes").name.should == @file.name
|
|
268
|
+
end
|
|
269
|
+
it "should turn the resource into a string" do
|
|
270
|
+
@file.to_s.should == "File['pancakes']"
|
|
271
|
+
end
|
|
272
|
+
describe "cancelled" do
|
|
273
|
+
it "should make a resource not cancelled by default" do
|
|
274
|
+
@file.cancelled?.should == false
|
|
275
|
+
end
|
|
276
|
+
it "should say cancelled? is true if it has been cancelled" do
|
|
277
|
+
@file.cancel
|
|
278
|
+
@file.cancelled?.should == true
|
|
279
|
+
end
|
|
280
|
+
it "should be able to get the file from the helper" do
|
|
281
|
+
get_file("pancakes").options.keys.sort.should == @file.options.keys.sort
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
describe "virtual_resources" do
|
|
285
|
+
before(:each) do
|
|
286
|
+
@virtual_resource = git(:name => "tank", :source => "git://github.com/auser/testgit.git")
|
|
287
|
+
end
|
|
288
|
+
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
|
|
290
|
+
end
|
|
286
291
|
end
|
|
287
292
|
end
|
|
288
|
-
|
|
293
|
+
describe "global resources" do
|
|
294
|
+
describe "setting" do
|
|
295
|
+
before(:each) do
|
|
296
|
+
@cloud2 = cloud :applepie do
|
|
297
|
+
directory(:name => "/var/www") do
|
|
298
|
+
file(:name => "/var/www/file.html")
|
|
299
|
+
end
|
|
300
|
+
end
|
|
301
|
+
@cloud2 = cloud(:applepie)
|
|
302
|
+
end
|
|
303
|
+
it "should have a global_resources_store available as an Array" do
|
|
304
|
+
@cloud2.global_resources_store.class.should == Array
|
|
305
|
+
end
|
|
306
|
+
it "should have stored the two resources from the cloud into the global_resources_store" do
|
|
307
|
+
@cloud2.global_resources_store.size.should >= 2
|
|
308
|
+
end
|
|
309
|
+
it "should be an array of resources" do
|
|
310
|
+
@cloud2.global_resources_store.first.is_a?(PoolParty::Resources::Resource).should == true
|
|
311
|
+
end
|
|
312
|
+
it "should say that the type directory of name /var/www is in the global_resources_store" do
|
|
313
|
+
@cloud2.in_global_resource_store?(:directory, "/var/www").should == true
|
|
314
|
+
end
|
|
315
|
+
it "should say that the type file of the name /var/www/file.html is in the global_resources_store" do
|
|
316
|
+
@cloud2.in_global_resource_store?(:file, "/var/www/file.html").should == true
|
|
317
|
+
end
|
|
318
|
+
it "should say tht the type exec of the name echo 'hello' is not in the global_resources_store" do
|
|
319
|
+
@cloud2.in_global_resource_store?(:exec, "echo 'hello'").should == false
|
|
320
|
+
end
|
|
321
|
+
it "should say that the resource is in the global_resources_store when put in the global_resources_store" do
|
|
322
|
+
@file1 = PoolParty::Resources::File.new(:name => "/var/tmp.txt")
|
|
323
|
+
@cloud2.store_into_global_resource_store(@file1)
|
|
324
|
+
@cloud2.in_global_resource_store?(:file, "/var/tmp.txt")
|
|
325
|
+
end
|
|
326
|
+
it "should put the resource into the global_resources_store when calling store_into_global_resource_store" do
|
|
327
|
+
@file2 = PoolParty::Resources::File.new({:name => "/var/bunk.txt"})
|
|
328
|
+
@cloud2.global_resources_store.should_receive(:<<).with(@file2)
|
|
329
|
+
@cloud2.store_into_global_resource_store(@file2)
|
|
330
|
+
end
|
|
331
|
+
it "should not put a resource into the global_resources_store if it's already there" do
|
|
332
|
+
@file3 = PoolParty::Resources::File.new({:name => "/var/www/file.html"})
|
|
333
|
+
@cloud2.global_resources_store.should_not_receive(:<<).with(@file3)
|
|
334
|
+
@cloud2.store_into_global_resource_store(@file3)
|
|
335
|
+
end
|
|
336
|
+
it "should be able to get the resource from the global_resources_store by the name and type" do
|
|
337
|
+
@cloud2.get_from_global_resource_store(:directory, "/var/www").key.should == "/var/www"
|
|
338
|
+
end
|
|
339
|
+
describe "adding to global resource store" do
|
|
340
|
+
before(:each) do
|
|
341
|
+
@cloud3 = cloud :pumpkinpie do
|
|
342
|
+
file(:name => "/var/www/pumpkinfile.html")
|
|
343
|
+
file(:name => "/var/www/pumpkinfile.html")
|
|
344
|
+
apache do
|
|
345
|
+
file(:name => "/var/www/pumpkinfile.html")
|
|
346
|
+
end
|
|
347
|
+
end
|
|
348
|
+
@cloud3 = cloud(:pumpkinpie)
|
|
349
|
+
end
|
|
350
|
+
it "should not have 2 of the same resources" do
|
|
351
|
+
@cloud3.resource(:file).size.should == 1
|
|
352
|
+
end
|
|
353
|
+
end
|
|
354
|
+
describe "grabbing after already instantiated" do
|
|
355
|
+
before(:each) do
|
|
356
|
+
@cloud2.instance_eval do
|
|
357
|
+
has_package(:name => "apache2") do
|
|
358
|
+
has_exec(:name => "Add apache2 module") do
|
|
359
|
+
command "a2enmod mpm_worker"
|
|
360
|
+
end
|
|
361
|
+
end
|
|
362
|
+
has_package(:name => "boxers") do
|
|
363
|
+
has_file(:name => "/var/list_of_boxers.txt", :requires => (get_package("apache2")) )
|
|
364
|
+
end
|
|
365
|
+
end
|
|
366
|
+
end
|
|
367
|
+
describe "same_resources_of" do
|
|
368
|
+
it "should say that two resources are the same" do
|
|
369
|
+
has_file(:name => "tanks")
|
|
370
|
+
has_file(:name => "tanks").same_resources_of(:file, "tanks").should == true
|
|
371
|
+
end
|
|
372
|
+
it "should say that two resources are the same regardless of their context" do
|
|
373
|
+
@cloud2.instance_eval do
|
|
374
|
+
has_file(:name => "mighty_mighty_bosstones")
|
|
375
|
+
end
|
|
376
|
+
@cloud2.resource(:file).first.same_resources_of(:file, "mighty_mighty_bosstones").should == true
|
|
377
|
+
end
|
|
378
|
+
it "should say that two resources are not the same if they are not the same" do
|
|
379
|
+
has_file(:name => "trees").same_resources_of(:file, "timber").should == false
|
|
380
|
+
end
|
|
381
|
+
end
|
|
382
|
+
it "should grab the resource when called in in a block"# do
|
|
383
|
+
# @cloud2.resources_string_from_resources(@cloud2.resources).should =~ /\[ Package\['apache2'\], Package\['boxers'\] \]/
|
|
384
|
+
# end
|
|
385
|
+
end
|
|
386
|
+
describe "inherited" do
|
|
387
|
+
it "should turn passengersite_with_ssl into PassengerSiteWithSsl" do
|
|
388
|
+
"PassengersiteWithSsl".to_s.split("::")[-1].underscore.should == "passengersite_with_ssl"
|
|
389
|
+
end
|
|
390
|
+
end
|
|
391
|
+
end
|
|
392
|
+
end
|
|
393
|
+
end
|
|
289
394
|
end
|
|
290
395
|
end
|