poolparty 0.2.18 → 0.2.69
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -2,54 +2,55 @@ module PoolParty
|
|
2
2
|
class Base
|
3
3
|
plugin :heartbeat do
|
4
4
|
|
5
|
+
# TODO: Reimplement heartbeat
|
5
6
|
def enable
|
6
|
-
execute_if("$hostname", "master") do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
execute_if("$hostname", "master") do
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
end
|
7
|
+
# execute_if("$hostname", "master") do
|
8
|
+
# has_package(:name => "heartbeat-2", :ensure => "installed") do
|
9
|
+
# # These can also be passed in via hash
|
10
|
+
# has_service(:name => "heartbeat", :hasstatus => true)
|
11
|
+
#
|
12
|
+
# has_remotefile(:name => "/etc/ha.d/ha.cf") do
|
13
|
+
# mode 444
|
14
|
+
# notify service(:name => "heartbeat")
|
15
|
+
# template File.join(File.dirname(__FILE__), "..", "templates/ha.cf")
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# has_exec(:name => "heartbeat-update-cib", :command => "/usr/sbin/cibadmin -R -x /etc/ha.d/cib.xml", :refreshonly => true)
|
19
|
+
#
|
20
|
+
# has_remotefile(:name => "/etc/ha.d/authkeys") do
|
21
|
+
# mode 400
|
22
|
+
# notify service(:name => "heartbeat")
|
23
|
+
# template File.join(File.dirname(__FILE__), "..", "templates/authkeys")
|
24
|
+
# end
|
25
|
+
#
|
26
|
+
# has_remotefile(:name => "/etc/ha.d/cib.xml") do
|
27
|
+
# mode 444
|
28
|
+
# notify exec(:name => "heartbeat-update-cib")
|
29
|
+
# template File.join(File.dirname(__FILE__), "..", "templates/cib.xml")
|
30
|
+
# end
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# if @parent.provisioning?
|
34
|
+
# variable(:name => "ha_nodenames", :value => "#{list_of_running_instances.map{|a| "#{a.send :name}" }.join("\t")}")
|
35
|
+
# variable(:name => "ha_node_ips", :value => "#{list_of_running_instances.map{|a| "#{a.send :ip}" }.join("\t")}")
|
36
|
+
# else
|
37
|
+
# # variables for the templates
|
38
|
+
# variable(:name => "ha_nodenames", :value => "generate('/usr/bin/env', '/var/lib/gems/1.8/bin/server-list-active', '-c', 'name')")
|
39
|
+
# variable(:name => "ha_node_ips", :value => "generate('/usr/bin/env', '/var/lib/gems/1.8/bin/server-list-active', '-c', 'ip')")
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
# has_variable({:name => "ha_timeout", :value => (self.respond_to?(:timeout) ? timeout : "5s")})
|
43
|
+
# has_variable({:name => "ha_port", :value => (self.respond_to?(:port) ? port : Base.port)})
|
44
|
+
#
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
# execute_if("$hostname", "master") do
|
48
|
+
# if list_of_node_names.size > 1
|
49
|
+
# has_exec(:name => "update pem for heartbeat", :refreshonly => true) do
|
50
|
+
# command "scp /etc/puppet/ssl/ca/ca_crl.pem #{user || Base.user}@#{list_of_node_ips[1]}:/etc/puppet/ssl/ca"
|
51
|
+
# end
|
52
|
+
# end
|
53
|
+
# end
|
53
54
|
|
54
55
|
end
|
55
56
|
end
|
@@ -1,56 +1,108 @@
|
|
1
1
|
module PoolParty
|
2
2
|
class Base
|
3
|
-
plugin :
|
3
|
+
plugin :poolparty_base_packages do
|
4
4
|
|
5
|
-
def enable
|
5
|
+
def enable
|
6
|
+
# Build hostsfile
|
7
|
+
|
6
8
|
has_package(:name => "erlang")
|
7
9
|
has_package(:name => "erlang-dev")
|
8
10
|
has_package(:name => "erlang-src")
|
11
|
+
# has_package(:name => "yaws")
|
9
12
|
|
10
13
|
has_package(:name => "rubygems") do
|
11
14
|
# These should be installed automagically by poolparty, but just in case
|
12
|
-
# TODO: Fix the requires method with a helper
|
13
|
-
has_gempackage(:name => "
|
14
|
-
has_gempackage(:name => "
|
15
|
-
|
16
|
-
|
17
|
-
has_gempackage(:name => "
|
15
|
+
# TODO: Fix the requires method with a helper
|
16
|
+
has_gempackage(:name => "flexmock", :download_url => "http://rubyforge.org/frs/download.php/42580/flexmock-0.8.3.gem")
|
17
|
+
has_gempackage(:name => "lockfile", :download_url => "http://rubyforge.org/frs/download.php/18698/lockfile-1.4.3.gem")
|
18
|
+
has_gempackage(:name => "logging", :download_url => "http://rubyforge.org/frs/download.php/44731/logging-0.9.4.gem", :requires => [get_gempackage("flexmock"), get_gempackage("lockfile")])
|
19
|
+
|
20
|
+
has_gempackage(:name => "rubyforge", :download_url => "http://rubyforge.org/frs/download.php/45546/rubyforge-1.0.1.gem")
|
21
|
+
has_gempackage(:name => "hoe", :download_url => "http://rubyforge.org/frs/download.php/45685/hoe-1.8.2.gem", :version => "1.8", :requires => get_gempackage("rubyforge"))
|
22
|
+
has_gempackage(:name => "ZenTest", :download_url => "http://rubyforge.org/frs/download.php/45581/ZenTest-3.11.0.gem", :requires => [get_gempackage("hoe"), get_gempackage("rubyforge")])
|
18
23
|
|
19
|
-
has_gempackage(:name => "
|
20
|
-
|
24
|
+
has_gempackage(:name => "rake", :download_url => "http://rubyforge.org/frs/download.php/43954/rake-0.8.3.gem")
|
25
|
+
has_gempackage(:name => "xml-simple", :download_url => "http://rubyforge.org/frs/download.php/18366/xml-simple-1.0.11.gem")
|
26
|
+
has_gempackage(:name => "amazon-ec2", :download_url => "http://rubyforge.org/frs/download.php/43666/amazon-ec2-0.3.1.gem", :requires => get_gempackage("xml-simple"))
|
27
|
+
|
28
|
+
has_gempackage(:name => "sexp_processor", :download_url => "http://rubyforge.org/frs/download.php/45589/sexp_processor-3.0.0.gem")
|
29
|
+
has_gempackage(:name => "ParseTree", :download_url => "http://rubyforge.org/frs/download.php/45600/ParseTree-3.0.1.gem", :requires => [get_gempackage("sexp_processor"), get_gempackage("ZenTest")])
|
21
30
|
|
22
|
-
|
23
|
-
has_gempackage(:name => "ruby2ruby")
|
24
|
-
has_gempackage(:name => "activesupport") do
|
25
|
-
has_gempackage(:name => "auser-poolparty", :source => "http://gems.github.com") do
|
26
|
-
has_exec(:name => "build_messenger", :command => ". /etc/profile && server-build-messenger")
|
27
|
-
has_exec(:name => "start_node", :command => ". /etc/profile && server-start-node", :requires => 'Exec["build_messenger"]')
|
28
|
-
end
|
29
|
-
end
|
30
|
-
has_gempackage(:name => "RubyInline")
|
31
|
-
end
|
32
|
-
end
|
31
|
+
has_gempackage(:name => "ruby2ruby", :download_url => "http://rubyforge.org/frs/download.php/45587/ruby2ruby-1.2.0.gem", :requires => get_gempackage("ParseTree"))
|
33
32
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
33
|
+
has_gempackage(:name => "activesupport", :download_url => "http://rubyforge.org/frs/download.php/45627/activesupport-2.1.2.gem")
|
34
|
+
|
35
|
+
has_gempackage(:name => "RubyInline", :download_url => "http://rubyforge.org/frs/download.php/45683/RubyInline-3.8.1.gem")
|
36
|
+
|
37
|
+
has_gempackage(:name => "poolparty", :download_url => "http://github.com/auser/poolparty/tree/master%2Fpkg%2Fpoolparty.gem?raw=true", :requires => [get_gempackage("ruby2ruby"), get_gempackage("RubyInline"), get_gempackage("ParseTree")])
|
38
|
+
|
39
|
+
# , :ifnot => "/bin/ps aux | /bin/grep -q pm_node"
|
40
|
+
# has_runit_service("pm_node", "pm_node", File.join(File.dirname(__FILE__), "..", "templates/messenger/node/"))
|
40
41
|
end
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
has_exec(:name => "build_messenger", :command => ". /etc/profile && server-build-messenger")
|
44
|
+
has_exec(:name => "start_node", :command => ". /etc/profile && server-start-node")
|
45
|
+
|
46
|
+
# execute_on_node do
|
47
|
+
has_remotefile(:name => "/usr/bin/puppetrunner") do
|
48
|
+
mode 744
|
49
|
+
template File.join(File.dirname(__FILE__), "..", "templates/puppetrunner")
|
46
50
|
end
|
47
51
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
52
|
+
execute_on_node do
|
53
|
+
has_cron(:name => "node puppetd runner", :user => Base.user, :minute => "*/5") do
|
54
|
+
requires get_gempackage("poolparty")
|
55
|
+
command "/usr/bin/puppetrunner"
|
56
|
+
end
|
53
57
|
end
|
58
|
+
|
59
|
+
# end
|
60
|
+
|
61
|
+
# Cloud panel setup
|
62
|
+
|
63
|
+
# has_directory(:name => "/var/www/cloudpanel")
|
64
|
+
|
65
|
+
# has_file(:name => "/etc/yaws/conf.d/localhost.conf") do
|
66
|
+
# template File.join(File.dirname(__FILE__), "..", "templates/yaws.conf")
|
67
|
+
# end
|
68
|
+
|
69
|
+
# Custom run puppet to minimize footprint
|
70
|
+
# TODO: Update the offsetted times
|
71
|
+
execute_on_master do
|
72
|
+
has_exec(:name => "update_hosts", :command => ". /etc/profile && server-update-hosts -n #{cloud.name}")
|
73
|
+
|
74
|
+
has_cron(:name => "master puppetd runner", :user => Base.user, :minute => "*/15") do
|
75
|
+
requires get_gempackage("poolparty")
|
76
|
+
command(PoolParty::Remote::RemoteInstance.puppet_runner_command)
|
77
|
+
end
|
78
|
+
has_cron(:name => "Load handler", :user => Base.user, :minute => "*/4") do
|
79
|
+
requires get_gempackage("poolparty")
|
80
|
+
command(". /etc/profile && cloud-handle-load -n #{cloud.name}")
|
81
|
+
end
|
82
|
+
has_cron(:name => "provisioning ensurer", :user => Base.user, :minute => "*/2") do
|
83
|
+
requires get_gempackage("poolparty")
|
84
|
+
command ". /etc/profile && cloud-ensure-provisioning -n #{cloud.name}"
|
85
|
+
end
|
86
|
+
# has_runit_service("client_server", "pm_client", File.join(File.dirname(__FILE__), "..", "templates/messenger/client/"))
|
87
|
+
# has_runit_service("master_server", "pm_master", File.join(File.dirname(__FILE__), "..", "templates/messenger/master/"))
|
88
|
+
# TODO: Update this so it only runs when needed
|
89
|
+
# has_customservice(:name => "start master server", :pattern => "/pm_master/", :bin => ". /etc/profile && server-start-master")
|
90
|
+
# has_customservice(:name => "start client server", :pattern => "/client_service/", :bin => ". /etc/profile && server-start-client")
|
91
|
+
has_exec(:name => "start master messenger", :command => ". /etc/profile && server-start-master") #, :ifnot => "/bin/ps aux | /bin/grep -q pm_master"
|
92
|
+
has_exec(:name => "start client server", :command => ". /etc/profile && server-start-client") #, :ifnot => "/bin/ps aux | /bin/grep -q client_server"
|
93
|
+
|
94
|
+
has_cron({:name => "maintain script", :command => ". /etc/profile && cloud-maintain -n #{cloud.name}", :minute => "*/3", :requires => [get_gempackage("poolparty"), get_cron("puppetd runner"), get_cron("Load handler"), get_service("haproxy")]})
|
95
|
+
|
96
|
+
has_remotefile(:name => "/usr/bin/puppetcleaner") do
|
97
|
+
mode 744
|
98
|
+
template File.join(File.dirname(__FILE__), "..", "templates/puppetcleaner")
|
99
|
+
end
|
100
|
+
|
101
|
+
has_remotefile(:name => "/usr/bin/puppetrerun") do
|
102
|
+
mode 744
|
103
|
+
template File.join(File.dirname(__FILE__), "..", "templates/puppetrerun")
|
104
|
+
end
|
105
|
+
end
|
54
106
|
# has_host(:name => "puppet", :ip => (self.respond_to?(:master) ? self : parent).master.ip)
|
55
107
|
end
|
56
108
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
=begin rdoc
|
2
|
+
Runit beginning
|
3
|
+
NOT IMPLEMENTED YET
|
4
|
+
=end
|
5
|
+
module PoolParty
|
6
|
+
class Base
|
7
|
+
plugin :runit do
|
8
|
+
|
9
|
+
def enable
|
10
|
+
unless enabled
|
11
|
+
has_file(:name => "inittab", :path => "/etc/inittab", :mode => 0644, :owner => "root", :group => "root")
|
12
|
+
has_package(:name => "runit", :ensures => "latest", :requires => get_file("inittab"))
|
13
|
+
has_exec(:name => "/sbin/start runsvdir", :cwd => "/var/service")
|
14
|
+
# has_remotefile(:name => "/etc/event.d/runsvdir", :notify => get_exec("/sbin/start runsvdir"))
|
15
|
+
enabled true
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/poolparty/core/array.rb
CHANGED
@@ -22,6 +22,9 @@ class Array
|
|
22
22
|
map {|a| a.name == str ? a : nil }.reject {|a| a.nil? }
|
23
23
|
end
|
24
24
|
def to_option_string(ns=[])
|
25
|
-
"[ #{map {|e| e.to_option_string }.join(", ")} ]"
|
25
|
+
"[ #{map {|e| e.to_option_string }.reject {|a| a.nil? || a.empty? }.join(", ")} ]"
|
26
|
+
end
|
27
|
+
def respec_string(ns=[])
|
28
|
+
"'#{map {|e| e.to_option_string }.join("', '")}'"
|
26
29
|
end
|
27
30
|
end
|
@@ -2,8 +2,9 @@
|
|
2
2
|
Exception overloads
|
3
3
|
=end
|
4
4
|
class Exception
|
5
|
+
alias nice_message to_str
|
5
6
|
# Gives us a nice_message for exceptions
|
6
7
|
def nice_message(padding="")
|
7
|
-
"#{padding}#{message}\n#{padding}" + backtrace.join("\n#{padding}")
|
8
|
+
"#{padding}#{message}\n#{padding}"# + backtrace.join("\n#{padding}")
|
8
9
|
end
|
9
10
|
end
|
data/lib/poolparty/core/hash.rb
CHANGED
@@ -16,13 +16,13 @@ class Hash
|
|
16
16
|
returning Hash.new do |h|
|
17
17
|
h.merge!(self)
|
18
18
|
other_hash.each do |k,v|
|
19
|
-
h[k] = has_key?(k) ? [self[k], v].flatten : v
|
19
|
+
h[k] = has_key?(k) ? [self[k], v].flatten.uniq : v
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
23
23
|
def append!(other_hash)
|
24
24
|
other_hash.each do |k,v|
|
25
|
-
self[k] = has_key?(k) ? [self[k], v].flatten : v
|
25
|
+
self[k] = has_key?(k) ? [self[k], v].flatten.uniq : v
|
26
26
|
end
|
27
27
|
self
|
28
28
|
end
|
@@ -10,10 +10,10 @@ module Kernel
|
|
10
10
|
block.in_context(klass_or_obj).call
|
11
11
|
end
|
12
12
|
def load_p(dir)
|
13
|
-
Dir["#{dir}/*.rb"].each do |file|
|
13
|
+
Dir["#{dir}/*.rb"].sort.each do |file|
|
14
14
|
require "#{file}" if ::FileTest.file?(file)
|
15
15
|
end
|
16
|
-
Dir["#{dir}/*"].each do |dir|
|
16
|
+
Dir["#{dir}/*"].sort.each do |dir|
|
17
17
|
load_p(dir) if ::FileTest.directory?(dir)
|
18
18
|
end
|
19
19
|
end
|
@@ -33,5 +33,5 @@ module Kernel
|
|
33
33
|
STDOUT.flush
|
34
34
|
STDOUT.reopen(old_stdout)
|
35
35
|
end
|
36
|
-
end
|
36
|
+
end
|
37
37
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Object
|
2
|
+
# The hidden singleton lurks behind everyone
|
3
|
+
def metaclass; class << self; self; end; end
|
4
|
+
def meta_eval &blk; metaclass.instance_eval &blk; end
|
5
|
+
|
6
|
+
# Adds methods to a metaclass
|
7
|
+
def meta_def name, &blk
|
8
|
+
meta_eval { define_method name, &blk }
|
9
|
+
end
|
10
|
+
|
11
|
+
# Defines an instance method within a class
|
12
|
+
def class_def name, &blk
|
13
|
+
class_eval { define_method name, &blk }
|
14
|
+
end
|
15
|
+
end
|
@@ -26,6 +26,14 @@ class Object
|
|
26
26
|
block.in_context(self).call
|
27
27
|
self
|
28
28
|
end
|
29
|
+
def send_if_method(v, *args)
|
30
|
+
if (v.nil? || v.to_s.empty? || v.is_a?(Array) || v.is_a?(Integer))
|
31
|
+
v
|
32
|
+
else
|
33
|
+
vs = v.to_s.to_sym
|
34
|
+
respond_to?(vs) ? self.send(vs, *args) : v rescue v
|
35
|
+
end
|
36
|
+
end
|
29
37
|
def to_option_string
|
30
38
|
case self.class
|
31
39
|
when String
|
@@ -36,8 +44,18 @@ class Object
|
|
36
44
|
"#{self}"
|
37
45
|
end
|
38
46
|
end
|
47
|
+
def respec_string
|
48
|
+
case self.class
|
49
|
+
when String
|
50
|
+
self.to_option_string
|
51
|
+
when Array
|
52
|
+
self.map {|a| "#{a.respec_string}" }.join(" ")
|
53
|
+
else
|
54
|
+
"'#{self}'"
|
55
|
+
end
|
56
|
+
end
|
39
57
|
def block_instance_eval(*args, &block)
|
40
|
-
return instance_eval(*args,&block) unless
|
58
|
+
return instance_eval(*args,&block) unless block && !block.arity.zero?
|
41
59
|
old_method = (self.class.instance_method(:__) rescue nil)
|
42
60
|
self.class.send(:define_method, :__, &block)
|
43
61
|
block_method = self.class.instance_method(:__)
|
@@ -49,6 +67,28 @@ class Object
|
|
49
67
|
block_method.bind(self).call(*args)
|
50
68
|
end
|
51
69
|
def meta_def name, &blk
|
52
|
-
|
70
|
+
meta_eval { define_method name, &blk }
|
71
|
+
end
|
72
|
+
def meta_undef name
|
73
|
+
meta_eval { remove_method name }
|
74
|
+
end
|
75
|
+
def run_in_context(context=self, &block)
|
76
|
+
name="temp_#{self.class}_#{respond_to?(:parent) ? parent.to_s : Time.now.to_i}".to_sym
|
77
|
+
meta_def name, &block
|
78
|
+
self.send name, context
|
79
|
+
# self.instance_eval &block if block
|
80
|
+
meta_undef name rescue ""
|
81
|
+
end
|
82
|
+
def vputs(m="", o=self)
|
83
|
+
puts m if o.verbose
|
84
|
+
end
|
85
|
+
def dputs(m="", o=self)
|
86
|
+
vputs(">#{::File.basename(__FILE__)} (#{__LINE__}) #{m}", o)
|
87
|
+
end
|
88
|
+
def vprint(m="", o=self)
|
89
|
+
print m if o.verbose
|
90
|
+
end
|
91
|
+
def unix_hide_string
|
92
|
+
"2>&1 > /dev/null"
|
53
93
|
end
|
54
94
|
end
|
@@ -22,10 +22,25 @@ class String
|
|
22
22
|
self.strip.split(/\n/).join(" && ")
|
23
23
|
end
|
24
24
|
def top_level_class
|
25
|
-
self.split("::")[-1].downcase rescue self
|
25
|
+
self.split("::")[-1].underscore.downcase rescue self
|
26
26
|
end
|
27
27
|
def sanitize
|
28
|
-
self.gsub(/[
|
28
|
+
self.gsub(/[ \.\/\-]*/, '')
|
29
|
+
end
|
30
|
+
def keyerize
|
31
|
+
signed_short = 0x7FFFFFFF
|
32
|
+
len = self.sanitize.length
|
33
|
+
hash = 0
|
34
|
+
len.times{ |i|
|
35
|
+
hash = self[i] + ( hash << 6 ) + ( hash << 16 ) - hash
|
36
|
+
}
|
37
|
+
hash & signed_short
|
38
|
+
end
|
39
|
+
def dir_safe
|
40
|
+
self.downcase.gsub(/[ ]/, '_')
|
41
|
+
end
|
42
|
+
def safe_quote
|
43
|
+
self.gsub(/[']/, '\\\\\'')
|
29
44
|
end
|
30
45
|
def nice_runnable(quite=true)
|
31
46
|
self.split(/ && /).join("\n")
|
@@ -45,7 +60,7 @@ class String
|
|
45
60
|
# Refactor this guy to get the class if the class is defined, and not always create a new one
|
46
61
|
# although, it doesn't really matter as ruby will just reopen the class
|
47
62
|
def class_constant(superclass=nil, opts={}, &block)
|
48
|
-
symc = ((opts && opts[:preserve]) ? ("#{self.
|
63
|
+
symc = ((opts && opts[:preserve]) ? ("#{self.camelcase}Classs") : "PoolParty#{self.camelcase}Classs").classify
|
49
64
|
|
50
65
|
kla=<<-EOE
|
51
66
|
class #{symc} #{"< #{superclass}" if superclass}
|
@@ -59,14 +74,14 @@ class String
|
|
59
74
|
klass
|
60
75
|
end
|
61
76
|
|
62
|
-
def module_constant(&block)
|
63
|
-
symc = "#{self}_Module".
|
77
|
+
def module_constant(append="", &block)
|
78
|
+
symc = "#{self}_Module#{append}".camelcase
|
64
79
|
mod = Object.const_defined?(symc) ? Object.const_get(symc.to_sym) : Module.new(&block)
|
65
80
|
Object.const_set(symc, mod) unless Object.const_defined?(symc)
|
66
81
|
symc.to_s.constantize
|
67
82
|
end
|
68
83
|
def preserved_module_constant(ext="", from="PoolParty::", &block)
|
69
|
-
symc = "#{self}#{ext}".
|
84
|
+
symc = "#{self}#{ext}".camelcase
|
70
85
|
mod = Kernel.const_defined?(symc) ? Kernel.const_get(symc.to_sym) : Module.new(&block)
|
71
86
|
Kernel.const_set(symc, mod) unless Kernel.const_defined?(symc)
|
72
87
|
symc.to_s.constantize
|
@@ -1,8 +1,17 @@
|
|
1
1
|
class Symbol
|
2
|
+
# def >(num);"#{self} > #{num}";end
|
3
|
+
# def <(num);"#{self} < #{num}";end
|
4
|
+
# def >=(num);"#{self} >= #{num}";end
|
5
|
+
# def <=(num);"#{self} <= #{num}";end
|
6
|
+
# def ==(num);"#{self} > #{num}";end
|
7
|
+
|
2
8
|
def to_string(pre="")
|
3
9
|
"#{pre}#{self.to_s}"
|
4
10
|
end
|
5
11
|
def sanitize
|
6
12
|
self.to_s.sanitize
|
7
13
|
end
|
14
|
+
def <=>(b)
|
15
|
+
"#{self}" <=> "#{b}"
|
16
|
+
end
|
8
17
|
end
|
@@ -21,18 +21,15 @@ module PoolParty
|
|
21
21
|
returning Array.new do |output|
|
22
22
|
unless cancelled?
|
23
23
|
output << @prestring || ""
|
24
|
-
|
24
|
+
|
25
25
|
if resources && !resources.empty?
|
26
|
-
|
27
|
-
output << @cp.to_string
|
28
|
-
output << "include #{@cp.name.sanitize}"
|
26
|
+
output << resources_string_from_resources(resources, pre)
|
29
27
|
end
|
30
28
|
|
31
29
|
unless virtual_resource?
|
32
|
-
output << "#{pre}#{class_type_name.downcase} {"
|
33
|
-
output << "#{pre}\"#{self.key}\":"
|
30
|
+
output << "#{pre}#{class_type_name.downcase} { #{pre}\"#{self.key}\":"
|
34
31
|
output << opts.flush_out("#{pre*2}").join(",\n")
|
35
|
-
output << "#{pre}}"
|
32
|
+
output << "#{pre}}"
|
36
33
|
end
|
37
34
|
|
38
35
|
output << @poststring || ""
|
@@ -40,6 +37,22 @@ module PoolParty
|
|
40
37
|
end.join("\n")
|
41
38
|
end
|
42
39
|
|
40
|
+
def resources_string_from_resources(res, pre="\t")
|
41
|
+
@variables = res.extract! {|name,resource| name == :variable}
|
42
|
+
returning Array.new do |str|
|
43
|
+
unless @variables.empty?
|
44
|
+
str << "\n# Variables"
|
45
|
+
@variables.each do |name, variable|
|
46
|
+
str << variable.to_string("#{pre}")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
res.reject do |type, resource|
|
51
|
+
str << resource.to_string("#{pre*2}")
|
52
|
+
end
|
53
|
+
end.join("\n")
|
54
|
+
end
|
55
|
+
|
43
56
|
def to_s
|
44
57
|
"#{class_type_name.capitalize}['#{key}']"
|
45
58
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class MasterException < Exception
|
2
|
+
EXCEPTION_MESSAGES = {
|
3
|
+
:no_ip => "Master does not have an ip or has not been launched"
|
4
|
+
}
|
5
|
+
attr_reader :message
|
6
|
+
|
7
|
+
def initialize(type=:no_ip, note="")
|
8
|
+
@message = "Master Exception: #{EXCEPTION_MESSAGES[type]} #{note}"
|
9
|
+
end
|
10
|
+
end
|
@@ -1,5 +1,22 @@
|
|
1
1
|
require "ftools"
|
2
2
|
module PoolParty
|
3
|
+
|
4
|
+
# Load a file that contains a pool into memory
|
5
|
+
def load_pool(filename)
|
6
|
+
|
7
|
+
unless filename && ::File.readable?(filename)
|
8
|
+
puts "Please specify your cloud with -s, move it to ./pool.spec or in your POOL_SPEC environment variable"
|
9
|
+
exit(1)
|
10
|
+
else
|
11
|
+
$pool_specfile = filename
|
12
|
+
PoolParty::Script.inflate(open(filename).read, filename)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def pool_specfile
|
17
|
+
$pool_specfile
|
18
|
+
end
|
19
|
+
|
3
20
|
module Binary
|
4
21
|
|
5
22
|
class << self
|
@@ -13,17 +30,33 @@ module PoolParty
|
|
13
30
|
def binary_directory
|
14
31
|
"#{::File.dirname(__FILE__)}/../../../bin"
|
15
32
|
end
|
33
|
+
# These are the locations the spec file can be before the cloud
|
34
|
+
# aborts because it cannot load the cloud
|
16
35
|
def get_existing_spec_location
|
17
36
|
[
|
18
|
-
"#{Base.base_config_directory}/#{Base.default_specfile_name}",
|
19
37
|
"#{Base.remote_storage_path}/#{Base.default_specfile_name}",
|
20
|
-
ENV["POOL_SPEC"],
|
21
38
|
"#{Base.default_specfile_name}",
|
22
|
-
"
|
39
|
+
ENV["POOL_SPEC"],
|
40
|
+
"#{Base.storage_directory}/#{Base.default_specfile_name}",
|
41
|
+
"#{Base.default_project_specfile_name}"
|
23
42
|
].reject {|a| a.nil?}.reject do |f|
|
24
|
-
f unless ::File.
|
43
|
+
f unless ::File.readable?(f)
|
25
44
|
end.first
|
26
45
|
end
|
46
|
+
# Daemonize the process
|
47
|
+
def daemonize(&block)
|
48
|
+
vputs "Daemonizing..."
|
49
|
+
trap("CHLD") {Process.wait(-1, Process::WNOHANG)}
|
50
|
+
fork do
|
51
|
+
Signal.trap('HUP', 'IGNORE') # Don't die upon logout
|
52
|
+
File.open("/dev/null", "r+") do |devnull|
|
53
|
+
$stdout.reopen(devnull)
|
54
|
+
$stderr.reopen(devnull)
|
55
|
+
$stdin.reopen(devnull) unless @use_stdin
|
56
|
+
end
|
57
|
+
block.call if block
|
58
|
+
end
|
59
|
+
end
|
27
60
|
|
28
61
|
end
|
29
62
|
|