fairchild-poolparty 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +35 -0
- data/License.txt +20 -0
- data/PostInstall.txt +19 -0
- data/README.txt +77 -0
- data/Rakefile +45 -0
- data/VERSION.yml +4 -0
- data/bin/cloud +32 -0
- data/bin/cloud-bootstrap +21 -0
- data/bin/cloud-configure +28 -0
- data/bin/cloud-console +12 -0
- data/bin/cloud-contract +17 -0
- data/bin/cloud-expand +19 -0
- data/bin/cloud-handle-load +27 -0
- data/bin/cloud-list +23 -0
- data/bin/cloud-osxcopy +17 -0
- data/bin/cloud-provision +30 -0
- data/bin/cloud-rsync +28 -0
- data/bin/cloud-run +18 -0
- data/bin/cloud-setup-dev +25 -0
- data/bin/cloud-show +27 -0
- data/bin/cloud-spec +41 -0
- data/bin/cloud-ssh +23 -0
- data/bin/cloud-start +28 -0
- data/bin/cloud-stats +17 -0
- data/bin/cloud-terminate +20 -0
- data/bin/ec2-list-active +24 -0
- data/bin/messenger-get-current-nodes +14 -0
- data/bin/pool +31 -0
- data/bin/pool-describe +8 -0
- data/bin/pool-generate +18 -0
- data/bin/pool-init +28 -0
- data/bin/pool-list +30 -0
- data/bin/pool-start +26 -0
- data/bin/server-become-master +24 -0
- data/bin/server-build-messenger +28 -0
- data/bin/server-butterfly +25 -0
- data/bin/server-clean-cert-for +15 -0
- data/bin/server-cloud-elections +26 -0
- data/bin/server-ensure-provisioning +38 -0
- data/bin/server-fire-cmd +14 -0
- data/bin/server-get-load +15 -0
- data/bin/server-list-active +26 -0
- data/bin/server-list-instances +15 -0
- data/bin/server-manage-election +67 -0
- data/bin/server-monitor.ru +25 -0
- data/bin/server-provision +32 -0
- data/bin/server-query-agent +15 -0
- data/bin/server-rerun +23 -0
- data/bin/server-send-command +18 -0
- data/bin/server-show-stats +17 -0
- data/bin/server-start-agent +15 -0
- data/bin/server-start-client +29 -0
- data/bin/server-start-master +26 -0
- data/bin/server-start-node +32 -0
- 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 +49 -0
- data/bin/server-write-new-nodes +26 -0
- data/config/jeweler.rb +43 -0
- data/config/requirements.rb +7 -0
- data/examples/basic.rb +23 -0
- data/examples/deploy.rb +5 -0
- data/examples/fairchild.rb +32 -0
- data/examples/fairchild_chef.rb +19 -0
- data/examples/paparazzi.conf.erb +21 -0
- data/examples/plugin_without_plugin_directory.rb +12 -0
- data/examples/poolparty.rb +12 -0
- data/generators/poolspec/USAGE +5 -0
- data/generators/poolspec/poolspec_generator.rb +58 -0
- data/generators/poolspec/templates/pool_spec_template.erb +9 -0
- data/lib/erlang/messenger/Emakefile +1 -0
- data/lib/erlang/messenger/Makefile +15 -0
- data/lib/erlang/messenger/README +5 -0
- data/lib/erlang/messenger/Rakefile +72 -0
- data/lib/erlang/messenger/control +11 -0
- data/lib/erlang/messenger/ebin/client.app +19 -0
- data/lib/erlang/messenger/ebin/master.app +19 -0
- data/lib/erlang/messenger/ebin/node.app +19 -0
- data/lib/erlang/messenger/ebin/packager.app +19 -0
- 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 -0
- data/lib/erlang/messenger/ebin/pm_node_rel-0.1.rel +1 -0
- data/lib/erlang/messenger/include/defines.hrl +27 -0
- data/lib/erlang/messenger/lib/eunit/AUTHORS +2 -0
- data/lib/erlang/messenger/lib/eunit/CHANGELOG +14 -0
- data/lib/erlang/messenger/lib/eunit/COPYING +504 -0
- data/lib/erlang/messenger/lib/eunit/Makefile +28 -0
- data/lib/erlang/messenger/lib/eunit/NOTES +276 -0
- data/lib/erlang/messenger/lib/eunit/README +3 -0
- data/lib/erlang/messenger/lib/eunit/doc/edoc-info +3 -0
- data/lib/erlang/messenger/lib/eunit/doc/erlang.png +0 -0
- data/lib/erlang/messenger/lib/eunit/doc/eunit.html +172 -0
- data/lib/erlang/messenger/lib/eunit/doc/index.html +17 -0
- data/lib/erlang/messenger/lib/eunit/doc/modules-frame.html +12 -0
- data/lib/erlang/messenger/lib/eunit/doc/overview-summary.html +984 -0
- data/lib/erlang/messenger/lib/eunit/doc/overview.edoc +980 -0
- data/lib/erlang/messenger/lib/eunit/doc/packages-frame.html +11 -0
- data/lib/erlang/messenger/lib/eunit/doc/stylesheet.css +55 -0
- data/lib/erlang/messenger/lib/eunit/ebin/autoload.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/code_monitor.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit.app +21 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit.appup +1 -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/examples/eunit_examples.erl +339 -0
- data/lib/erlang/messenger/lib/eunit/examples/fib.erl +19 -0
- data/lib/erlang/messenger/lib/eunit/examples/tests.txt +1 -0
- data/lib/erlang/messenger/lib/eunit/include/eunit.hrl +313 -0
- data/lib/erlang/messenger/lib/eunit/src/Makefile +46 -0
- data/lib/erlang/messenger/lib/eunit/src/autoload.erl +388 -0
- data/lib/erlang/messenger/lib/eunit/src/code_monitor.erl +243 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit.app.src +21 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit.appup.src +1 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit.erl +196 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit_autoexport.erl +102 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit_data.erl +798 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit_internal.hrl +48 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit_lib.erl +682 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit_proc.erl +552 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit_serial.erl +157 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit_server.erl +340 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit_striptests.erl +64 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit_test.erl +334 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit_tests.erl +45 -0
- data/lib/erlang/messenger/lib/eunit/src/eunit_tty.erl +272 -0
- data/lib/erlang/messenger/lib/eunit/src/file_monitor.erl +409 -0
- data/lib/erlang/messenger/lib/eunit/sys.config +9 -0
- data/lib/erlang/messenger/lib/eunit/vsn.mk +1 -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 +239 -0
- data/lib/erlang/messenger/pm_node_rel-0.1.boot +0 -0
- data/lib/erlang/messenger/pm_node_rel-0.1.script +237 -0
- 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/master_app.erl +39 -0
- data/lib/erlang/messenger/src/node_app.erl +39 -0
- data/lib/erlang/messenger/src/pm_client.erl +49 -0
- data/lib/erlang/messenger/src/pm_client_supervisor.erl +38 -0
- data/lib/erlang/messenger/src/pm_cluster.erl +61 -0
- data/lib/erlang/messenger/src/pm_event_manager.erl +27 -0
- data/lib/erlang/messenger/src/pm_master.erl +215 -0
- data/lib/erlang/messenger/src/pm_master_event_handler.erl +72 -0
- data/lib/erlang/messenger/src/pm_master_supervisor.erl +39 -0
- data/lib/erlang/messenger/src/pm_node.erl +200 -0
- data/lib/erlang/messenger/src/pm_node_supervisor.erl +38 -0
- data/lib/erlang/messenger/src/pm_packager.erl +76 -0
- data/lib/erlang/messenger/src/pm_spawner.erl +213 -0
- data/lib/erlang/messenger/src/pm_strings.erl +11 -0
- data/lib/erlang/messenger/src/utils.erl +72 -0
- data/lib/erlang/messenger/useful_snippets +17 -0
- data/lib/poolparty/aska/aska.rb +152 -0
- data/lib/poolparty/base_packages/bind.rb +11 -0
- data/lib/poolparty/base_packages/haproxy.rb +46 -0
- data/lib/poolparty/base_packages/heartbeat.rb +58 -0
- data/lib/poolparty/base_packages/poolparty.rb +14 -0
- data/lib/poolparty/base_packages/ruby.rb +42 -0
- data/lib/poolparty/base_packages/runit.rb +21 -0
- data/lib/poolparty/capistrano/cloud_tasks.rb +10 -0
- data/lib/poolparty/capistrano.rb +54 -0
- data/lib/poolparty/config/postlaunchmessage.txt +5 -0
- data/lib/poolparty/core/array.rb +36 -0
- data/lib/poolparty/core/class.rb +26 -0
- data/lib/poolparty/core/exception.rb +10 -0
- data/lib/poolparty/core/float.rb +13 -0
- data/lib/poolparty/core/hash.rb +71 -0
- data/lib/poolparty/core/kernel.rb +66 -0
- data/lib/poolparty/core/metaid.rb +15 -0
- data/lib/poolparty/core/module.rb +40 -0
- data/lib/poolparty/core/my_open_struct.rb +18 -0
- data/lib/poolparty/core/object.rb +93 -0
- data/lib/poolparty/core/ordered_hash.rb +99 -0
- data/lib/poolparty/core/proc.rb +7 -0
- data/lib/poolparty/core/string.rb +140 -0
- data/lib/poolparty/core/symbol.rb +17 -0
- data/lib/poolparty/core/time.rb +56 -0
- data/lib/poolparty/dependencies.rb +49 -0
- data/lib/poolparty/dependency_resolver/chef_resolver.rb +221 -0
- data/lib/poolparty/dependency_resolver/dependency_resolver.rb +42 -0
- data/lib/poolparty/dependency_resolver/dependency_resolver_cloud_extensions.rb +28 -0
- data/lib/poolparty/dependency_resolver/puppet.rb +75 -0
- data/lib/poolparty/dependency_resolver/puppet_resolver.rb +173 -0
- 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/exceptions/ProvisionerException.rb +5 -0
- data/lib/poolparty/exceptions/RemoteException.rb +12 -0
- data/lib/poolparty/exceptions/ResourceException.rb +7 -0
- data/lib/poolparty/exceptions/RuntimeException.rb +7 -0
- data/lib/poolparty/exceptions/SpecException.rb +7 -0
- data/lib/poolparty/exceptions/TemplateNotFound.rb +7 -0
- data/lib/poolparty/exceptions/UnacceptableCommand.rb +5 -0
- data/lib/poolparty/exceptions/dependency_resolver_exception.rb +5 -0
- data/lib/poolparty/exceptions/package_exception.rb +7 -0
- data/lib/poolparty/extra/deployments.rb +31 -0
- data/lib/poolparty/helpers/binary.rb +67 -0
- data/lib/poolparty/helpers/console.rb +48 -0
- data/lib/poolparty/helpers/display.rb +30 -0
- data/lib/poolparty/helpers/hash_printer.rb +44 -0
- data/lib/poolparty/helpers/loading.rb +4 -0
- data/lib/poolparty/helpers/nice_printer.rb +36 -0
- data/lib/poolparty/helpers/optioner.rb +149 -0
- data/lib/poolparty/helpers/ruberl.rb +33 -0
- data/lib/poolparty/lite.rb +20 -0
- data/lib/poolparty/modules/cloud_dsl.rb +20 -0
- data/lib/poolparty/modules/cloud_resourcer.rb +122 -0
- data/lib/poolparty/modules/daemonizable.rb +141 -0
- data/lib/poolparty/modules/definable_resource.rb +57 -0
- data/lib/poolparty/modules/file_writer.rb +95 -0
- data/lib/poolparty/modules/output.rb +13 -0
- data/lib/poolparty/modules/pretty_printer.rb +40 -0
- data/lib/poolparty/modules/resourcing_dsl.rb +74 -0
- data/lib/poolparty/modules/s3_string.rb +32 -0
- data/lib/poolparty/modules/safe_instance.rb +31 -0
- data/lib/poolparty/modules/thread_pool.rb +106 -0
- data/lib/poolparty/monitors/base_monitor.rb +81 -0
- data/lib/poolparty/monitors/monitor_rack.rb +132 -0
- data/lib/poolparty/monitors/monitors/load_monitor.rb +15 -0
- data/lib/poolparty/monitors/monitors/memory_monitor.rb +50 -0
- data/lib/poolparty/monitors/monitors/server_monitor.rb +7 -0
- data/lib/poolparty/monitors/monitors/web_monitor.rb +18 -0
- data/lib/poolparty/monitors/neighborhood_monitor.rb +25 -0
- data/lib/poolparty/monitors/stats_monitor.rb +182 -0
- data/lib/poolparty/monitors.rb +6 -0
- data/lib/poolparty/net/init.rb +11 -0
- data/lib/poolparty/net/messenger.rb +55 -0
- data/lib/poolparty/net/remote_bases.rb +21 -0
- data/lib/poolparty/net/remote_instance.rb +109 -0
- data/lib/poolparty/net/remoter/cloud_control.rb +251 -0
- data/lib/poolparty/net/remoter/connections.rb +180 -0
- data/lib/poolparty/net/remoter/interactive.rb +121 -0
- data/lib/poolparty/net/remoter/lists.rb +12 -0
- data/lib/poolparty/net/remoter_base.rb +97 -0
- data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +235 -0
- data/lib/poolparty/net/remoter_bases/ec2/ec2_remote_instance.rb +53 -0
- data/lib/poolparty/net/remoter_bases/ec2/ec2_response_object.rb +64 -0
- data/lib/poolparty/plugins/chef.rb +168 -0
- data/lib/poolparty/plugins/deploydirectory.rb +47 -0
- data/lib/poolparty/plugins/git.rb +66 -0
- data/lib/poolparty/plugins/line_in_file.rb +13 -0
- data/lib/poolparty/plugins/rsyncmirror.rb +28 -0
- data/lib/poolparty/plugins/runit.rb +96 -0
- data/lib/poolparty/plugins/svn.rb +48 -0
- data/lib/poolparty/poolparty/cloud.rb +216 -0
- data/lib/poolparty/poolparty/custom_resource.rb +45 -0
- data/lib/poolparty/poolparty/default.rb +167 -0
- data/lib/poolparty/poolparty/key.rb +75 -0
- data/lib/poolparty/poolparty/loggable.rb +28 -0
- data/lib/poolparty/poolparty/neighborhoods.rb +69 -0
- data/lib/poolparty/poolparty/plugin.rb +69 -0
- data/lib/poolparty/poolparty/plugin_model.rb +45 -0
- data/lib/poolparty/poolparty/pool.rb +76 -0
- data/lib/poolparty/poolparty/poolparty_base_class.rb +181 -0
- data/lib/poolparty/poolparty/resource.rb +205 -0
- data/lib/poolparty/poolparty/script.rb +58 -0
- data/lib/poolparty/poolparty/service.rb +34 -0
- data/lib/poolparty/poolparty/template.rb +27 -0
- data/lib/poolparty/provision/boot_strapper.rb +141 -0
- data/lib/poolparty/provision/configurations/chef.rb +22 -0
- data/lib/poolparty/provision/configurations/puppet.rb +28 -0
- data/lib/poolparty/provision/dr_configure.rb +85 -0
- data/lib/poolparty/resources/cron.rb +14 -0
- data/lib/poolparty/resources/custom_service.rb +30 -0
- data/lib/poolparty/resources/directory.rb +13 -0
- data/lib/poolparty/resources/exec.rb +25 -0
- data/lib/poolparty/resources/file.rb +29 -0
- data/lib/poolparty/resources/host.rb +16 -0
- data/lib/poolparty/resources/mount.rb +21 -0
- data/lib/poolparty/resources/package.rb +12 -0
- data/lib/poolparty/resources/remote_file.rb +20 -0
- data/lib/poolparty/resources/service.rb +20 -0
- data/lib/poolparty/resources/sshkey.rb +27 -0
- data/lib/poolparty/resources/symlink.rb +21 -0
- data/lib/poolparty/resources/user.rb +13 -0
- data/lib/poolparty/resources/variable.rb +9 -0
- data/lib/poolparty/schema.rb +64 -0
- data/lib/poolparty/services/conditional.rb +46 -0
- data/lib/poolparty/services/gem_package.rb +52 -0
- data/lib/poolparty/spec/core/string.rb +18 -0
- data/lib/poolparty/spec/matchers/a_spec_extensions_base.rb +26 -0
- data/lib/poolparty/spec/matchers/have_cron.rb +28 -0
- data/lib/poolparty/spec/matchers/have_deploydirectory.rb +15 -0
- data/lib/poolparty/spec/matchers/have_directory.rb +31 -0
- data/lib/poolparty/spec/matchers/have_exec.rb +28 -0
- data/lib/poolparty/spec/matchers/have_file.rb +28 -0
- data/lib/poolparty/spec/matchers/have_gempackage.rb +28 -0
- data/lib/poolparty/spec/matchers/have_git.rb +28 -0
- data/lib/poolparty/spec/matchers/have_host.rb +28 -0
- data/lib/poolparty/spec/matchers/have_mount.rb +28 -0
- data/lib/poolparty/spec/matchers/have_package.rb +28 -0
- data/lib/poolparty/spec/matchers/have_remotefile.rb +28 -0
- data/lib/poolparty/spec/matchers/have_rsyncmirror.rb +28 -0
- data/lib/poolparty/spec/matchers/have_service.rb +28 -0
- data/lib/poolparty/spec/matchers/have_sshkey.rb +28 -0
- data/lib/poolparty/spec/matchers/have_symlink.rb +28 -0
- data/lib/poolparty/spec/matchers/have_variable.rb +32 -0
- data/lib/poolparty/spec/spec/dynamic_matchers.rb +63 -0
- data/lib/poolparty/spec/spec/ensure_matchers_exist.rb +7 -0
- data/lib/poolparty/spec/templates/have_base.rb +28 -0
- data/lib/poolparty/spec.rb +31 -0
- data/lib/poolparty/templates/authkeys +2 -0
- data/lib/poolparty/templates/cib.xml +54 -0
- data/lib/poolparty/templates/erlang_cookie_maker +6 -0
- data/lib/poolparty/templates/gem +27 -0
- data/lib/poolparty/templates/gemrc +11 -0
- data/lib/poolparty/templates/ha.cf +17 -0
- data/lib/poolparty/templates/haproxy.conf +36 -0
- data/lib/poolparty/templates/haresources +3 -0
- data/lib/poolparty/templates/logd.cf +42 -0
- 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/monitor.ru +16 -0
- data/lib/poolparty/templates/namespaceauth.conf +19 -0
- data/lib/poolparty/templates/poolparty.monitor +14 -0
- data/lib/poolparty/templates/puppet/add_puppet_to_hosts +6 -0
- data/lib/poolparty/templates/puppet/puppet.conf +2 -0
- data/lib/poolparty/templates/puppet/puppetrunner +14 -0
- data/lib/poolparty/templates/puppet/site.pp +4 -0
- data/lib/poolparty/templates/puppetrunner +14 -0
- data/lib/poolparty/templates/yaws.conf +19 -0
- data/lib/poolparty/version.rb +15 -0
- data/lib/poolparty.rb +148 -0
- data/lib/poolpartycl.rb +7 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/spec/bin/bin_spec_helper.rb +7 -0
- data/spec/bin/fixtures/bin_cloud_for_test.rb +19 -0
- data/spec/bin/server-list-active_spec.rb +22 -0
- data/spec/poolparty/aska/aska_spec.rb +117 -0
- data/spec/poolparty/base_packages/haproxy_spec.rb +7 -0
- data/spec/poolparty/base_packages/heartbeat_spec.rb +7 -0
- data/spec/poolparty/bin/console_spec.rb +83 -0
- data/spec/poolparty/core/array_spec.rb +46 -0
- data/spec/poolparty/core/float.rb +13 -0
- data/spec/poolparty/core/hash_spec.rb +83 -0
- data/spec/poolparty/core/kernel_spec.rb +24 -0
- data/spec/poolparty/core/module_spec.rb +15 -0
- data/spec/poolparty/core/object_spec.rb +68 -0
- data/spec/poolparty/core/ordered_hash_spec.rb +48 -0
- data/spec/poolparty/core/string_spec.rb +145 -0
- data/spec/poolparty/core/time_spec.rb +49 -0
- data/spec/poolparty/dependencies_spec.rb +11 -0
- data/spec/poolparty/dependency_resolver/chef_resolver_spec.rb +119 -0
- data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +128 -0
- data/spec/poolparty/dependency_resolver/dependency_resolver_spec.rb +16 -0
- data/spec/poolparty/dependency_resolver/puppet_resolver_spec.rb +124 -0
- data/spec/poolparty/extra/deployments_spec.rb +68 -0
- data/spec/poolparty/fixtures/clouds.json +128 -0
- data/spec/poolparty/fixtures/test_template.erb +1 -0
- data/spec/poolparty/helpers/binary_spec.rb +26 -0
- data/spec/poolparty/helpers/display_spec.rb +13 -0
- data/spec/poolparty/helpers/hash_printer_spec.rb +34 -0
- data/spec/poolparty/helpers/optioner_spec.rb +50 -0
- data/spec/poolparty/id_rsa +27 -0
- data/spec/poolparty/modules/cloud_resourcer_spec.rb +67 -0
- data/spec/poolparty/modules/definable_resource.rb +9 -0
- data/spec/poolparty/modules/file_writer_spec.rb +64 -0
- data/spec/poolparty/modules/s3_string_spec.rb +15 -0
- data/spec/poolparty/monitors/base_monitor_spec.rb +112 -0
- data/spec/poolparty/monitors/monitors/cpu_monitor_spec.rb +18 -0
- data/spec/poolparty/monitors/monitors/memory_monitor_spec.rb +48 -0
- data/spec/poolparty/net/messenger_spec.rb +16 -0
- data/spec/poolparty/net/remote_instance_spec.rb +17 -0
- data/spec/poolparty/net/remote_spec.rb +286 -0
- data/spec/poolparty/net/remoter_base_spec.rb +35 -0
- data/spec/poolparty/net/remoter_bases/ec2_mocks_and_stubs.rb +24 -0
- data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +125 -0
- data/spec/poolparty/net/remoter_bases/ec2_spec.rb +119 -0
- data/spec/poolparty/net/remoter_spec.rb +130 -0
- data/spec/poolparty/plugins/chef_spec.rb +7 -0
- data/spec/poolparty/plugins/deploydirectory_spec.rb +51 -0
- data/spec/poolparty/plugins/git_spec.rb +40 -0
- data/spec/poolparty/plugins/line_spec.rb +22 -0
- data/spec/poolparty/plugins/svn_spec.rb +16 -0
- data/spec/poolparty/poolparty/cloud_spec.rb +345 -0
- data/spec/poolparty/poolparty/configurers/files/ruby_basic.rb +16 -0
- data/spec/poolparty/poolparty/configurers/files/ruby_plugins.rb +16 -0
- data/spec/poolparty/poolparty/configurers/ruby_spec.rb +42 -0
- data/spec/poolparty/poolparty/custom_resource_spec.rb +79 -0
- data/spec/poolparty/poolparty/default_spec.rb +139 -0
- data/spec/poolparty/poolparty/example_spec.rb +60 -0
- data/spec/poolparty/poolparty/key_spec.rb +42 -0
- data/spec/poolparty/poolparty/neighborhoods_spec.rb +66 -0
- data/spec/poolparty/poolparty/plugin_model_spec.rb +54 -0
- data/spec/poolparty/poolparty/plugin_spec.rb +41 -0
- data/spec/poolparty/poolparty/pool_spec.rb +100 -0
- data/spec/poolparty/poolparty/resource_spec.rb +209 -0
- data/spec/poolparty/poolparty/script_spec.rb +49 -0
- data/spec/poolparty/poolparty/service_spec.rb +5 -0
- data/spec/poolparty/poolparty/template_spec.rb +26 -0
- data/spec/poolparty/poolparty/test_plugins/sshkey_test +2 -0
- data/spec/poolparty/poolparty/test_plugins/virtual_host_template.erb +0 -0
- data/spec/poolparty/poolparty/test_plugins/webserver.rb +30 -0
- data/spec/poolparty/poolparty_base_class_spec.rb +80 -0
- data/spec/poolparty/poolparty_spec.rb +36 -0
- data/spec/poolparty/resources/cron_spec.rb +44 -0
- data/spec/poolparty/resources/directory_spec.rb +40 -0
- data/spec/poolparty/resources/exec_spec.rb +37 -0
- data/spec/poolparty/resources/file_spec.rb +63 -0
- data/spec/poolparty/resources/gem_spec.rb +7 -0
- data/spec/poolparty/resources/host_spec.rb +35 -0
- data/spec/poolparty/resources/package_spec.rb +29 -0
- data/spec/poolparty/resources/service_spec.rb +29 -0
- data/spec/poolparty/resources/sshkey_spec.rb +40 -0
- data/spec/poolparty/resources/symlink_spec.rb +29 -0
- data/spec/poolparty/resources/user_spec.rb +48 -0
- data/spec/poolparty/resources/variable_spec.rb +26 -0
- data/spec/poolparty/schema_spec.rb +53 -0
- data/spec/poolparty/services/conditional_spec.rb +52 -0
- data/spec/poolparty/spec/core/string_spec.rb +57 -0
- data/spec/poolparty/spec_helper.rb +263 -0
- data/spec/poolparty/test_spec_helper.rb +13 -0
- data/tasks/cloud.rake +3 -0
- data/tasks/development.rake +82 -0
- data/tasks/ec2.rake +13 -0
- data/tasks/environment.rake +7 -0
- data/tasks/instance.rake +2 -0
- data/tasks/poolparty.rake +54 -0
- data/tasks/server.rake +44 -0
- data/tasks/spec.rake +16 -0
- data/test/fixtures/test_template.erb +1 -0
- data/test/poolparty/core/hash_test.rb +23 -0
- data/test/poolparty/poolparty/template_test.rb +31 -0
- data/test/poolparty/provision/boot_strapper_test.rb +6 -0
- data/test/poolparty/provision/dr_configure_test.rb +6 -0
- data/test/test_generator_helper.rb +29 -0
- data/test/test_helper.rb +5 -0
- data/test/test_pool_spec_generator.rb +47 -0
- data/test/test_poolparty.rb +11 -0
- data/vendor/gems/butterfly/History.txt +4 -0
- data/vendor/gems/butterfly/PostInstall.txt +2 -0
- data/vendor/gems/butterfly/README.rdoc +48 -0
- data/vendor/gems/butterfly/Rakefile +62 -0
- data/vendor/gems/butterfly/VERSION.yml +4 -0
- data/vendor/gems/butterfly/bin/flutter +4 -0
- data/vendor/gems/butterfly/butterfly.gemspec +37 -0
- data/vendor/gems/butterfly/examples/config.ru +15 -0
- data/vendor/gems/butterfly/examples/my_app.rb +12 -0
- data/vendor/gems/butterfly/lib/butterfly.rb +14 -0
- data/vendor/gems/butterfly/lib/handler.rb +48 -0
- data/vendor/gems/butterfly/lib/request.rb +29 -0
- data/vendor/gems/butterfly/lib/response.rb +49 -0
- data/vendor/gems/butterfly/script/console +10 -0
- data/vendor/gems/butterfly/script/destroy +14 -0
- data/vendor/gems/butterfly/script/generate +14 -0
- data/vendor/gems/butterfly/test/test_adapter_base.rb +23 -0
- data/vendor/gems/butterfly/test/test_butterfly_request.rb +46 -0
- data/vendor/gems/butterfly/test/test_butterfly_response.rb +43 -0
- data/vendor/gems/butterfly/test/test_butterfly_server.rb +16 -0
- data/vendor/gems/butterfly/test/test_default.rb +12 -0
- data/vendor/gems/butterfly/test/test_helper.rb +6 -0
- data/vendor/gems/dslify/History.txt +4 -0
- data/vendor/gems/dslify/Manifest.txt +25 -0
- data/vendor/gems/dslify/PostInstall.txt +5 -0
- data/vendor/gems/dslify/README.txt +60 -0
- data/vendor/gems/dslify/Rakefile +56 -0
- data/vendor/gems/dslify/config/hoe.rb +73 -0
- data/vendor/gems/dslify/config/requirements.rb +15 -0
- data/vendor/gems/dslify/dslify.gemspec +40 -0
- data/vendor/gems/dslify/lib/dslify/dslify.rb +69 -0
- data/vendor/gems/dslify/lib/dslify/version.rb +10 -0
- data/vendor/gems/dslify/lib/dslify.rb +7 -0
- data/vendor/gems/dslify/script/console +10 -0
- data/vendor/gems/dslify/script/destroy +14 -0
- data/vendor/gems/dslify/script/generate +14 -0
- data/vendor/gems/dslify/script/txt2html +82 -0
- data/vendor/gems/dslify/setup.rb +1585 -0
- data/vendor/gems/dslify/tasks/deployment.rake +34 -0
- data/vendor/gems/dslify/tasks/environment.rake +7 -0
- data/vendor/gems/dslify/tasks/website.rake +17 -0
- data/vendor/gems/dslify/test/test_dslify.rb +114 -0
- data/vendor/gems/dslify/website/index.html +86 -0
- data/vendor/gems/dslify/website/index.txt +83 -0
- data/vendor/gems/dslify/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/vendor/gems/dslify/website/stylesheets/screen.css +138 -0
- data/vendor/gems/dslify/website/template.html.erb +48 -0
- data/vendor/gems/parenting/History.txt +4 -0
- data/vendor/gems/parenting/Manifest.txt +13 -0
- data/vendor/gems/parenting/PostInstall.txt +2 -0
- data/vendor/gems/parenting/README.rdoc +47 -0
- data/vendor/gems/parenting/Rakefile +28 -0
- data/vendor/gems/parenting/lib/parenting/base.rb +65 -0
- data/vendor/gems/parenting/lib/parenting.rb +10 -0
- data/vendor/gems/parenting/parenting.gemspec +39 -0
- data/vendor/gems/parenting/script/console +10 -0
- data/vendor/gems/parenting/script/destroy +14 -0
- data/vendor/gems/parenting/script/generate +14 -0
- data/vendor/gems/parenting/test/file_to_eval.rb +9 -0
- data/vendor/gems/parenting/test/test_helper.rb +5 -0
- data/vendor/gems/parenting/test/test_parenting.rb +89 -0
- data/vendor/gems/suitcase/LICENSE +20 -0
- data/vendor/gems/suitcase/README.rdoc +31 -0
- data/vendor/gems/suitcase/Rakefile +57 -0
- data/vendor/gems/suitcase/VERSION.yml +4 -0
- data/vendor/gems/suitcase/lib/suitcase/unzipper.rb +15 -0
- data/vendor/gems/suitcase/lib/suitcase/zipper.rb +103 -0
- data/vendor/gems/suitcase/lib/suitcase.rb +5 -0
- data/vendor/gems/suitcase/suitcase.gemspec +52 -0
- data/vendor/gems/suitcase/test/suitcase_test.rb +89 -0
- data/vendor/gems/suitcase/test/test_dir/box.rb +1 -0
- data/vendor/gems/suitcase/test/test_dir/test.txt +1 -0
- data/vendor/gems/suitcase/test/test_helper.rb +12 -0
- metadata +810 -0
@@ -0,0 +1,67 @@
|
|
1
|
+
require "ftools"
|
2
|
+
module PoolParty
|
3
|
+
|
4
|
+
# Load a file that contains a pool into memory
|
5
|
+
def load_pool(filename=nil)
|
6
|
+
filename = filename || Binary.get_existing_spec_location
|
7
|
+
dputs "Using spec at #{filename}"
|
8
|
+
|
9
|
+
unless filename && ::File.readable?(filename)
|
10
|
+
puts "Please specify your cloud with -s, move it to ./clouds.rb or in your POOL_SPEC environment variable"
|
11
|
+
exit(1)
|
12
|
+
else
|
13
|
+
$pool_specfile = filename
|
14
|
+
PoolParty::Pool::Pool.load_from_file filename
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def print_with_nice_printer(header=nil, strs=[], &block)
|
19
|
+
printer = NicePrinter.new
|
20
|
+
printer.header
|
21
|
+
printer.center(header) if header
|
22
|
+
yield(printer)
|
23
|
+
strs.each {|st| printer << st if st}
|
24
|
+
printer.footer
|
25
|
+
printer.print
|
26
|
+
end
|
27
|
+
|
28
|
+
def pool_specfile
|
29
|
+
$pool_specfile
|
30
|
+
end
|
31
|
+
|
32
|
+
module Binary
|
33
|
+
|
34
|
+
class << self
|
35
|
+
|
36
|
+
def list_binaries_for(ty="pool")
|
37
|
+
available_binaries_for(ty).join(", ")
|
38
|
+
end
|
39
|
+
def available_binaries_for(ty="pool")
|
40
|
+
Dir["#{binary_directory}/#{ty}-*"].map {|a| File.basename(a.gsub(/#{ty}-/, '')) }.sort
|
41
|
+
end
|
42
|
+
def binary_directory
|
43
|
+
"#{::File.dirname(__FILE__)}/../../../bin"
|
44
|
+
end
|
45
|
+
# These are the locations the spec file can be before the cloud
|
46
|
+
# aborts because it cannot load the cloud
|
47
|
+
def get_existing_spec_location
|
48
|
+
[
|
49
|
+
Dir["#{Dir.pwd}/*/clouds.rb"],
|
50
|
+
"#{Default.remote_storage_path}/#{Default.default_specfile_name}",
|
51
|
+
"#{Default.default_specfile_name}",
|
52
|
+
"#{Default.base_config_directory}/#{Default.default_specfile_name}",
|
53
|
+
"#{Default.poolparty_home_path}/#{Default.default_specfile_name}",
|
54
|
+
ENV["POOL_SPEC"]
|
55
|
+
].flatten.reject {|a| a.nil?}.reject do |f|
|
56
|
+
f unless ::File.readable?(f)
|
57
|
+
end.first
|
58
|
+
end
|
59
|
+
# Daemonize the process
|
60
|
+
def daemonize(&block)
|
61
|
+
Daemonize.daemonize(&block)
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/display"
|
2
|
+
|
3
|
+
module PoolParty
|
4
|
+
module Console
|
5
|
+
|
6
|
+
include Display
|
7
|
+
|
8
|
+
# Print help commands for the console
|
9
|
+
# level 0 - Basic help
|
10
|
+
# level 1 - Commands
|
11
|
+
def help(level=0)
|
12
|
+
@np = NicePrinter.new(60)
|
13
|
+
@np.header
|
14
|
+
@np.center "PoolParty console help"
|
15
|
+
@np.center "Basics"
|
16
|
+
@np << "Load your pool with load_pool(filename)"
|
17
|
+
@np << "Reference clouds with"
|
18
|
+
@np << "c = cloud :cloudname"
|
19
|
+
@np.empty
|
20
|
+
if level >= 1
|
21
|
+
@np.center "CloudSpeak"
|
22
|
+
@np << "All the commands set on your cloud can be called within the console"
|
23
|
+
@np << "list_of_running_instances - get list of running nodes"
|
24
|
+
@np << "list_of_pending_instances - get list of pending nodes"
|
25
|
+
@np << "available_monitors - get list of the available monitors on the cloud"
|
26
|
+
@np << " note: all monitors can be called as a method on the cloud"
|
27
|
+
@np << " i.e. CpuMonitor makes the method cpu available on the cloud"
|
28
|
+
@np.empty
|
29
|
+
end
|
30
|
+
@np.footer
|
31
|
+
@np.print
|
32
|
+
end
|
33
|
+
|
34
|
+
# Clear all the pools and reload the console
|
35
|
+
# Call within console to reset and reload the entire poolparty base
|
36
|
+
# as well
|
37
|
+
def reload!
|
38
|
+
reset!
|
39
|
+
require File.dirname(__FILE__) + "/../../../poolparty"
|
40
|
+
require File.dirname(__FILE__) + "/../../../poolpartycl"
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
class Object
|
47
|
+
include PoolParty::Console
|
48
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module PoolParty
|
2
|
+
module Display
|
3
|
+
|
4
|
+
def pool_describe(options={})
|
5
|
+
if pools.size > 0
|
6
|
+
pools.each do |k,v|
|
7
|
+
print v.pretty_print
|
8
|
+
end
|
9
|
+
else
|
10
|
+
pre = "\t"
|
11
|
+
clouds.each do |name, cl|
|
12
|
+
puts cl.pretty_name(pre*2, cl)
|
13
|
+
puts cl.pretty_options(pre*2, cl) #cl.pretty_print("#{pre}\t")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
puts ""
|
18
|
+
pools.size
|
19
|
+
end
|
20
|
+
|
21
|
+
def header(str="")
|
22
|
+
"*** #{str}"
|
23
|
+
end
|
24
|
+
|
25
|
+
def subheader(str="")
|
26
|
+
"****** #{str}"
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module PoolParty
|
2
|
+
class HashPrinter
|
3
|
+
def self.print_to_string(props={})
|
4
|
+
<<-EOE
|
5
|
+
Top Level
|
6
|
+
#{print_hash(props, 1)}
|
7
|
+
EOE
|
8
|
+
end
|
9
|
+
def self.print_hash(props={}, tabs=0)
|
10
|
+
out = []
|
11
|
+
if props[:options]
|
12
|
+
out << props[:options].map {|k,v| "#{print_tabs(tabs)}#{k} => #{print_value(v)}"}.join("#{print_tabs(tabs)}\n")
|
13
|
+
end
|
14
|
+
if props[:resources]
|
15
|
+
props[:resources].each do |ty,r|
|
16
|
+
out << [
|
17
|
+
"#{print_tabs(tabs)}#{ty.to_s.capitalize}",
|
18
|
+
r.map {|h| h.map {|k,v| "#{print_tabs(tabs+1)}#{k} => #{print_value(v)}"}}.join("#{print_tabs(tabs+1)}\n")
|
19
|
+
].join("\n")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
if props[:services]
|
23
|
+
props[:services].each do |nm,s|
|
24
|
+
out << [
|
25
|
+
"#{print_tabs(tabs)}#{nm.to_s.capitalize}",
|
26
|
+
print_hash(s,tabs+1)
|
27
|
+
].join("\n")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
out.join("\n")
|
31
|
+
end
|
32
|
+
def self.print_tabs(tabs=1)
|
33
|
+
"#{"\t"*tabs}"
|
34
|
+
end
|
35
|
+
def self.print_value(v)
|
36
|
+
case v
|
37
|
+
when Array
|
38
|
+
"[#{v.join(", ")}]"
|
39
|
+
else
|
40
|
+
v
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class NicePrinter
|
2
|
+
|
3
|
+
attr_accessor :num_lines
|
4
|
+
attr_reader :centered_lines
|
5
|
+
|
6
|
+
def initialize(num_lines=60)
|
7
|
+
@num_lines = num_lines
|
8
|
+
@centered_lines = @num_lines - 4
|
9
|
+
end
|
10
|
+
|
11
|
+
def center(line)
|
12
|
+
lines << "* #{line.center(@centered_lines)} *"
|
13
|
+
end
|
14
|
+
def left(line)
|
15
|
+
lines << "* #{line.ljust(@centered_lines)} *"
|
16
|
+
end
|
17
|
+
def header
|
18
|
+
lines << "*"*@num_lines
|
19
|
+
end
|
20
|
+
def footer
|
21
|
+
header
|
22
|
+
end
|
23
|
+
def empty
|
24
|
+
lines << "* #{" ".ljust(@centered_lines)} *"
|
25
|
+
end
|
26
|
+
def print
|
27
|
+
puts lines.join("\n")
|
28
|
+
""
|
29
|
+
end
|
30
|
+
def <<(line)
|
31
|
+
left(line)
|
32
|
+
end
|
33
|
+
def lines
|
34
|
+
@lines ||= []
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,149 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require "poolparty"
|
3
|
+
require "poolpartycl"
|
4
|
+
# require 'rdoc/usage'
|
5
|
+
require 'ostruct'
|
6
|
+
require 'date'
|
7
|
+
|
8
|
+
module PoolParty
|
9
|
+
class Optioner
|
10
|
+
include Dslify
|
11
|
+
|
12
|
+
default_options(:verbose => false,
|
13
|
+
:quiet => false,
|
14
|
+
:cloudname => false,
|
15
|
+
:poolname => false)
|
16
|
+
|
17
|
+
def initialize(args=[], opts={}, &block)
|
18
|
+
boolean_args << opts[:boolean_args] if opts.has_key?(:boolean_args)
|
19
|
+
|
20
|
+
@arguments = parse_args(args)
|
21
|
+
@extra_help = opts.has_key?(:extra_help) ? opts[:extra_help] : ""
|
22
|
+
@abstract = opts.has_key?(:abstract) ? opts[:abstract] : false
|
23
|
+
@load_pools = opts.has_key?(:load_pools) ? opts[:load_pools] : !@abstract
|
24
|
+
@parse_options = opts.has_key?(:parse_options) ? opts[:parse_options] : true
|
25
|
+
@command = opts.has_key?(:command) ? opts[:command] : false
|
26
|
+
|
27
|
+
parse_options(&block) if @parse_options
|
28
|
+
self
|
29
|
+
end
|
30
|
+
def daemonizeable
|
31
|
+
@opts.on('-D', '--daemonize', 'Daemonize starting the cloud') { self.daemon true }
|
32
|
+
end
|
33
|
+
def cloudnames
|
34
|
+
@opts.on('-n cloudname', '--name name', 'Start cloud by this name') { |c| self.cloudname c }
|
35
|
+
end
|
36
|
+
def unflagged_args
|
37
|
+
@unflagged_args ||= []
|
38
|
+
end
|
39
|
+
def flagged_args
|
40
|
+
@flagged_args ||= []
|
41
|
+
end
|
42
|
+
def boolean_args
|
43
|
+
@boolean_args ||= ['-V', '-h', '-t', '-v', '--debug']
|
44
|
+
end
|
45
|
+
|
46
|
+
# Break ARGV into 2 arrays, one for flagged options one for unflagged
|
47
|
+
# For example the "command -v -i 1 five six -x"
|
48
|
+
# becomes ['-v', '-i', 1, '-x'] and ['five', 'six']
|
49
|
+
# Boolean options, such as -v, must be specified in the optioner definition
|
50
|
+
def parse_args(args=[])
|
51
|
+
i=0
|
52
|
+
while i < args.length
|
53
|
+
if boolean_args.include?(args[i])
|
54
|
+
flagged_args << args[i]
|
55
|
+
else
|
56
|
+
if args[i][0].chr == "-"
|
57
|
+
flagged_args << args[i]
|
58
|
+
flagged_args << args[i+1] if (args[i+1] and !args[i+1].nil?)
|
59
|
+
i+=1
|
60
|
+
else
|
61
|
+
unflagged_args << args[i]
|
62
|
+
end
|
63
|
+
end
|
64
|
+
i+=1
|
65
|
+
end
|
66
|
+
args
|
67
|
+
end
|
68
|
+
|
69
|
+
# def parent
|
70
|
+
# self
|
71
|
+
# end
|
72
|
+
|
73
|
+
def parent
|
74
|
+
self
|
75
|
+
end
|
76
|
+
|
77
|
+
def parse_options(&blk)
|
78
|
+
self.spec = nil
|
79
|
+
self.num = nil
|
80
|
+
|
81
|
+
progname = $0.include?("-") ? "#{::File.basename($0[/(\w+)-/, 1])} #{::File.basename($0[/-(.*)/, 1])}" : ::File.basename($0)
|
82
|
+
@opts = OptionParser.new
|
83
|
+
@opts.extend(Dslify)
|
84
|
+
@opts.banner = "Usage: #{progname} #{@abstract ? "[command] " : ""}[options]"
|
85
|
+
|
86
|
+
@opts.separator ""
|
87
|
+
|
88
|
+
unless @abstract
|
89
|
+
@opts.separator "Options:"
|
90
|
+
|
91
|
+
@opts.on('-v', '--verbose', 'Be verbose') { self.verbose true }
|
92
|
+
@opts.on('-d', "--debug", "Debug setting") { self.debugging true }
|
93
|
+
@opts.on('-s [file]', '--spec-file [file]', 'Set the spec file') { |file| self.spec file.chomp }
|
94
|
+
@opts.on('-t', '--test', 'Testing mode') { self.testing true }
|
95
|
+
|
96
|
+
blk.call(@opts, self) if blk
|
97
|
+
end
|
98
|
+
|
99
|
+
@opts.on('-V', '--version', 'Display the version') { output_version ; exit 0 }
|
100
|
+
@opts.on_tail("-h", "--help", "Show this message") do
|
101
|
+
puts @opts
|
102
|
+
puts @extra_help
|
103
|
+
exit
|
104
|
+
end
|
105
|
+
|
106
|
+
@opts.parse(@arguments.dup)
|
107
|
+
|
108
|
+
process_options
|
109
|
+
output_options if verbose
|
110
|
+
|
111
|
+
if @load_pools
|
112
|
+
self.loaded_pool load_pool( spec? ? spec : Binary.get_existing_spec_location)
|
113
|
+
self.loaded_clouds extract_cloud_from_options(self)
|
114
|
+
self.loaded_pools extract_pool_from_options(self)
|
115
|
+
|
116
|
+
reject_junk_options!
|
117
|
+
raise CloudNotFoundException.new("Please specify your cloud with -s, move it to ./clouds.rb or in your POOL_SPEC environment variable") unless loaded_clouds && !loaded_clouds.empty?
|
118
|
+
loaded_pools.each do |pl|
|
119
|
+
pl.options(self.options)
|
120
|
+
end
|
121
|
+
loaded_clouds.each do |cl|
|
122
|
+
cl.options(self.options)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def reject_junk_options!
|
128
|
+
%w(loaded_pool cloudname extract_pool_from_options).each do |opt|
|
129
|
+
@dsl_options.delete(opt.to_sym)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
def process_options
|
134
|
+
end
|
135
|
+
|
136
|
+
def output_version
|
137
|
+
puts ::PoolParty::Version
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
|
142
|
+
def extract_cloud_from_options(o)
|
143
|
+
o.cloudname ? [cloud(o.cloudname.downcase.to_sym)] : clouds.collect {|n,cl| cl}
|
144
|
+
end
|
145
|
+
|
146
|
+
def extract_pool_from_options(o)
|
147
|
+
o.poolname ? [pool(o.poolname.downcase.to_sym)] : pools.collect {|n,pl| pl}
|
148
|
+
end
|
149
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require "socket"
|
2
|
+
module PoolParty
|
3
|
+
module Ruberl
|
4
|
+
class Base
|
5
|
+
attr_accessor :host, :port
|
6
|
+
def initialize(host="localhost", port=7050)
|
7
|
+
@host = host
|
8
|
+
@port = port
|
9
|
+
end
|
10
|
+
def with_socket(&block)
|
11
|
+
begin
|
12
|
+
socket = TCPSocket.open(@host, @port)
|
13
|
+
out = yield(socket)
|
14
|
+
socket.close
|
15
|
+
out
|
16
|
+
rescue Exception => e
|
17
|
+
end
|
18
|
+
end
|
19
|
+
def messenger_send!(msg="get_current_load cpu")
|
20
|
+
with_socket do |sock|
|
21
|
+
sock.send(msg, 0)
|
22
|
+
@str = sock.recv(2000)
|
23
|
+
end
|
24
|
+
@str
|
25
|
+
end
|
26
|
+
def messenger_cast!(msg="force_reconfig")
|
27
|
+
with_socket do |sock|
|
28
|
+
sock.send(msg, 0)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "json"
|
3
|
+
require("#{::File.dirname(__FILE__)}/../../vendor/gems/dslify/lib/dslify")
|
4
|
+
require "#{::File.dirname(__FILE__)}/poolparty/default"
|
5
|
+
require "#{::File.dirname(__FILE__)}/schema"
|
6
|
+
require "#{::File.dirname(__FILE__)}/net/init"
|
7
|
+
require "#{::File.dirname(__FILE__)}/exceptions/RemoteException.rb"
|
8
|
+
|
9
|
+
module PoolParty
|
10
|
+
def self.load_cloud_from_json(json_file_path=nil)
|
11
|
+
json_file = json_file_path || PoolParty::Default.properties_hash_file
|
12
|
+
PoolParty::Schema.new( ::File.read(json_file) ) rescue exit 1
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class String
|
17
|
+
def camelcase
|
18
|
+
gsub(/(^|_|-)(.)/) { $2.upcase }
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
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
|
+
|
9
|
+
has_mount(:name => loc, :device => ebs_volume_device)
|
10
|
+
has_directory(:name => loc)
|
11
|
+
end
|
12
|
+
|
13
|
+
def dependency_resolver(name='puppet')
|
14
|
+
klass = name.preserved_class_constant("Resolver")
|
15
|
+
raise DependencyResolverException.new("Unknown resolver") unless klass
|
16
|
+
dsl_options[:dependency_resolver] = klass unless dsl_options[:dependency_resolver]
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
=begin rdoc
|
2
|
+
CloudResourcer provides the cloud with convenience methods
|
3
|
+
that you can call on your cloud. This is where the
|
4
|
+
|
5
|
+
instances 2..10
|
6
|
+
|
7
|
+
method is stored, for instance. It's also where the key convenience methods are written
|
8
|
+
=end
|
9
|
+
require "ftools"
|
10
|
+
|
11
|
+
module PoolParty
|
12
|
+
module CloudResourcer
|
13
|
+
|
14
|
+
def plugin_directory(arr=[])
|
15
|
+
arr = [arr] if arr.is_a?(String)
|
16
|
+
arr << [
|
17
|
+
"#{::File.expand_path(Dir.pwd)}/plugins",
|
18
|
+
"#{::File.expand_path(Default.poolparty_home_path)}/plugins"
|
19
|
+
]
|
20
|
+
arr.flatten.each {|arg|
|
21
|
+
Dir["#{arg}/*/*.rb"].each {|f| require f } if ::File.directory?(arg)
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
# Store block
|
26
|
+
def store_block(&block)
|
27
|
+
@stored_block ||= block ? block : nil
|
28
|
+
end
|
29
|
+
|
30
|
+
def stored_block
|
31
|
+
@stored_block
|
32
|
+
end
|
33
|
+
|
34
|
+
# This will run the blocks after they are stored if there is a block
|
35
|
+
# associated
|
36
|
+
def run_stored_block
|
37
|
+
self.run_in_context @stored_block if @stored_block
|
38
|
+
end
|
39
|
+
|
40
|
+
# Set instances with a range or a number
|
41
|
+
def instances(arg)
|
42
|
+
case arg
|
43
|
+
when Range
|
44
|
+
minimum_instances arg.first
|
45
|
+
maximum_instances arg.last
|
46
|
+
when Fixnum
|
47
|
+
minimum_instances arg
|
48
|
+
maximum_instances arg
|
49
|
+
else
|
50
|
+
raise SpecException.new("Don't know how to handle instances cloud input #{arg}")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def setup_dev
|
55
|
+
return true if keypair || master.nil?
|
56
|
+
end
|
57
|
+
|
58
|
+
def using(t)
|
59
|
+
@cloud = self
|
60
|
+
if t && self.class.available_bases.include?(t.to_sym)
|
61
|
+
unless using_remoter?
|
62
|
+
self.class.send :attr_reader, :remote_base
|
63
|
+
self.class.send :attr_reader, :parent_cloud
|
64
|
+
klass_string = "#{t}".classify
|
65
|
+
klass = "::PoolParty::Remote::#{klass_string}".constantize
|
66
|
+
@remote_base = klass.send :new, self
|
67
|
+
options[:remote_base] = klass.to_s if respond_to?(:options)
|
68
|
+
|
69
|
+
remote_instance_klass = "::PoolParty::Remote::#{klass_string}RemoteInstance"
|
70
|
+
options[:remote_instance_base] = remote_instance_klass if respond_to?(:options)
|
71
|
+
|
72
|
+
@parent_cloud = @cloud
|
73
|
+
instance_eval "def #{t};@remote_base;end;"
|
74
|
+
end
|
75
|
+
else
|
76
|
+
puts "Unknown remote base"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def using_remoter?
|
81
|
+
@remote_base
|
82
|
+
end
|
83
|
+
|
84
|
+
# Keypairs
|
85
|
+
# Use the keypair path
|
86
|
+
def keypair(*args)
|
87
|
+
if args && !args.empty?
|
88
|
+
args.each {|arg| _keypairs.unshift Key.new(arg) }
|
89
|
+
else
|
90
|
+
_keypairs.select {|key| key.exists? }.first
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
alias :set_keypairs :keypair
|
95
|
+
|
96
|
+
def _keypairs
|
97
|
+
dsl_options[:keypairs] ||= [Key.new]
|
98
|
+
end
|
99
|
+
|
100
|
+
def full_keypair_path
|
101
|
+
@full_keypair_path ||= keypair.full_filepath
|
102
|
+
end
|
103
|
+
|
104
|
+
# TODO: deprecate
|
105
|
+
def number_of_resources
|
106
|
+
arr = resources.map do |n, r|
|
107
|
+
r.size
|
108
|
+
end
|
109
|
+
resources.map {|n,r| r.size}.inject(0){|sum,i| sum+=i}
|
110
|
+
end
|
111
|
+
|
112
|
+
def plugin_store
|
113
|
+
@plugin_store ||= []
|
114
|
+
end
|
115
|
+
|
116
|
+
# TODO: deprecate
|
117
|
+
def realize_plugins!(force=false)
|
118
|
+
plugin_store.each {|plugin| puts "plugin: #{plugin}";plugin.realize!(force) if plugin }
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
end
|