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
|
@@ -4,41 +4,57 @@ module PoolParty
|
|
|
4
4
|
|
|
5
5
|
def install_tasks
|
|
6
6
|
[
|
|
7
|
-
|
|
7
|
+
setup_poolparty,
|
|
8
|
+
setup_puppet,
|
|
9
|
+
setup_configs,
|
|
8
10
|
] << configure_tasks
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
def configure_tasks
|
|
12
|
-
[
|
|
13
|
-
setup_configs,
|
|
14
|
+
[
|
|
14
15
|
start_puppet
|
|
15
16
|
]
|
|
16
17
|
end
|
|
18
|
+
|
|
19
|
+
def setup_poolparty
|
|
20
|
+
<<-EOE
|
|
21
|
+
echo "Running first time run"
|
|
22
|
+
cp #{Base.remote_storage_path}/#{Base.template_directory}/puppetrunner /usr/bin/puppetrunner
|
|
23
|
+
chmod +x /usr/bin/puppetrunner
|
|
24
|
+
EOE
|
|
25
|
+
end
|
|
17
26
|
|
|
18
27
|
def setup_puppet
|
|
19
28
|
<<-EOE
|
|
20
29
|
if [ -z "$(grep -v '#' /etc/hosts | grep 'master')" ]; then echo "#{master_ip} puppet master" >> /etc/hosts; else echo "host already set"; fi
|
|
21
30
|
cp #{Base.remote_storage_path}/namespaceauth.conf /etc/puppet/namespaceauth.conf
|
|
22
|
-
echo 'DAEMON_OPTS="-w 120 –fqdn #{@instance.name} –server master"' > /etc/default/puppet
|
|
23
31
|
EOE
|
|
24
32
|
end
|
|
25
33
|
|
|
26
34
|
def setup_configs
|
|
27
35
|
<<-EOS
|
|
28
|
-
echo "#{open(File.join(template_directory, "puppet.conf")).read}" > /etc/puppet/puppet.conf
|
|
36
|
+
echo "#{open(File.join(template_directory, "puppet.conf")).read}" > /etc/puppet/puppet.conf
|
|
37
|
+
/etc/init.d/puppetmaster stop #{unix_hide_string}
|
|
38
|
+
rm -rf /etc/puppet/ssl
|
|
39
|
+
# /usr/bin/puppetrerun
|
|
29
40
|
EOS
|
|
30
41
|
end
|
|
31
|
-
|
|
42
|
+
|
|
32
43
|
# /etc/init.d/puppetmasterd stop
|
|
33
44
|
# puppetd --listen --fqdn #{@instance.name}
|
|
34
45
|
def start_puppet
|
|
35
46
|
<<-EOS
|
|
36
|
-
|
|
37
|
-
rm -rf /etc/puppet/ssl*
|
|
38
|
-
puppetd --test 2>&1 &
|
|
47
|
+
/bin/sh /usr/bin/puppetrunner
|
|
39
48
|
EOS
|
|
40
49
|
end
|
|
41
50
|
|
|
51
|
+
def last_install_tasks
|
|
52
|
+
[
|
|
53
|
+
"rm -rf /etc/puppet/ssl",
|
|
54
|
+
"/usr/bin/puppetrerun"
|
|
55
|
+
]
|
|
56
|
+
end
|
|
57
|
+
|
|
42
58
|
def master_ip
|
|
43
59
|
@cloud.master.ip
|
|
44
60
|
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module PoolParty
|
|
2
|
+
module CloudDsl
|
|
3
|
+
|
|
4
|
+
def mount_ebs_volume_at(id="", loc="/data")
|
|
5
|
+
ebs_volume_id id
|
|
6
|
+
ebs_volume_mount_point loc
|
|
7
|
+
ebs_volume_device "/dev/#{id.sanitize}"
|
|
8
|
+
has_directory(:name => loc)
|
|
9
|
+
has_mount(:name => loc, :device => ebs_volume_device)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -3,10 +3,26 @@ require "ftools"
|
|
|
3
3
|
module PoolParty
|
|
4
4
|
module CloudResourcer
|
|
5
5
|
|
|
6
|
+
def plugin_directory(*args)
|
|
7
|
+
args = ["/plugins"] if args.empty?
|
|
8
|
+
args.each {|arg| Dir["#{arg}/*/*.rb"].each {|f| require f rescue "" }}
|
|
9
|
+
end
|
|
10
|
+
|
|
6
11
|
# Store block
|
|
7
12
|
def store_block(&block)
|
|
8
|
-
@
|
|
13
|
+
@stored_block ||= block ? block : nil
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def stored_block
|
|
17
|
+
@stored_block
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# This will run the blocks after they are stored if there is a block
|
|
21
|
+
# associated
|
|
22
|
+
def run_stored_block
|
|
23
|
+
self.run_in_context @stored_block if @stored_block
|
|
9
24
|
end
|
|
25
|
+
|
|
10
26
|
# Set instances with a range
|
|
11
27
|
def instances(arg)
|
|
12
28
|
if arg.is_a?(Range)
|
|
@@ -65,15 +81,30 @@ module PoolParty
|
|
|
65
81
|
]
|
|
66
82
|
end
|
|
67
83
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
84
|
+
def context_stack
|
|
85
|
+
@@context_stack ||= []
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def run_setup(parent, should_set_parent=true, &block)
|
|
89
|
+
context_stack.push parent
|
|
90
|
+
|
|
91
|
+
set_parent if should_set_parent
|
|
92
|
+
run_in_context self, &block if block
|
|
93
|
+
|
|
94
|
+
context_stack.pop
|
|
75
95
|
end
|
|
76
96
|
|
|
97
|
+
# Set the parent on the resource
|
|
98
|
+
def set_parent(sink_options=true)
|
|
99
|
+
unless context_stack.last.nil?
|
|
100
|
+
@parent = context_stack.last
|
|
101
|
+
# Add self as a service on the parent
|
|
102
|
+
parent.add_service(self) if parent.respond_to?(:add_service)
|
|
103
|
+
# Take the options of the parents
|
|
104
|
+
configure(parent.options) if parent && parent.respond_to?(:options) && sink_options
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
77
108
|
def number_of_resources
|
|
78
109
|
arr = resources.map do |n, r|
|
|
79
110
|
r.size
|
|
@@ -85,5 +116,17 @@ module PoolParty
|
|
|
85
116
|
@parent ||= nil
|
|
86
117
|
end
|
|
87
118
|
|
|
119
|
+
def plugin_store
|
|
120
|
+
@plugin_store ||= []
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def realize_plugins!
|
|
124
|
+
plugin_store.each {|plugin| plugin.realize! if plugin }
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def plugin_store
|
|
128
|
+
@plugins ||= []
|
|
129
|
+
end
|
|
130
|
+
|
|
88
131
|
end
|
|
89
132
|
end
|
|
@@ -16,7 +16,7 @@ module PoolParty
|
|
|
16
16
|
#
|
|
17
17
|
# For example usage, see lib/poolparty/plugins/line.rb
|
|
18
18
|
def define_resource(name, &block)
|
|
19
|
-
symc = "#{name}".
|
|
19
|
+
symc = "#{name}".camelcase
|
|
20
20
|
klass = symc.class_constant(PoolParty::Resources::CustomResource, {:preserve => true}, &block)
|
|
21
21
|
PoolParty::Resources.module_eval &block
|
|
22
22
|
klass
|
|
@@ -44,7 +44,7 @@ module PoolParty
|
|
|
44
44
|
#
|
|
45
45
|
# An example is included in the poolparty-apache-plugin
|
|
46
46
|
def virtual_resource(name=:virtual_resource, opts={}, &block)
|
|
47
|
-
symc = "#{name}".
|
|
47
|
+
symc = "#{name}".camelcase
|
|
48
48
|
eval <<-EOE
|
|
49
49
|
class PoolParty::Resources::#{symc} < PoolParty::Resources::Resource
|
|
50
50
|
end
|
|
@@ -5,11 +5,27 @@ module PoolParty
|
|
|
5
5
|
path = ::File.join( Base.storage_directory, preceded, ::File.basename(file) )
|
|
6
6
|
FileUtils.cp file, path unless file == path || ::File.exists?(path)
|
|
7
7
|
end
|
|
8
|
+
def cleanup_storage_directory
|
|
9
|
+
Dir["#{Base.storage_directory}/**/*"].each do |f|
|
|
10
|
+
::FileUtils.rm f if ::File.file?(f)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
8
13
|
def copy_template_to_storage_directory(file)
|
|
9
14
|
make_template_directory
|
|
10
15
|
path = ::File.join( Base.tmp_path, Base.template_directory, ::File.basename(file) )
|
|
11
16
|
FileUtils.cp file, path unless file == path || ::File.exists?(path)
|
|
12
17
|
end
|
|
18
|
+
def copy_directory_into_template_storage_directory(dir)
|
|
19
|
+
path = make_template_directory(dir)
|
|
20
|
+
Dir["#{dir}/*"].each do |file|
|
|
21
|
+
FileUtils.cp file, path unless ::File.exists?(::File.join(path, ::File.basename(file)))
|
|
22
|
+
end
|
|
23
|
+
::File.basename(path)
|
|
24
|
+
end
|
|
25
|
+
def make_directory_in_storage_directory(dirname="newdir")
|
|
26
|
+
path = ::File.join( Base.storage_directory, dirname )
|
|
27
|
+
make_base_path path
|
|
28
|
+
end
|
|
13
29
|
def write_to_file_in_storage_directory(file, str, preceded="", &block)
|
|
14
30
|
path = ::File.join( Base.storage_directory, preceded, ::File.basename(file) )
|
|
15
31
|
write_to_file(path, str, &block)
|
|
@@ -34,7 +50,8 @@ module PoolParty
|
|
|
34
50
|
end
|
|
35
51
|
def make_base_path(path)
|
|
36
52
|
unless FileTest.directory?(path)
|
|
37
|
-
begin
|
|
53
|
+
begin
|
|
54
|
+
::FileUtils.rm path if ::File.file?(path)
|
|
38
55
|
::FileUtils.mkdir_p path
|
|
39
56
|
rescue Errno::ENOTDIR
|
|
40
57
|
rescue Errno::EEXIST
|
|
@@ -43,14 +60,28 @@ module PoolParty
|
|
|
43
60
|
end
|
|
44
61
|
end
|
|
45
62
|
def make_base_directory
|
|
46
|
-
|
|
63
|
+
begin
|
|
64
|
+
FileUtils.mkdir_p Base.storage_directory unless ::File.directory?(Base.storage_directory)
|
|
65
|
+
rescue Errno::EEXIST
|
|
66
|
+
FileUtils.rm Base.storage_directory
|
|
67
|
+
make_base_directory
|
|
68
|
+
end
|
|
47
69
|
end
|
|
48
|
-
def make_template_directory
|
|
49
|
-
path = ::File.join(Base.tmp_path, Base.template_directory)
|
|
50
|
-
|
|
70
|
+
def make_template_directory(dir=nil)
|
|
71
|
+
path = dir ? ::File.join(Base.tmp_path, Base.template_directory, ::File.basename(dir)) : ::File.join(Base.tmp_path, Base.template_directory)
|
|
72
|
+
begin
|
|
73
|
+
make_base_directory
|
|
74
|
+
FileUtils.mkdir path unless ::File.directory?(path)
|
|
75
|
+
rescue Errno::EEXIST
|
|
76
|
+
FileUtils.rm path if ::File.exists?(path)
|
|
77
|
+
make_template_directory(dir)
|
|
78
|
+
end
|
|
79
|
+
path
|
|
51
80
|
end
|
|
52
81
|
def clear_base_directory
|
|
53
|
-
|
|
82
|
+
Dir["#{Base.storage_directory}/**/*"].each do |f|
|
|
83
|
+
::FileUtils.rm f if ::File.file?(f)
|
|
84
|
+
end
|
|
54
85
|
end
|
|
55
86
|
end
|
|
56
87
|
end
|
|
@@ -16,7 +16,7 @@ module PoolParty
|
|
|
16
16
|
# See get_from_options for more information
|
|
17
17
|
def method_missing(m, *args, &block)
|
|
18
18
|
if block_given?
|
|
19
|
-
(args[0].class == self.class) ? args[0].
|
|
19
|
+
(args[0].class == self.class) ? args[0].run_in_context(&block) : super
|
|
20
20
|
else
|
|
21
21
|
get_from_options(m, *args, &block)
|
|
22
22
|
end
|
|
@@ -42,10 +42,15 @@ module PoolParty
|
|
|
42
42
|
if options.has_key?(m)
|
|
43
43
|
options[m]
|
|
44
44
|
else
|
|
45
|
-
(parent.nil? || parent.class == self.class || !parent.respond_to?(:options) || parent.options.has_key?(m)) ? nil : parent.send(m, *args, &block)
|
|
45
|
+
(parent.nil? || parent.class == self.class || !parent.respond_to?(:options) || parent.options.has_key?(m) || !parent.respond_to?(m)) ? nil : parent.send(m, *args, &block)
|
|
46
46
|
end
|
|
47
47
|
else
|
|
48
|
-
options[m] =
|
|
48
|
+
options[m] =
|
|
49
|
+
if (args.is_a?(Array) && args.size > 1)
|
|
50
|
+
args
|
|
51
|
+
else
|
|
52
|
+
args[0]
|
|
53
|
+
end
|
|
49
54
|
end
|
|
50
55
|
end
|
|
51
56
|
|
|
@@ -6,7 +6,8 @@ module PoolParty
|
|
|
6
6
|
str ? options.merge!(:require => str) : options[:require]
|
|
7
7
|
end
|
|
8
8
|
def requires(str=nil)
|
|
9
|
-
str ? options.append!(:require => str) : options[:require]
|
|
9
|
+
# str ? options.append!(:require => str) : options[:require]
|
|
10
|
+
str ? options.append!(:require => send_if_method(str)) : options[:require]
|
|
10
11
|
end
|
|
11
12
|
def ensures(str="running")
|
|
12
13
|
if %w(absent running).map {|a| self.send a.to_sym}.include?(str)
|
|
@@ -49,7 +50,8 @@ module PoolParty
|
|
|
49
50
|
def template(file, opts={})
|
|
50
51
|
raise TemplateNotFound.new("no template given") unless file
|
|
51
52
|
raise TemplateNotFound.new("template cannot be found #{file}") unless ::File.file?(file)
|
|
52
|
-
|
|
53
|
+
|
|
54
|
+
unless opts[:just_copy]
|
|
53
55
|
options.merge!({:content => "template(\"#{::File.basename(file)}\")"})
|
|
54
56
|
options.delete(:source) if options.has_key?(:source)
|
|
55
57
|
copy_template_to_storage_directory(file)
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
require 'thread'
|
|
2
|
+
begin
|
|
3
|
+
require 'fasttread'
|
|
4
|
+
rescue LoadError
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
class ThreadPool
|
|
8
|
+
class Worker
|
|
9
|
+
def initialize(thread_queue)
|
|
10
|
+
@mutex = Mutex.new
|
|
11
|
+
@cv = ConditionVariable.new
|
|
12
|
+
@queue = thread_queue
|
|
13
|
+
@running = true
|
|
14
|
+
@thread = Thread.new do
|
|
15
|
+
@mutex.synchronize do
|
|
16
|
+
while @running
|
|
17
|
+
@cv.wait(@mutex)
|
|
18
|
+
block = get_block
|
|
19
|
+
if block
|
|
20
|
+
@mutex.unlock
|
|
21
|
+
block.call
|
|
22
|
+
@mutex.lock
|
|
23
|
+
reset_block
|
|
24
|
+
end
|
|
25
|
+
@queue << self
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def name
|
|
32
|
+
@thread.inspect
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def get_block
|
|
36
|
+
@block
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def set_block(block)
|
|
40
|
+
@mutex.synchronize do
|
|
41
|
+
raise RuntimeError, "Thread already busy." if @block
|
|
42
|
+
@block = block
|
|
43
|
+
# Signal the thread in this class, that there's a job to be done
|
|
44
|
+
@cv.signal
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def reset_block
|
|
49
|
+
@block = nil
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def busy?
|
|
53
|
+
@mutex.synchronize { !@block.nil? }
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def stop
|
|
57
|
+
@mutex.synchronize do
|
|
58
|
+
@running = false
|
|
59
|
+
@cv.signal
|
|
60
|
+
end
|
|
61
|
+
@thread.join
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
attr_accessor :max_size
|
|
66
|
+
|
|
67
|
+
def initialize(max_size = 10)
|
|
68
|
+
@max_size = max_size
|
|
69
|
+
@queue = Queue.new
|
|
70
|
+
@workers = []
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def size
|
|
74
|
+
@workers.size
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def busy?
|
|
78
|
+
@queue.size < @workers.size
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def shutdown
|
|
82
|
+
@workers.each { |w| w.stop }
|
|
83
|
+
@workers = []
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
alias :join :shutdown
|
|
87
|
+
|
|
88
|
+
def process(block=nil,&blk)
|
|
89
|
+
block = blk if block_given?
|
|
90
|
+
worker = get_worker
|
|
91
|
+
worker.set_block(block)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
private
|
|
95
|
+
|
|
96
|
+
def get_worker
|
|
97
|
+
if !@queue.empty? or @workers.size == @max_size
|
|
98
|
+
return @queue.pop
|
|
99
|
+
else
|
|
100
|
+
worker = Worker.new(@queue)
|
|
101
|
+
@workers << worker
|
|
102
|
+
worker
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
end
|
|
@@ -1,14 +1,58 @@
|
|
|
1
1
|
=begin rdoc
|
|
2
2
|
Monitor class
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
Monitors are the basis for PoolParty scaling. Your cloud will expand and
|
|
5
|
+
contract against these monitors. You can set your cloud to be monitored by these
|
|
6
|
+
monitors simply by using them in the contract_when and the expand_when macros
|
|
7
|
+
on your cloud like so:
|
|
8
|
+
|
|
9
|
+
expand_when "cpu > 1.2", "memory > 0.94"
|
|
10
|
+
contract_when "cpu < 0.4", "memory < 0.3"
|
|
11
|
+
|
|
12
|
+
You can also add your own monitors simply by creating a directory in the same
|
|
13
|
+
directory as the pool spec (the same directory as the plugin directory exists) and
|
|
14
|
+
placing your monitor file (format: [monitorname]_monitor.rb) there.
|
|
15
|
+
|
|
16
|
+
Monitors are simply classes of the name of the monitor. They subclass the BaseMonitor
|
|
17
|
+
class from PoolParty. A sample monitor would look similar to:
|
|
18
|
+
|
|
19
|
+
class SampleMonitor < PoolParty::Monitors::BaseMonitor
|
|
20
|
+
def run
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
register_monitor :sample
|
|
24
|
+
|
|
25
|
+
The monitor class must have an instance level method called run. This method is called when
|
|
26
|
+
the cloud is checking the monitor. The output of this method should be the output of
|
|
27
|
+
the monitor.
|
|
28
|
+
|
|
29
|
+
Notice that at the end, you must call register_monitor :monitorname. This will tell your cloud
|
|
30
|
+
that it can monitor it with this monitor.
|
|
5
31
|
=end
|
|
32
|
+
require "#{::File.dirname(__FILE__)}/../pool/base"
|
|
33
|
+
|
|
6
34
|
module PoolParty
|
|
7
|
-
module Monitors
|
|
35
|
+
module Monitors
|
|
36
|
+
|
|
37
|
+
module ClassMethods
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
module InstanceMethods
|
|
41
|
+
def expand_when(*arr)
|
|
42
|
+
@expand_when ||= ((arr && arr.empty?) ? options[:expand_when] : configure(:expand_when => self.class.send(:rules,:expand_when,arr,false)))
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def contract_when(*arr)
|
|
46
|
+
@contract_when ||= ((arr&&arr.empty?) ? options[:contract_when] : configure(:contract_when => self.class.send(:rules,:contract_when,arr,false)))
|
|
47
|
+
end
|
|
48
|
+
end
|
|
8
49
|
|
|
9
50
|
def self.register_monitor(*args)
|
|
10
51
|
args.each do |arg|
|
|
11
|
-
(available_monitors << "#{arg}".downcase.to_sym)
|
|
52
|
+
(available_monitors << "#{arg}".downcase.to_sym unless available_monitors.include?("#{arg}".downcase.to_sym))
|
|
53
|
+
|
|
54
|
+
InstanceMethods.module_eval "def #{arg}; @#{arg} ||= get_live_#{arg}; end"
|
|
55
|
+
InstanceMethods.module_eval "def get_live_#{arg}; messenger_send!(\"get_current_load #{arg}\").to_f rescue -1.0; end"
|
|
12
56
|
end
|
|
13
57
|
end
|
|
14
58
|
|
|
@@ -17,14 +61,29 @@ module PoolParty
|
|
|
17
61
|
end
|
|
18
62
|
|
|
19
63
|
class BaseMonitor
|
|
20
|
-
|
|
21
64
|
def self.run
|
|
22
65
|
new.run
|
|
23
66
|
end
|
|
24
|
-
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def self.included(receiver)
|
|
70
|
+
receiver.extend PoolParty::Monitors::ClassMethods
|
|
71
|
+
receiver.send :include, PoolParty::Monitors::InstanceMethods
|
|
72
|
+
receiver.send :include, Aska
|
|
25
73
|
end
|
|
26
74
|
|
|
27
75
|
end
|
|
28
76
|
end
|
|
29
77
|
|
|
30
|
-
|
|
78
|
+
# Require included monitors
|
|
79
|
+
Dir["#{File.dirname(__FILE__)}/monitors/*.rb"].each {|f| require f}
|
|
80
|
+
# Require custom monitors
|
|
81
|
+
Dir["#{PoolParty::Base.custom_monitor_directories}/*.rb"].each {|f| require f}
|
|
82
|
+
|
|
83
|
+
module PoolParty
|
|
84
|
+
module Cloud
|
|
85
|
+
class Cloud
|
|
86
|
+
include PoolParty::Monitors
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -4,6 +4,34 @@ module PoolParty
|
|
|
4
4
|
class MemoryMonitor < BaseMonitor
|
|
5
5
|
|
|
6
6
|
def run
|
|
7
|
+
uname = %x[uname]
|
|
8
|
+
case uname.chomp
|
|
9
|
+
when "Darwin"
|
|
10
|
+
darwin_memory_usage
|
|
11
|
+
else
|
|
12
|
+
nix_memory_usage
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def darwin_memory_usage
|
|
17
|
+
str = %x[vm_stat]
|
|
18
|
+
keep_array = []
|
|
19
|
+
array_of_strings = str
|
|
20
|
+
begin
|
|
21
|
+
free_memory = array_of_strings[/free:(\W*)+([0-9]+)/, 2].to_f
|
|
22
|
+
active_memory = array_of_strings[/active:(\W*)([0-9]+)/, 2].to_f
|
|
23
|
+
inactive_memory = array_of_strings[/inactive:(\W*)([0-9]+)/, 2].to_f
|
|
24
|
+
|
|
25
|
+
used_memory = (active_memory + inactive_memory)
|
|
26
|
+
total_memory = (free_memory + active_memory + inactive_memory)
|
|
27
|
+
|
|
28
|
+
used_memory / total_memory
|
|
29
|
+
rescue Exception => e
|
|
30
|
+
0.0
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def nix_memory_usage
|
|
7
35
|
str = %x[free -m | grep -i mem]
|
|
8
36
|
begin
|
|
9
37
|
total_memory = str.split[1].to_f
|
|
@@ -13,7 +41,6 @@ module PoolParty
|
|
|
13
41
|
rescue Exception => e
|
|
14
42
|
0.0
|
|
15
43
|
end
|
|
16
|
-
|
|
17
44
|
end
|
|
18
45
|
|
|
19
46
|
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
=begin rdoc
|
|
2
|
+
The connection to the messenger from poolparty, the client.
|
|
3
|
+
|
|
4
|
+
This class will setup a socket connection to the master's client
|
|
5
|
+
at the messenger_client_port
|
|
6
|
+
=end
|
|
7
|
+
module PoolParty
|
|
8
|
+
module Messenger
|
|
9
|
+
def with_socket(testing=false, &block)
|
|
10
|
+
host = testing ? "localhost" : (master.ip)
|
|
11
|
+
vputs "Pinging #{host} with the messenger"
|
|
12
|
+
socket = TCPSocket.open(host, Base.messenger_client_port)
|
|
13
|
+
out = yield(socket)
|
|
14
|
+
socket.close
|
|
15
|
+
out
|
|
16
|
+
end
|
|
17
|
+
# TODO: Fix cookie setting
|
|
18
|
+
def self.erl_command(hostname, extra="", min_ports=7000, max_ports=7050)
|
|
19
|
+
command_line_opts = "-pa #{append_dir}/ebin -kernel inet_dist_listen_min #{min_ports} inet_dist_listen_max #{max_ports} -sname #{hostname} -setcookie poolparty"
|
|
20
|
+
|
|
21
|
+
"erl #{command_line_opts} #{extra}"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.append_dir
|
|
25
|
+
::File.expand_path(::File.join( ::File.dirname(__FILE__), "..", "..", "erlang/messenger" ))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def messenger_send!(msg="get_current_load cpu", testing=false)
|
|
29
|
+
with_socket(testing) do |sock|
|
|
30
|
+
sock.send(msg, 0)
|
|
31
|
+
@str = sock.recv(2000)
|
|
32
|
+
end
|
|
33
|
+
vputs "Received #{@str} from #{msg}"
|
|
34
|
+
@str
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def messenger_cast!(msg="force_reconfig")
|
|
38
|
+
with_socket do |sock|
|
|
39
|
+
sock.send(msg, 0)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def self.messenger_send!(cmd="", testing=false)
|
|
44
|
+
command = Messenger.erl_command("client#{Time.now.to_i}", "-s pm_client -run pm_client #{cmd} -s erlang halt -noshell")
|
|
45
|
+
testing ? command : %x[#{command}]
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Helper methods
|
|
49
|
+
def self.startup_remote_messenger(hostname, testing=false)
|
|
50
|
+
# messenger_send!("")
|
|
51
|
+
# testing ? command : %x[#{command}]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
module PoolParty
|
|
58
|
+
module Cloud
|
|
59
|
+
class Cloud
|
|
60
|
+
include PoolParty::Messenger
|
|
61
|
+
|
|
62
|
+
def get_current_nodes
|
|
63
|
+
nodes = messenger_send!("get_current_nodes")
|
|
64
|
+
nodes.split(" ").map {|a| a.split(/@/)[-1] }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def reconfigure_cloud!(msg="force_reconfig")
|
|
68
|
+
messenger_cast!(msg)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
data/lib/poolparty/net/remote.rb
CHANGED
|
@@ -7,16 +7,19 @@ module PoolParty
|
|
|
7
7
|
include PoolParty::Remote::Remoter
|
|
8
8
|
|
|
9
9
|
def using(t)
|
|
10
|
+
@cloud = self
|
|
10
11
|
if available_bases.include?(t.to_sym)
|
|
11
12
|
unless using_remoter? || t.nil?
|
|
12
13
|
self.class.send :attr_reader, :remote_base
|
|
14
|
+
self.class.send :attr_reader, :parent_cloud
|
|
13
15
|
mod = "#{t}".preserved_module_constant
|
|
14
16
|
|
|
15
|
-
mod.send :include, PoolParty::Remote::RemoterBase
|
|
17
|
+
# mod.send :include, PoolParty::Remote::RemoterBase
|
|
16
18
|
self.class.send :include, mod
|
|
17
19
|
self.extend mod
|
|
18
|
-
|
|
20
|
+
|
|
19
21
|
@remote_base = "#{t}".preserved_module_constant
|
|
22
|
+
@parent_cloud = @cloud
|
|
20
23
|
end
|
|
21
24
|
else
|
|
22
25
|
puts "Unknown remote base"
|