poolparty 0.2.84 → 1.2.2
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/History.txt +7 -0
- data/License.txt +1 -1
- data/PostInstall.txt +1 -1
- data/README.txt +13 -22
- data/Rakefile +26 -35
- data/VERSION.yml +4 -0
- data/bin/cloud +24 -3
- data/bin/cloud-bootstrap +31 -0
- data/bin/cloud-configure +36 -20
- data/bin/{pool-console → cloud-console} +0 -0
- data/bin/cloud-contract +7 -7
- data/bin/cloud-describe +28 -0
- data/bin/cloud-expand +13 -6
- data/bin/cloud-handle-load +3 -3
- data/bin/cloud-list +9 -14
- data/bin/cloud-osxcopy +6 -5
- data/bin/cloud-provision +17 -22
- data/bin/cloud-setup-dev +11 -11
- data/bin/cloud-show +28 -0
- data/bin/cloud-spec +2 -2
- data/bin/cloud-ssh +10 -3
- data/bin/cloud-start +21 -23
- data/bin/cloud-terminate +15 -7
- data/bin/cloud-verify +32 -0
- data/bin/install-poolparty +216 -0
- data/bin/server-butterfly +25 -0
- data/bin/server-cloud-elections +37 -0
- data/bin/server-ensure-provisioning +33 -0
- data/bin/server-get-load +9 -12
- data/bin/server-list-active +25 -12
- data/bin/server-manage-election +67 -0
- data/bin/server-monitor.ru +42 -0
- data/bin/server-query-agent +15 -0
- data/bin/server-rerun +1 -1
- data/bin/server-write-new-nodes +2 -2
- data/config/jeweler.rb +52 -0
- data/config/requirements.rb +1 -9
- data/examples/basic.rb +10 -10
- data/examples/deploy.rb +5 -0
- data/examples/fairchild.rb +28 -0
- data/examples/fairchild_chef.rb +19 -0
- data/examples/maize.rb +37 -0
- data/examples/paparazzi.conf.erb +21 -0
- data/generators/poolspec/poolspec_generator.rb +1 -9
- data/generators/poolspec/templates/pool_spec_template.erb +0 -1
- data/lib/poolparty/{aska/aska.rb → aska.rb} +19 -28
- data/lib/poolparty/base_packages/haproxy.rb +48 -31
- data/lib/poolparty/base_packages/heartbeat.rb +6 -62
- data/lib/poolparty/base_packages/poolparty.rb +5 -105
- data/lib/poolparty/base_packages/ruby.rb +4 -4
- data/lib/poolparty/base_packages/runit.rb +1 -1
- data/lib/poolparty/core/array.rb +21 -3
- data/lib/poolparty/core/hash.rb +45 -10
- data/lib/poolparty/core/kernel.rb +30 -8
- data/lib/poolparty/core/nil.rb +8 -0
- data/lib/poolparty/core/object.rb +34 -25
- data/lib/poolparty/core/ordered_hash.rb +99 -0
- data/lib/poolparty/core/string.rb +112 -15
- data/lib/poolparty/core/symbol.rb +10 -0
- data/lib/poolparty/dependencies.rb +49 -0
- data/lib/poolparty/dependency_resolver/chef_resolver.rb +237 -0
- data/lib/poolparty/dependency_resolver/dependency_resolver.rb +42 -0
- data/lib/poolparty/dependency_resolver/dependency_resolver_cloud_extensions.rb +29 -0
- data/lib/poolparty/{dependency_resolutions → dependency_resolver}/puppet.rb +34 -29
- data/lib/poolparty/dependency_resolver/puppet_resolver.rb +188 -0
- data/lib/poolparty/exceptions/MasterException.rb +2 -2
- data/lib/poolparty/exceptions/RemoteException.rb +1 -1
- 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 +7 -7
- data/lib/poolparty/helpers/binary.rb +26 -32
- data/lib/poolparty/helpers/console.rb +1 -1
- data/lib/poolparty/helpers/display.rb +1 -5
- data/lib/poolparty/helpers/hash_printer.rb +44 -0
- data/lib/poolparty/helpers/loading.rb +4 -0
- data/lib/poolparty/helpers/optioner.rb +39 -25
- data/lib/poolparty/lite.rb +30 -0
- data/lib/poolparty/modules/callbacks.rb +44 -0
- data/lib/poolparty/modules/cloud_dsl.rb +38 -8
- data/lib/poolparty/modules/cloud_resourcer.rb +67 -97
- data/lib/poolparty/modules/daemonizable.rb +141 -0
- data/lib/poolparty/modules/definable_resource.rb +8 -14
- data/lib/poolparty/modules/file_writer.rb +25 -17
- data/lib/poolparty/modules/pinger.rb +28 -0
- data/lib/poolparty/modules/pretty_printer.rb +1 -1
- data/lib/poolparty/modules/resourcing_dsl.rb +55 -40
- data/lib/poolparty/modules/searchable_paths.rb +91 -0
- data/lib/poolparty/modules/thread_pool.rb +107 -106
- data/lib/poolparty/modules/user_helpers.rb +20 -0
- data/lib/poolparty/monitors/base_monitor.rb +18 -75
- data/lib/poolparty/monitors/monitor_rack.rb +123 -0
- data/lib/poolparty/monitors/monitors/favicon_monitor.rb +12 -0
- data/lib/poolparty/monitors/monitors/load_monitor.rb +9 -0
- data/lib/poolparty/monitors/monitors/memory_monitor.rb +9 -9
- data/lib/poolparty/monitors/monitors/neighborhood_monitor.rb +77 -0
- data/lib/poolparty/monitors/monitors/stats_monitor.rb +187 -0
- data/lib/poolparty/monitors/monitors/time_monitor.rb +15 -0
- data/lib/poolparty/net/init.rb +10 -0
- data/lib/poolparty/net/remote_bases.rb +20 -0
- data/lib/poolparty/net/remote_instance.rb +26 -44
- data/lib/poolparty/net/remoter/cloud_control.rb +24 -0
- data/lib/poolparty/net/remoter/connections.rb +172 -0
- data/lib/poolparty/net/remoter/interactive.rb +45 -0
- data/lib/poolparty/net/remoter_base.rb +116 -111
- data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +245 -0
- data/lib/poolparty/net/remoter_bases/ec2/ec2_remote_instance.rb +53 -0
- data/lib/poolparty/net/{remote_bases → remoter_bases}/ec2/ec2_response_object.rb +2 -4
- data/lib/poolparty/net/remoter_bases/vmrun/utilities/vm_disk.rb +12 -0
- data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx.rb +33 -0
- data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx_file.rb +117 -0
- data/lib/poolparty/net/remoter_bases/vmrun/vmrun.rb +158 -0
- data/lib/poolparty/net/remoter_bases/vmrun/vmrun_instance.rb +71 -0
- data/lib/poolparty/plugins/apache2/apache.rb +340 -0
- data/lib/poolparty/plugins/bind.rb +11 -0
- data/lib/poolparty/plugins/chef.rb +173 -0
- data/lib/poolparty/plugins/chef_deploy.rb +58 -0
- data/lib/poolparty/plugins/deploy_directory.rb +49 -0
- data/lib/poolparty/plugins/gem_package.rb +61 -0
- data/lib/poolparty/plugins/git.rb +41 -24
- data/lib/poolparty/plugins/line_in_file.rb +30 -0
- data/lib/poolparty/plugins/nanite.rb +41 -0
- data/lib/poolparty/plugins/rails_deploy.rb +76 -0
- data/lib/poolparty/plugins/svn.rb +56 -39
- data/lib/poolparty/poolparty/cloud.rb +137 -167
- data/lib/poolparty/poolparty/{base.rb → default.rb} +62 -25
- data/lib/poolparty/poolparty/key.rb +78 -0
- data/lib/poolparty/poolparty/loggable.rb +28 -27
- data/lib/poolparty/poolparty/neighborhoods.rb +102 -0
- data/lib/poolparty/poolparty/plugin.rb +53 -18
- data/lib/poolparty/poolparty/plugin_model.rb +20 -23
- data/lib/poolparty/poolparty/pool.rb +34 -26
- data/lib/poolparty/poolparty/poolparty_base_class.rb +190 -0
- data/lib/poolparty/poolparty/resource.rb +92 -178
- data/lib/poolparty/poolparty/script.rb +32 -20
- data/lib/poolparty/poolparty/service.rb +44 -0
- data/lib/poolparty/poolparty/template.rb +27 -0
- data/lib/poolparty/provision/boot_strapper.rb +164 -0
- data/lib/poolparty/provision/configurations/chef.rb +26 -0
- data/lib/poolparty/provision/configurations/puppet.rb +28 -0
- data/lib/poolparty/provision/dr_configure.rb +142 -0
- data/lib/poolparty/resources/cron.rb +51 -0
- data/lib/poolparty/resources/directory.rb +36 -0
- data/lib/poolparty/resources/exec.rb +47 -0
- data/lib/poolparty/resources/file.rb +73 -0
- data/lib/poolparty/resources/host.rb +37 -0
- data/lib/poolparty/resources/mount.rb +45 -0
- data/lib/poolparty/resources/package.rb +41 -0
- data/lib/poolparty/resources/remote_file.rb +52 -0
- data/lib/poolparty/resources/service.rb +41 -0
- data/lib/poolparty/resources/sshkey.rb +49 -0
- data/lib/poolparty/resources/symlink.rb +43 -0
- data/lib/poolparty/{poolparty/resources/remote_user.rb → resources/user.rb} +1 -5
- data/lib/poolparty/resources/variable.rb +34 -0
- data/lib/poolparty/resources.rb +42 -0
- data/lib/poolparty/schema.rb +79 -0
- data/lib/poolparty/templates/apache2/apache2.conf +14 -0
- data/lib/poolparty/templates/apache2/base.conf.erb +168 -0
- data/lib/poolparty/templates/apache2/browser_fixes.conf.erb +26 -0
- data/lib/poolparty/templates/apache2/debian.conf.erb +675 -0
- data/lib/poolparty/templates/apache2/default-site.conf.erb +41 -0
- data/lib/poolparty/templates/apache2/directory_indexes.conf.erb +101 -0
- data/lib/poolparty/templates/apache2/logging-syslog.conf.erb +42 -0
- data/lib/poolparty/templates/apache2/mime-extras.conf.erb +211 -0
- data/lib/poolparty/templates/apache2/mime-minimal.conf.erb +15 -0
- data/lib/poolparty/templates/apache2/mpm-worker.conf.erb +20 -0
- data/lib/poolparty/templates/apache2/mpm-worker.erb +20 -0
- data/lib/poolparty/templates/apache2/passenger.conf.erb +20 -0
- data/lib/poolparty/templates/apache2/php.ini.erb +1253 -0
- data/lib/poolparty/templates/apache2/server-status.erb +19 -0
- data/lib/poolparty/templates/erlang_cookie_maker +6 -0
- data/lib/poolparty/templates/gemrc_template +11 -0
- data/lib/poolparty/templates/ha.cf +1 -1
- data/lib/poolparty/templates/haproxy.conf +29 -27
- data/lib/poolparty/templates/haresources +2 -2
- data/lib/poolparty/templates/monitor.ru +16 -0
- data/lib/poolparty/templates/php.ini.erb +1253 -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 +11 -5
- data/lib/poolparty/verification/verifier_base.rb +17 -0
- data/lib/poolparty/verification/verifiers/http_match.rb +43 -0
- data/lib/poolparty/verification/verifiers/http_status.rb +59 -0
- data/lib/poolparty/verification/verifiers/ping.rb +34 -0
- data/lib/poolparty/verification/verify.rb +76 -0
- data/lib/poolparty.rb +76 -22
- data/lib/poolpartycl.rb +66 -1
- data/script/destroy +1 -1
- data/script/generate +1 -1
- data/spec/bin/bin_spec_helper.rb +7 -0
- data/spec/bin/fixtures/bin_cloud_for_test.rb +13 -0
- data/spec/bin/server-list-active_spec.rb +24 -0
- data/spec/poolparty/aska/aska_spec.rb +5 -5
- data/spec/poolparty/base_packages/haproxy_spec.rb +2 -8
- data/spec/poolparty/base_packages/heartbeat_spec.rb +3 -26
- data/spec/poolparty/bin/console_spec.rb +11 -29
- data/spec/poolparty/core/array_spec.rb +20 -3
- data/spec/poolparty/core/hash_spec.rb +30 -28
- data/spec/poolparty/core/object_spec.rb +2 -3
- data/spec/poolparty/core/ordered_hash_spec.rb +48 -0
- data/spec/poolparty/core/string_spec.rb +1 -27
- data/spec/poolparty/dependencies_spec.rb +11 -0
- data/spec/poolparty/dependency_resolver/chef_resolver_spec.rb +107 -0
- data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +122 -0
- data/spec/poolparty/dependency_resolver/dependency_resolver_spec.rb +16 -0
- data/spec/poolparty/dependency_resolver/puppet_resolver_spec.rb +121 -0
- data/spec/poolparty/extra/deployments_spec.rb +9 -5
- data/spec/poolparty/fixtures/clouds.json +128 -0
- data/spec/poolparty/fixtures/test_template.erb +1 -0
- data/spec/poolparty/helpers/binary_spec.rb +1 -1
- data/spec/poolparty/helpers/hash_printer_spec.rb +34 -0
- data/spec/poolparty/helpers/optioner_spec.rb +1 -1
- data/spec/poolparty/id_rsa +27 -0
- data/spec/poolparty/modules/cloud_resourcer_spec.rb +26 -111
- data/spec/poolparty/modules/definable_resource.rb +1 -1
- data/spec/poolparty/modules/file_writer_spec.rb +10 -4
- data/spec/poolparty/modules/searchable_paths_spec.rb +76 -0
- data/spec/poolparty/monitors/base_monitor_spec.rb +112 -111
- data/spec/poolparty/monitors/monitors/cpu_monitor_spec.rb +18 -16
- data/spec/poolparty/monitors/monitors/memory_monitor_spec.rb +48 -47
- data/spec/poolparty/net/remote_instance_spec.rb +9 -73
- data/spec/poolparty/net/remote_spec.rb +287 -310
- data/spec/poolparty/net/remoter_base_spec.rb +3 -56
- data/spec/poolparty/net/remoter_bases/ec2_mocks_and_stubs.rb +24 -0
- data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +114 -0
- data/spec/poolparty/net/{remote_bases → remoter_bases}/ec2_spec.rb +51 -53
- data/spec/poolparty/net/remoter_spec.rb +96 -86
- data/spec/poolparty/plugins/chef_spec.rb +7 -0
- data/spec/poolparty/plugins/deploydirectory_spec.rb +51 -52
- data/spec/poolparty/plugins/git_spec.rb +16 -20
- data/spec/poolparty/plugins/line_spec.rb +14 -8
- data/spec/poolparty/poolparty/cloud_spec.rb +85 -183
- data/spec/poolparty/poolparty/configurers/files/ruby_basic.rb +3 -4
- data/spec/poolparty/poolparty/configurers/ruby_spec.rb +7 -23
- data/spec/poolparty/poolparty/{base_spec.rb → default_spec.rb} +44 -41
- data/spec/poolparty/poolparty/example_spec.rb +43 -11
- data/spec/poolparty/poolparty/key_spec.rb +42 -0
- data/spec/poolparty/poolparty/neighborhoods_spec.rb +65 -0
- data/spec/poolparty/poolparty/plugin_model_spec.rb +14 -24
- data/spec/poolparty/poolparty/plugin_spec.rb +25 -96
- data/spec/poolparty/poolparty/pool_spec.rb +3 -1
- data/spec/poolparty/poolparty/resource_spec.rb +70 -270
- data/spec/poolparty/poolparty/script_spec.rb +30 -53
- data/spec/poolparty/poolparty/service_spec.rb +5 -0
- data/spec/poolparty/poolparty/template_spec.rb +26 -0
- data/spec/poolparty/poolparty/test_plugins/webserver.rb +8 -25
- data/spec/poolparty/poolparty_base_class_spec.rb +84 -0
- data/spec/poolparty/poolparty_spec.rb +7 -4
- 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 +64 -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 +26 -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/spec_helper.rb +107 -23
- data/spec/poolparty/test_spec_helper.rb +13 -0
- data/tasks/development.rake +85 -69
- data/tasks/poolparty.rake +54 -0
- data/tasks/server.rake +41 -39
- data/tasks/spec.rake +35 -1
- data/test/fixtures/test_template.erb +1 -0
- data/test/poolparty/core/array_test.rb +21 -0
- data/test/poolparty/core/hash_test.rb +34 -0
- data/test/poolparty/core/string_test.rb +29 -0
- data/test/poolparty/dependency_resolver/puppet_resolver_test.rb +90 -0
- data/test/poolparty/modules/callbacks_test.rb +40 -0
- data/test/poolparty/modules/cloud_dsl_test.rb +60 -0
- data/test/poolparty/net/remoter_bases/vmrun/vmrun_test.rb +54 -0
- data/test/poolparty/net/remoter_test.rb +14 -0
- data/test/poolparty/poolparty/neighborhood_test.rb +23 -0
- data/test/poolparty/poolparty/poolparty_base_class_test.rb +84 -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/poolparty/verification/verify_test.rb +49 -0
- data/test/test_helper.rb +8 -2
- data/test/test_poolparty.rb +6 -5
- data/vendor/chef/apache2/README.rdoc +59 -0
- data/vendor/chef/apache2/attributes/apache.rb +72 -0
- data/vendor/chef/apache2/definitions/apache_module.rb +36 -0
- data/vendor/chef/apache2/definitions/apache_site.rb +36 -0
- data/vendor/chef/apache2/definitions/web_app.rb +45 -0
- data/vendor/chef/apache2/files/default/apache2_module_conf_generate.pl +41 -0
- data/vendor/chef/apache2/recipes/default.rb +132 -0
- data/vendor/chef/apache2/recipes/mod_alias.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_auth_basic.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_auth_digest.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_authn_file.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_authnz_ldap.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_authz_default.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_authz_groupfile.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_authz_host.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_authz_user.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_autoindex.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_cgi.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_dav.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_dav_svn.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_deflate.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_dir.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_env.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_expires.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_fcgid.rb +35 -0
- data/vendor/chef/apache2/recipes/mod_headers.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_ldap.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_log_config.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_mime.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_negotiation.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_php5.rb +27 -0
- data/vendor/chef/apache2/recipes/mod_proxy.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_proxy_http.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_python.rb +22 -0
- data/vendor/chef/apache2/recipes/mod_rewrite.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_setenvif.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_ssl.rb +20 -0
- data/vendor/chef/apache2/recipes/mod_status.rb +20 -0
- data/vendor/chef/apache2/templates/default/a2dismod.erb +22 -0
- data/vendor/chef/apache2/templates/default/a2dissite.erb +29 -0
- data/vendor/chef/apache2/templates/default/a2enmod.erb +37 -0
- data/vendor/chef/apache2/templates/default/a2ensite.erb +38 -0
- data/vendor/chef/apache2/templates/default/apache2.conf.erb +630 -0
- data/vendor/chef/apache2/templates/default/default-site.erb +45 -0
- data/vendor/chef/apache2/templates/default/port_apache.erb +2 -0
- data/vendor/chef/apache2/templates/default/ports.conf.erb +6 -0
- data/vendor/chef/apache2/templates/default/web_app.conf.erb +43 -0
- data/vendor/chef/chef-deploy/LICENSE +201 -0
- data/vendor/chef/chef-deploy/README.rdoc +24 -0
- data/vendor/chef/chef-deploy/Rakefile +57 -0
- data/vendor/chef/chef-deploy/TODO +4 -0
- data/vendor/chef/chef-deploy/lib/chef-deploy/cached_deploy.rb +230 -0
- data/vendor/chef/chef-deploy/lib/chef-deploy/git.rb +132 -0
- data/vendor/chef/chef-deploy/lib/chef-deploy/subversion.rb +98 -0
- data/vendor/chef/chef-deploy/lib/chef-deploy.rb +183 -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/{config → vendor/gems/dslify/config}/hoe.rb +12 -55
- 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 +76 -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/{script → vendor/gems/dslify/script}/txt2html +4 -4
- data/{setup.rb → vendor/gems/dslify/setup.rb} +3 -3
- data/{tasks → vendor/gems/dslify/tasks}/deployment.rake +4 -18
- data/vendor/gems/dslify/tasks/environment.rake +7 -0
- data/{tasks → vendor/gems/dslify/tasks}/website.rake +0 -0
- data/vendor/gems/dslify/test/test_dslify.rb +138 -0
- data/vendor/gems/dslify/website/index.html +86 -0
- data/vendor/gems/dslify/website/index.txt +83 -0
- data/{website → vendor/gems/dslify/website}/javascripts/rounded_corners_lite.inc.js +0 -0
- data/{website → vendor/gems/dslify/website}/stylesheets/screen.css +18 -27
- data/{website → vendor/gems/dslify/website}/template.html.erb +1 -2
- data/vendor/gems/parenting/History.txt +4 -0
- data/vendor/gems/parenting/Manifest.txt +14 -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/parenting.rb +61 -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 +117 -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 +119 -0
- data/vendor/gems/suitcase/lib/suitcase.rb +5 -0
- data/vendor/gems/suitcase/suitcase.gemspec +32 -0
- data/vendor/gems/suitcase/test/suitcase_test.rb +102 -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 +370 -343
- data/Capfile +0 -1
- data/Manifest.txt +0 -414
- data/bin/cloud-add-keypair +0 -28
- data/bin/cloud-ensure-provisioning +0 -39
- data/bin/cloud-maintain +0 -30
- data/bin/cloud-refresh +0 -17
- data/bin/cloud-run +0 -18
- data/bin/cloud-stats +0 -17
- data/bin/messenger-get-current-nodes +0 -14
- data/bin/pool +0 -31
- data/bin/pool-describe +0 -8
- data/bin/pool-generate +0 -18
- data/bin/pool-init +0 -28
- data/bin/pool-list +0 -30
- data/bin/pool-start +0 -26
- data/bin/server-build-messenger +0 -27
- data/bin/server-clean-cert-for +0 -15
- data/bin/server-list-responding +0 -24
- data/bin/server-start-client +0 -29
- data/bin/server-start-master +0 -26
- data/bin/server-start-node +0 -32
- data/bin/server-stop-client +0 -3
- data/bin/server-stop-master +0 -3
- data/bin/server-stop-node +0 -3
- data/bin/server-update-hosts +0 -49
- data/lib/erlang/messenger/Emakefile +0 -1
- data/lib/erlang/messenger/Makefile +0 -15
- data/lib/erlang/messenger/README +0 -5
- data/lib/erlang/messenger/Rakefile +0 -72
- data/lib/erlang/messenger/control +0 -11
- data/lib/erlang/messenger/ebin/client.app +0 -19
- data/lib/erlang/messenger/ebin/client_app.beam +0 -0
- data/lib/erlang/messenger/ebin/client_server.beam +0 -0
- data/lib/erlang/messenger/ebin/erl_crash.dump +0 -10326
- data/lib/erlang/messenger/ebin/master.app +0 -19
- data/lib/erlang/messenger/ebin/master_app.beam +0 -0
- data/lib/erlang/messenger/ebin/node.app +0 -19
- data/lib/erlang/messenger/ebin/node_app.beam +0 -0
- data/lib/erlang/messenger/ebin/packager.app +0 -19
- data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_client_old.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_client_rel-0.1.rel +0 -1
- data/lib/erlang/messenger/ebin/pm_client_supervisor.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_event_manager.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master_event_handler.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master_rel-0.1.rel +0 -1
- 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_rel-0.1.rel +0 -1
- data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_packager.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_spawner.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_strings.beam +0 -0
- data/lib/erlang/messenger/ebin/utils.beam +0 -0
- data/lib/erlang/messenger/include/defines.hrl +0 -27
- data/lib/erlang/messenger/lib/eunit/AUTHORS +0 -2
- data/lib/erlang/messenger/lib/eunit/CHANGELOG +0 -14
- data/lib/erlang/messenger/lib/eunit/COPYING +0 -504
- data/lib/erlang/messenger/lib/eunit/Makefile +0 -28
- data/lib/erlang/messenger/lib/eunit/NOTES +0 -276
- data/lib/erlang/messenger/lib/eunit/README +0 -3
- data/lib/erlang/messenger/lib/eunit/doc/edoc-info +0 -3
- data/lib/erlang/messenger/lib/eunit/doc/erlang.png +0 -0
- data/lib/erlang/messenger/lib/eunit/doc/eunit.html +0 -172
- data/lib/erlang/messenger/lib/eunit/doc/index.html +0 -17
- data/lib/erlang/messenger/lib/eunit/doc/modules-frame.html +0 -12
- data/lib/erlang/messenger/lib/eunit/doc/overview-summary.html +0 -984
- data/lib/erlang/messenger/lib/eunit/doc/overview.edoc +0 -980
- data/lib/erlang/messenger/lib/eunit/doc/packages-frame.html +0 -11
- data/lib/erlang/messenger/lib/eunit/doc/stylesheet.css +0 -55
- 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 +0 -21
- data/lib/erlang/messenger/lib/eunit/ebin/eunit.appup +0 -1
- 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 +0 -339
- data/lib/erlang/messenger/lib/eunit/examples/fib.erl +0 -19
- data/lib/erlang/messenger/lib/eunit/examples/tests.txt +0 -1
- data/lib/erlang/messenger/lib/eunit/include/eunit.hrl +0 -313
- data/lib/erlang/messenger/lib/eunit/src/Makefile +0 -46
- data/lib/erlang/messenger/lib/eunit/src/autoload.erl +0 -388
- data/lib/erlang/messenger/lib/eunit/src/code_monitor.erl +0 -243
- data/lib/erlang/messenger/lib/eunit/src/eunit.app.src +0 -21
- data/lib/erlang/messenger/lib/eunit/src/eunit.appup.src +0 -1
- data/lib/erlang/messenger/lib/eunit/src/eunit.erl +0 -196
- data/lib/erlang/messenger/lib/eunit/src/eunit_autoexport.erl +0 -102
- data/lib/erlang/messenger/lib/eunit/src/eunit_data.erl +0 -798
- data/lib/erlang/messenger/lib/eunit/src/eunit_internal.hrl +0 -48
- data/lib/erlang/messenger/lib/eunit/src/eunit_lib.erl +0 -682
- data/lib/erlang/messenger/lib/eunit/src/eunit_proc.erl +0 -552
- data/lib/erlang/messenger/lib/eunit/src/eunit_serial.erl +0 -157
- data/lib/erlang/messenger/lib/eunit/src/eunit_server.erl +0 -340
- data/lib/erlang/messenger/lib/eunit/src/eunit_striptests.erl +0 -64
- data/lib/erlang/messenger/lib/eunit/src/eunit_test.erl +0 -334
- data/lib/erlang/messenger/lib/eunit/src/eunit_tests.erl +0 -45
- data/lib/erlang/messenger/lib/eunit/src/eunit_tty.erl +0 -272
- data/lib/erlang/messenger/lib/eunit/src/file_monitor.erl +0 -409
- data/lib/erlang/messenger/lib/eunit/sys.config +0 -9
- data/lib/erlang/messenger/lib/eunit/vsn.mk +0 -1
- data/lib/erlang/messenger/pm_client_rel-0.1.boot +0 -0
- data/lib/erlang/messenger/pm_client_rel-0.1.script +0 -238
- data/lib/erlang/messenger/pm_master_rel-0.1.boot +0 -0
- data/lib/erlang/messenger/pm_master_rel-0.1.script +0 -239
- data/lib/erlang/messenger/pm_node_rel-0.1.boot +0 -0
- data/lib/erlang/messenger/pm_node_rel-0.1.script +0 -237
- data/lib/erlang/messenger/src/client_app.erl +0 -39
- data/lib/erlang/messenger/src/client_server.erl +0 -60
- data/lib/erlang/messenger/src/master_app.erl +0 -39
- data/lib/erlang/messenger/src/node_app.erl +0 -39
- data/lib/erlang/messenger/src/pm_client.erl +0 -49
- data/lib/erlang/messenger/src/pm_client_supervisor.erl +0 -38
- data/lib/erlang/messenger/src/pm_cluster.erl +0 -61
- data/lib/erlang/messenger/src/pm_event_manager.erl +0 -27
- data/lib/erlang/messenger/src/pm_master.erl +0 -215
- data/lib/erlang/messenger/src/pm_master_event_handler.erl +0 -72
- data/lib/erlang/messenger/src/pm_master_supervisor.erl +0 -39
- data/lib/erlang/messenger/src/pm_node.erl +0 -200
- data/lib/erlang/messenger/src/pm_node_supervisor.erl +0 -38
- data/lib/erlang/messenger/src/pm_packager.erl +0 -76
- data/lib/erlang/messenger/src/pm_spawner.erl +0 -213
- data/lib/erlang/messenger/src/pm_strings.erl +0 -11
- data/lib/erlang/messenger/src/utils.erl +0 -73
- data/lib/erlang/messenger/useful_snippets +0 -17
- data/lib/poolparty/capistrano.rb +0 -18
- data/lib/poolparty/config/postlaunchmessage.txt +0 -5
- data/lib/poolparty/dependency_resolutions/base.rb +0 -12
- data/lib/poolparty/modules/configurable.rb +0 -36
- data/lib/poolparty/modules/method_missing_sugar.rb +0 -58
- data/lib/poolparty/monitors/monitors/cpu_monitor.rb +0 -15
- data/lib/poolparty/monitors/monitors/web_monitor.rb +0 -18
- data/lib/poolparty/net/messenger.rb +0 -72
- data/lib/poolparty/net/remote.rb +0 -38
- data/lib/poolparty/net/remote_bases/ec2.rb +0 -190
- data/lib/poolparty/net/remoter.rb +0 -343
- data/lib/poolparty/plugins/deploydirectory.rb +0 -71
- data/lib/poolparty/plugins/line.rb +0 -77
- data/lib/poolparty/plugins/rsyncmirror.rb +0 -26
- data/lib/poolparty/poolparty/custom_resource.rb +0 -45
- data/lib/poolparty/poolparty/resources/class_package.rb +0 -105
- data/lib/poolparty/poolparty/resources/conditional.rb +0 -67
- data/lib/poolparty/poolparty/resources/cron.rb +0 -14
- data/lib/poolparty/poolparty/resources/custom_service.rb +0 -30
- data/lib/poolparty/poolparty/resources/directory.rb +0 -26
- data/lib/poolparty/poolparty/resources/exec.rb +0 -28
- data/lib/poolparty/poolparty/resources/file.rb +0 -23
- data/lib/poolparty/poolparty/resources/gem_package.rb +0 -52
- data/lib/poolparty/poolparty/resources/host.rb +0 -14
- data/lib/poolparty/poolparty/resources/mount.rb +0 -22
- data/lib/poolparty/poolparty/resources/package.rb +0 -24
- data/lib/poolparty/poolparty/resources/remote_file.rb +0 -26
- data/lib/poolparty/poolparty/resources/service.rb +0 -21
- data/lib/poolparty/poolparty/resources/sshkey.rb +0 -23
- data/lib/poolparty/poolparty/resources/symlink.rb +0 -25
- data/lib/poolparty/poolparty/resources/variable.rb +0 -32
- data/lib/poolparty/provisioners/capistrano/capistrano.rb +0 -127
- data/lib/poolparty/provisioners/capistrano/capistrano_configurer.rb +0 -58
- data/lib/poolparty/provisioners/capistrano/recipies/base.rb +0 -104
- data/lib/poolparty/provisioners/capistrano/recipies/master.rb +0 -121
- data/lib/poolparty/provisioners/capistrano/recipies/slave.rb +0 -12
- data/lib/poolparty/provisioners/provisioner_base.rb +0 -204
- data/lib/poolparty/spec/core/string.rb +0 -16
- data/lib/poolparty/spec/matchers/a_spec_extensions_base.rb +0 -26
- data/lib/poolparty/spec/matchers/have_cron.rb +0 -28
- data/lib/poolparty/spec/matchers/have_deploydirectory.rb +0 -15
- data/lib/poolparty/spec/matchers/have_directory.rb +0 -31
- data/lib/poolparty/spec/matchers/have_exec.rb +0 -28
- data/lib/poolparty/spec/matchers/have_file.rb +0 -28
- data/lib/poolparty/spec/matchers/have_gempackage.rb +0 -28
- data/lib/poolparty/spec/matchers/have_git.rb +0 -28
- data/lib/poolparty/spec/matchers/have_host.rb +0 -28
- data/lib/poolparty/spec/matchers/have_mount.rb +0 -28
- data/lib/poolparty/spec/matchers/have_package.rb +0 -28
- data/lib/poolparty/spec/matchers/have_remotefile.rb +0 -28
- data/lib/poolparty/spec/matchers/have_rsyncmirror.rb +0 -28
- data/lib/poolparty/spec/matchers/have_service.rb +0 -28
- data/lib/poolparty/spec/matchers/have_sshkey.rb +0 -28
- data/lib/poolparty/spec/matchers/have_symlink.rb +0 -28
- data/lib/poolparty/spec/matchers/have_variable.rb +0 -32
- data/lib/poolparty/spec/spec/dynamic_matchers.rb +0 -63
- data/lib/poolparty/spec/spec/ensure_matchers_exist.rb +0 -7
- data/lib/poolparty/spec/templates/have_base.rb +0 -28
- data/lib/poolparty/templates/puppet.conf +0 -26
- data/lib/poolparty/templates/puppetcleaner +0 -12
- data/lib/poolparty/templates/puppetrerun +0 -22
- data/lib/poolparty/version.rb +0 -9
- data/lib/poolpartyspec.rb +0 -34
- data/log/pool.log +0 -0
- data/poolparty.gemspec +0 -580
- data/spec/poolparty/dependency_resolutions/base_spec.rb +0 -11
- data/spec/poolparty/modules/configurable_spec.rb +0 -29
- data/spec/poolparty/net/log/pool.log +0 -0
- data/spec/poolparty/net/messenger_spec.rb +0 -16
- data/spec/poolparty/plugins/svn_spec.rb +0 -16
- data/spec/poolparty/poolparty/custom_resource_spec.rb +0 -120
- data/spec/poolparty/poolparty/resources/class_package_spec.rb +0 -120
- data/spec/poolparty/poolparty/resources/conditional_spec.rb +0 -77
- data/spec/poolparty/poolparty/resources/cron_spec.rb +0 -50
- data/spec/poolparty/poolparty/resources/directory_spec.rb +0 -40
- data/spec/poolparty/poolparty/resources/exec_spec.rb +0 -37
- data/spec/poolparty/poolparty/resources/file_spec.rb +0 -40
- data/spec/poolparty/poolparty/resources/gem_spec.rb +0 -46
- data/spec/poolparty/poolparty/resources/host_spec.rb +0 -28
- data/spec/poolparty/poolparty/resources/package_spec.rb +0 -44
- data/spec/poolparty/poolparty/resources/remote_file_spec.rb +0 -40
- data/spec/poolparty/poolparty/resources/service_spec.rb +0 -45
- data/spec/poolparty/poolparty/resources/sshkey_spec.rb +0 -48
- data/spec/poolparty/poolparty/resources/symlink_spec.rb +0 -22
- data/spec/poolparty/poolparty/resources/user_spec.rb +0 -38
- data/spec/poolparty/poolparty/resources/variable_spec.rb +0 -24
- data/spec/poolparty/provisioners/capistrano/capistrano_spec.rb +0 -27
- data/spec/poolparty/provisioners/provisioner_base_spec.rb +0 -120
- data/spec/poolparty/spec/core/string_spec.rb +0 -57
- data/website/index.html +0 -107
- data/website/index.txt +0 -95
- data/website/stylesheets/code.css +0 -29
|
@@ -1,343 +0,0 @@
|
|
|
1
|
-
=begin rdoc
|
|
2
|
-
This module is included by the remote module and defines the remoting methods
|
|
3
|
-
that the clouds can use to rsync or run remote commands
|
|
4
|
-
=end
|
|
5
|
-
module PoolParty
|
|
6
|
-
module Remote
|
|
7
|
-
module Remoter
|
|
8
|
-
def rsync_storage_files_to_command(remote_instance)
|
|
9
|
-
#TODO: rsync_to_command("#{Base.storage_directory}/", Base.remote_storage_path, remote_storage_path) if remote_instance
|
|
10
|
-
"#{rsync_command} #{Base.storage_directory}/ #{remote_instance.ip}:#{Base.remote_storage_path}" if remote_instance
|
|
11
|
-
end
|
|
12
|
-
# rsync a file to a node. By default to the master node.
|
|
13
|
-
def rsync_to_command(source, target=source, remote_instance=master)
|
|
14
|
-
"#{rsync_command} #{source} #{remote_instance.ip}:#{target}"
|
|
15
|
-
end
|
|
16
|
-
def run_command_on_command(cmd="ls -l", remote_instance=nil)
|
|
17
|
-
vputs "Running #{cmd} on #{remote_instance.name == %x[hostname].chomp ? "self (master)" : "#{remote_instance.name}"}"
|
|
18
|
-
remote_instance.name == %x[hostname].chomp ? %x[#{cmd}] : "#{ssh_command(remote_instance)} '#{cmd}'"
|
|
19
|
-
end
|
|
20
|
-
def ssh_command(remote_instance)
|
|
21
|
-
"#{ssh_string} #{remote_instance.ip}"
|
|
22
|
-
end
|
|
23
|
-
# Generic commandable strings
|
|
24
|
-
def ssh_string
|
|
25
|
-
(["ssh"] << ssh_array).join(" ")
|
|
26
|
-
end
|
|
27
|
-
# Array of ssh options
|
|
28
|
-
# Includes StrictHostKeyChecking to no
|
|
29
|
-
# Ssh with the user in Base
|
|
30
|
-
# And including the keypair_path
|
|
31
|
-
# "-l '#{Base.user}'",
|
|
32
|
-
def ssh_array
|
|
33
|
-
["-o StrictHostKeyChecking=no", "-l #{Base.user}", '-i "'+full_keypair_path+'"']
|
|
34
|
-
end
|
|
35
|
-
def rsync_command
|
|
36
|
-
"rsync -azP --exclude cache -e '#{ssh_string} -l #{Base.user}'"
|
|
37
|
-
end
|
|
38
|
-
def remote_ssh_array
|
|
39
|
-
["-o StrictHostKeyChecking=no", "-l '#{Base.user}'", '-i "'+remote_keypair_path+'"']
|
|
40
|
-
end
|
|
41
|
-
def remote_ssh_string
|
|
42
|
-
(["ssh"] << remote_ssh_array).join(" ")
|
|
43
|
-
end
|
|
44
|
-
def remote_rsync_command
|
|
45
|
-
"rsync -azP --exclude cache -e '#{remote_ssh_string}'"
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
# def scp_command(source, dest=target, remote_instance=master)
|
|
50
|
-
# #TODO: check if source is Directory and add -r if it is
|
|
51
|
-
# "scp #{source} #{remote_instance.ip}:#{dest} #{ssh_array.join(' ')}"
|
|
52
|
-
# end
|
|
53
|
-
|
|
54
|
-
# Get the names of the nodes. Mainly used for puppet templating
|
|
55
|
-
def list_of_node_names(options={})
|
|
56
|
-
list_of_running_instances.collect {|ri| ri.name }
|
|
57
|
-
end
|
|
58
|
-
# An array of node ips. Mainly used for puppet templating
|
|
59
|
-
def list_of_node_ips(options={})
|
|
60
|
-
list_of_running_instances.collect {|ri| ri.ip }
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# Get the instance first instance file that exists on the system from the expected places
|
|
64
|
-
# denoted in the local_instances_list_file_locations
|
|
65
|
-
def get_working_listing_file
|
|
66
|
-
local_instances_list_file_locations.reject {|f| f unless File.file?(f) }.first
|
|
67
|
-
end
|
|
68
|
-
# Expected places for the instances.list to be located at on the machine
|
|
69
|
-
def local_instances_list_file_locations
|
|
70
|
-
[
|
|
71
|
-
"#{Base.storage_directory}/#{name}-instances.list",
|
|
72
|
-
"#{Base.base_config_directory}/#{name}-instances.list",
|
|
73
|
-
"~/.#{name}-instances.list",
|
|
74
|
-
"~/#{name}-instances.list",
|
|
75
|
-
"#{name}-instances.list"
|
|
76
|
-
]
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# List calculation methods
|
|
80
|
-
#
|
|
81
|
-
# Are the minimum number of instances running?
|
|
82
|
-
def minimum_number_of_instances_are_running?
|
|
83
|
-
list_of_running_instances.size >= minimum_instances.to_i
|
|
84
|
-
end
|
|
85
|
-
# Are the minimum number of instances NOT running?
|
|
86
|
-
def minimum_number_of_instances_are_not_running?
|
|
87
|
-
!(minimum_number_of_instances_are_running?)
|
|
88
|
-
end
|
|
89
|
-
# Can we shutdown an instance?
|
|
90
|
-
def can_shutdown_an_instance?
|
|
91
|
-
list_of_running_instances.size > minimum_instances.to_i
|
|
92
|
-
end
|
|
93
|
-
# Are too few instances running?
|
|
94
|
-
def are_too_few_instances_running?
|
|
95
|
-
list_of_running_instances.size < minimum_instances.to_i
|
|
96
|
-
end
|
|
97
|
-
# Are there more instances than allowed?
|
|
98
|
-
def are_too_many_instances_running?
|
|
99
|
-
list_of_running_instances.size > maximum_instances.to_i
|
|
100
|
-
end
|
|
101
|
-
# Request to launch a number of instances
|
|
102
|
-
def request_launch_new_instances(num=1)
|
|
103
|
-
out = []
|
|
104
|
-
num.times {out << launch_new_instance!}
|
|
105
|
-
out
|
|
106
|
-
end
|
|
107
|
-
def request_launch_master_instance
|
|
108
|
-
@inst = launch_new_instance!
|
|
109
|
-
wait "5.seconds"
|
|
110
|
-
when_no_pending_instances do
|
|
111
|
-
vputs "Master has launched"
|
|
112
|
-
reset!
|
|
113
|
-
after_launch_master(@inst)
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
def after_launch_master(inst=nil)
|
|
117
|
-
vputs "After launch master in remoter"
|
|
118
|
-
end
|
|
119
|
-
# Let's terminate an instance that is not the master instance
|
|
120
|
-
def request_termination_of_non_master_instance
|
|
121
|
-
inst = nonmaster_nonterminated_instances.last
|
|
122
|
-
terminate_instance!(inst.instance_id) if inst
|
|
123
|
-
end
|
|
124
|
-
# Can we start a new instance?
|
|
125
|
-
def can_start_a_new_instance?
|
|
126
|
-
maximum_number_of_instances_are_not_running? && list_of_pending_instances.size == 0
|
|
127
|
-
end
|
|
128
|
-
# Are the maximum number of instances not running?
|
|
129
|
-
def maximum_number_of_instances_are_not_running?
|
|
130
|
-
list_of_running_instances.size < maximum_instances.to_i
|
|
131
|
-
end
|
|
132
|
-
# Are the maximum number of instances running?
|
|
133
|
-
def maximum_number_of_instances_are_running?
|
|
134
|
-
list_of_running_instances.size >= maximum_instances.to_i
|
|
135
|
-
end
|
|
136
|
-
# Launch new instance while waiting for the number of pending instances
|
|
137
|
-
# to be zero before actually launching. This ensures that we only
|
|
138
|
-
# launch one instance at a time
|
|
139
|
-
def request_launch_one_instance_at_a_time
|
|
140
|
-
when_no_pending_instances { launch_new_instance! }
|
|
141
|
-
end
|
|
142
|
-
# A convenience method for waiting until there are no more
|
|
143
|
-
# pending instances and then running the block
|
|
144
|
-
def when_no_pending_instances(&block)
|
|
145
|
-
reset!
|
|
146
|
-
if list_of_pending_instances.size == 0
|
|
147
|
-
block.call if block
|
|
148
|
-
else
|
|
149
|
-
vprint "."
|
|
150
|
-
wait "5.seconds"
|
|
151
|
-
when_no_pending_instances(&block)
|
|
152
|
-
end
|
|
153
|
-
end
|
|
154
|
-
# A convenience method for waiting until all the instances have an ip
|
|
155
|
-
# assigned to them. This is useful when shifting the ip addresses
|
|
156
|
-
# around on the instances
|
|
157
|
-
def when_all_assigned_ips(&block)
|
|
158
|
-
reset!
|
|
159
|
-
if list_of_nonterminated_instances.select {|a| a.ip == "not.assigned" }.empty?
|
|
160
|
-
block.call if block
|
|
161
|
-
else
|
|
162
|
-
vprint "."
|
|
163
|
-
wait "5.seconds"
|
|
164
|
-
when_all_assigned_ips(&block)
|
|
165
|
-
end
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
# This will launch the minimum_instances if the minimum number of instances are not running
|
|
169
|
-
# If the minimum number of instances are not running and if we can start a new instance
|
|
170
|
-
def launch_minimum_number_of_instances
|
|
171
|
-
if can_start_a_new_instance? && !minimum_number_of_instances_are_running?
|
|
172
|
-
list_of_pending_instances.size == 0 ? request_launch_one_instance_at_a_time : wait("5.seconds")
|
|
173
|
-
reset!
|
|
174
|
-
launch_minimum_number_of_instances
|
|
175
|
-
provision_slaves_from_n(minimum_instances.to_i)
|
|
176
|
-
after_launched
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
def provision_slaves_from_n(num=1)
|
|
181
|
-
vputs "In provision_slaves_from_n: #{num}"
|
|
182
|
-
reset!
|
|
183
|
-
when_no_pending_instances do
|
|
184
|
-
vputs "Waiting for 10 seconds"
|
|
185
|
-
wait "10.seconds" # Give some time for ssh to startup
|
|
186
|
-
@num_instances = list_of_running_instances.size
|
|
187
|
-
vputs "(@num_instances - (num))..(@num_instances): #{(@num_instances - (num))..(@num_instances)}"
|
|
188
|
-
last_instances = nonmaster_nonterminated_instances[(@num_instances - (num))..(@num_instances)]
|
|
189
|
-
last_instances.each do |inst|
|
|
190
|
-
vputs "Provision slave: #{inst}"
|
|
191
|
-
# hide_output {PoolParty::Provisioner.process_clean_reconfigure_for!(inst, self)}
|
|
192
|
-
# PoolParty::Provisioner.provision_slave(inst, self, false) unless inst.master? rescue vputs "Error"
|
|
193
|
-
verbose ? provisioner_for(inst).install(testing) : hide_output { provisioner_for(inst).install(testing) }
|
|
194
|
-
# hide_output {PoolParty::Provisioner.process_clean_reconfigure_for!(inst, self)}
|
|
195
|
-
# cmd = ". /etc/profile && cloud-provision -i #{inst.name.gsub(/node/, '')} &"
|
|
196
|
-
# vputs "Provision slave with command #{cmd}"
|
|
197
|
-
end
|
|
198
|
-
# PoolParty::Provisioner.reconfigure_master(self)
|
|
199
|
-
end
|
|
200
|
-
end
|
|
201
|
-
# Launch the master and let the master handle the starting of the cloud
|
|
202
|
-
# We should only launch an instance if there are no pending instances, in the case
|
|
203
|
-
# that the master has launched, but is still pending
|
|
204
|
-
# and if the master is not running AND we can start a new instance
|
|
205
|
-
# Then wait for the master to launch
|
|
206
|
-
def launch_and_configure_master!(testing=false)
|
|
207
|
-
vputs "Requesting to launch new instance"
|
|
208
|
-
log.debug "Launching master"
|
|
209
|
-
request_launch_master_instance if list_of_pending_instances.size.zero? && can_start_a_new_instance? && !is_master_running? && !testing
|
|
210
|
-
reset!
|
|
211
|
-
unless testing
|
|
212
|
-
vputs ""
|
|
213
|
-
vputs "Waiting for there to be no pending instances..."
|
|
214
|
-
when_no_pending_instances do
|
|
215
|
-
when_all_assigned_ips {wait "20.seconds"}
|
|
216
|
-
vputs ""
|
|
217
|
-
vputs "Provisioning master..."
|
|
218
|
-
# cleanup_storage_directory
|
|
219
|
-
@provisioner = PoolParty::Provisioner::Capistrano.new(master, self, :ubuntu)
|
|
220
|
-
verbose ? @provisioner.install(testing) : hide_output { @provisioner.install(testing) }
|
|
221
|
-
|
|
222
|
-
after_launched
|
|
223
|
-
end
|
|
224
|
-
end
|
|
225
|
-
end
|
|
226
|
-
def list_of_nodes_exceeding_minimum_runtime
|
|
227
|
-
list_of_running_instances.reject{|i| i.elapsed_runtime < minimum_runtime}
|
|
228
|
-
end
|
|
229
|
-
def are_any_nodes_exceeding_minimum_runtime?
|
|
230
|
-
!list_of_nodes_exceeding_minimum_runtime.blank?
|
|
231
|
-
end
|
|
232
|
-
def is_master_running?
|
|
233
|
-
!list_of_running_instances.select {|a| a.name == "master"}.first.nil?
|
|
234
|
-
end
|
|
235
|
-
# Stub method for the time being to handle expansion of the cloud
|
|
236
|
-
def should_expand_cloud?(force=false)
|
|
237
|
-
(are_too_few_instances_running? || are_expansion_rules_valid? ) || force || false
|
|
238
|
-
end
|
|
239
|
-
def are_expansion_rules_valid?
|
|
240
|
-
valid_rules?(:expand_when)
|
|
241
|
-
end
|
|
242
|
-
# Stub method for the time being to handle the contraction of the cloud
|
|
243
|
-
def should_contract_cloud?(force=false)
|
|
244
|
-
return true if force
|
|
245
|
-
((are_any_nodes_exceeding_minimum_runtime? and are_too_many_instances_running?) || are_contraction_rules_valid?) || false
|
|
246
|
-
end
|
|
247
|
-
def are_contraction_rules_valid?
|
|
248
|
-
valid_rules?(:contract_when)
|
|
249
|
-
end
|
|
250
|
-
# Expand the cloud
|
|
251
|
-
# If we can start a new instance and the load requires us to expand
|
|
252
|
-
# the cloud, then we should request_launch_new_instances
|
|
253
|
-
# Wait for the instance to boot up and when it does come back
|
|
254
|
-
# online, then provision it as a slave, this way, it is ready for action from the
|
|
255
|
-
# get go
|
|
256
|
-
def expand_cloud_if_necessary(force=false)
|
|
257
|
-
if can_start_a_new_instance? && should_expand_cloud?(force)
|
|
258
|
-
vputs "Expanding the cloud based on load"
|
|
259
|
-
@num = 1
|
|
260
|
-
@num.times do |i|
|
|
261
|
-
list_of_pending_instances.size == 0 ? request_launch_one_instance_at_a_time : wait("5.seconds")
|
|
262
|
-
reset!
|
|
263
|
-
vputs "request_launch_new_instances: #{@num}"
|
|
264
|
-
provision_slaves_from_n(@num)
|
|
265
|
-
after_launched
|
|
266
|
-
end
|
|
267
|
-
end
|
|
268
|
-
end
|
|
269
|
-
# Contract the cloud
|
|
270
|
-
# If we can shutdown an instnace and the load allows us to contract
|
|
271
|
-
# the cloud, then we should request_termination_of_non_master_instance
|
|
272
|
-
def contract_cloud_if_necessary(force=false)
|
|
273
|
-
if can_shutdown_an_instance? && should_contract_cloud?(force)
|
|
274
|
-
vputs "Shrinking the cloud by 1"
|
|
275
|
-
before_shutdown
|
|
276
|
-
request_termination_of_non_master_instance
|
|
277
|
-
end
|
|
278
|
-
end
|
|
279
|
-
|
|
280
|
-
# Callbacks
|
|
281
|
-
|
|
282
|
-
# After launch callback
|
|
283
|
-
# This is called after a new instance is launched
|
|
284
|
-
def after_launched(force=false)
|
|
285
|
-
end
|
|
286
|
-
|
|
287
|
-
# Before shutdown callback
|
|
288
|
-
# This is called before the cloud is contracted
|
|
289
|
-
def before_shutdown
|
|
290
|
-
end
|
|
291
|
-
|
|
292
|
-
# Rsync a file or directory to a node. Rsync to master by default
|
|
293
|
-
def rsync_to(source, target=source, num=0)
|
|
294
|
-
str = "#{rsync_to_command(source, target, get_instance_by_number( num ))}"
|
|
295
|
-
vputs "Running: #{str}"
|
|
296
|
-
verbose ? Kernel.system(str) : hide_output {Kernel.system str}
|
|
297
|
-
end
|
|
298
|
-
|
|
299
|
-
# Rsync command to the instance
|
|
300
|
-
def rsync_storage_files_to(instance=nil)
|
|
301
|
-
hide_output {Kernel.system "#{rsync_storage_files_to_command(instance)}" if instance}
|
|
302
|
-
end
|
|
303
|
-
# Take the rsync command and execute it on the system
|
|
304
|
-
# if there is an instance given
|
|
305
|
-
def run_command_on(cmd, instance=nil)
|
|
306
|
-
Kernel.system "#{run_command_on_command(cmd, instance)}" if instance
|
|
307
|
-
end
|
|
308
|
-
|
|
309
|
-
# Ssh into the instance given
|
|
310
|
-
def ssh_into(instance=nil)
|
|
311
|
-
cmd = "#{ssh_command(instance)}"
|
|
312
|
-
vputs "Running #{cmd}"
|
|
313
|
-
Kernel.system cmd if instance
|
|
314
|
-
end
|
|
315
|
-
# Find the instance by the number given
|
|
316
|
-
# and then ssh into the instance
|
|
317
|
-
def ssh_into_instance_number(num=0)
|
|
318
|
-
ssh_into( get_instance_by_number( num || 0 ) )
|
|
319
|
-
end
|
|
320
|
-
|
|
321
|
-
# Run command on the instance by the number
|
|
322
|
-
def run_command_on_instance_number(cmd="ls -l", num=0)
|
|
323
|
-
run_command_on(cmd, get_instance_by_number( num || 0 ) )
|
|
324
|
-
end
|
|
325
|
-
|
|
326
|
-
# Prepare reconfiguration on the master
|
|
327
|
-
# TODO: Curious about the puppet/ssl problems...
|
|
328
|
-
# puppetd --test --no-daemonize 2>&1 &
|
|
329
|
-
# rm -rf /etc/puppet/ssl/*;
|
|
330
|
-
def prepare_reconfiguration
|
|
331
|
-
unless @prepared
|
|
332
|
-
# cmd = "/etc/init.d/puppetmaster restart"
|
|
333
|
-
# run_command_on(cmd, master)
|
|
334
|
-
@prepared = true
|
|
335
|
-
end
|
|
336
|
-
end
|
|
337
|
-
|
|
338
|
-
def self.included(receiver)
|
|
339
|
-
receiver.extend self
|
|
340
|
-
end
|
|
341
|
-
end
|
|
342
|
-
end
|
|
343
|
-
end
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
=begin rdoc
|
|
2
|
-
DeployDirectory
|
|
3
|
-
|
|
4
|
-
Deploy directory will tar.gz a local directory and sync it up to
|
|
5
|
-
the master instance of the cloud. This enables you to send a directory
|
|
6
|
-
up to the cloud and let the master host it for the remote slaves
|
|
7
|
-
=end
|
|
8
|
-
module PoolParty
|
|
9
|
-
class Deploydirectory
|
|
10
|
-
|
|
11
|
-
virtual_resource(:deploydirectory) do
|
|
12
|
-
|
|
13
|
-
def loaded(opts={}, parent=self)
|
|
14
|
-
package_directory
|
|
15
|
-
unpack_directory
|
|
16
|
-
sync_directories
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def package_directory
|
|
20
|
-
path = ::File.join( Base.tmp_path, "#{::File.basename(from_dir)}.tar.gz" )
|
|
21
|
-
archive_name = "#{::File.basename(name).dir_safe}.tar.gz"
|
|
22
|
-
cmd = "cd #{::File.expand_path(from_dir)} && tar -czf #{archive_name} . && mv #{archive_name} #{Base.tmp_path}"
|
|
23
|
-
Kernel.system(cmd) unless testing
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def unpack_directory
|
|
27
|
-
execute_on_master do
|
|
28
|
-
has_exec({:name => "deploy-directory-#{name}", :requires => get_directory("#{cwd}"), :cwd => cwd}) do
|
|
29
|
-
# && rm #{Base.tmp_path}/#{parent.name.dir_safe}.tar.gz
|
|
30
|
-
archive_name = "#{::File.basename(name).dir_safe}.tar.gz"
|
|
31
|
-
command "cd #{cwd}; tar -zxf #{Base.remote_storage_path}/#{archive_name}; rm #{Base.remote_storage_path}/#{archive_name}; chown #{owner} #{::File.basename(name).dir_safe}"
|
|
32
|
-
onlyif "test -f #{Base.remote_storage_path}/#{archive_name}"
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def sync_directories
|
|
38
|
-
execute_on_node do
|
|
39
|
-
has_rsyncmirror(:dir => cwd, :name => "deploydirectory-#{name}")
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def from(dir)
|
|
44
|
-
from_dir (dir.include?(" ") ? dir.gsub(/[ ]/, '') : dir)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def to(dir)
|
|
48
|
-
cwd dir
|
|
49
|
-
name dir
|
|
50
|
-
has_directory(:name => "#{dir}",
|
|
51
|
-
:requires => get_directory("#{::File.dirname(dir)}"),
|
|
52
|
-
:owner => owner,
|
|
53
|
-
:mode => mode)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# Since git is not a native type, we have to say which core resource
|
|
57
|
-
# it is using to be able to require it
|
|
58
|
-
def class_type_name
|
|
59
|
-
"exec"
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# Because we are requiring an exec, instead of a built-in package of the git, we have to overload
|
|
63
|
-
# the to_s method and prepend it with the same name as above
|
|
64
|
-
def key
|
|
65
|
-
"deploy-directory-#{name}"
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
end
|
|
71
|
-
end
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
module PoolParty
|
|
2
|
-
class Line
|
|
3
|
-
|
|
4
|
-
define_resource(:line_in_file) do
|
|
5
|
-
# Should refactor
|
|
6
|
-
def has_line_in_file(line="line_in_file", file="file", opts={})
|
|
7
|
-
call_custom_function <<-EOE
|
|
8
|
-
line {
|
|
9
|
-
'#{file}_line' :
|
|
10
|
-
file => '#{file}',
|
|
11
|
-
line => '#{line}',
|
|
12
|
-
#{opts.flush_out("\t", ",")}
|
|
13
|
-
ensure => 'present'
|
|
14
|
-
}
|
|
15
|
-
EOE
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def append_if_no_such_line(line="line", file="", refreshonly='false')
|
|
19
|
-
call_custom_function <<-EOE
|
|
20
|
-
append_if_no_such_line {
|
|
21
|
-
'#{file}' :
|
|
22
|
-
file => '#{file}',
|
|
23
|
-
line => '#{line}',
|
|
24
|
-
refreshonly => #{refreshonly}
|
|
25
|
-
}
|
|
26
|
-
EOE
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def delete_lines_from(file="", pattern=//, opts={})
|
|
30
|
-
call_custom_function <<-EOE
|
|
31
|
-
delete_lines {
|
|
32
|
-
'#{file}' :
|
|
33
|
-
file => '#{file}',
|
|
34
|
-
#{opts.flush_out("\t", ",")}
|
|
35
|
-
pattern => '#{pattern}'
|
|
36
|
-
}
|
|
37
|
-
EOE
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
custom_function <<-EOF
|
|
42
|
-
define line($file, $line, $ensure = 'present', $notify=[]) {
|
|
43
|
-
case $ensure {
|
|
44
|
-
default: { err ( "unknown ensure value ${ensure}" ) }
|
|
45
|
-
present: {
|
|
46
|
-
exec {
|
|
47
|
-
"/usr/bin/env echo '${line}' >> '${file}'": unless => "/usr/bin/env grep -qFx '${line}' '${file}'",
|
|
48
|
-
notify => $notify
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
absent: {
|
|
52
|
-
exec {
|
|
53
|
-
"/usr/bin/env sed -i '' -e '/^${line}\$/d' '${file}'": onlyif => "/usr/bin/env grep -qFx '${line}' '${file}'",
|
|
54
|
-
notify => $notify
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
define append_if_no_such_line($file, $line, $refreshonly = 'false') {
|
|
60
|
-
exec { "/bin/echo '$line' >> '$file'":
|
|
61
|
-
unless => "/bin/grep -Fxqe '$line' '$file'",
|
|
62
|
-
path => "/bin",
|
|
63
|
-
refreshonly => $refreshonly,
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
define delete_lines($file, $pattern) {
|
|
68
|
-
exec { "sed -i -r -e '/$pattern/d' $file":
|
|
69
|
-
path => "/bin",
|
|
70
|
-
onlyif => "/bin/grep -E '$pattern' '$file'",
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
EOF
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
end
|
|
77
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module PoolParty
|
|
2
|
-
class Rsyncmirror
|
|
3
|
-
|
|
4
|
-
virtual_resource(:rsyncmirror) do
|
|
5
|
-
|
|
6
|
-
def loaded(opts={}, parent=self)
|
|
7
|
-
@parent = parent
|
|
8
|
-
has_exec(opts.merge({:command => "#{cloud.remote_rsync_command} --no-implied-dirs --delete-excluded #{Base.user}@master:#{dir}/ #{dir}/".safe_quote, :name => "rsync-#{name}"}))
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
# Since git is not a native type, we have to say which core resource
|
|
12
|
-
# it is using to be able to require it
|
|
13
|
-
def class_type_name
|
|
14
|
-
"exec"
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# Because we are requiring an exec, instead of a built-in package of the git, we have to overload
|
|
18
|
-
# the to_s method and prepend it with the same name as above
|
|
19
|
-
def key
|
|
20
|
-
"rsync-#{name}"
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + "/resource"
|
|
2
|
-
|
|
3
|
-
module PoolParty
|
|
4
|
-
def available_custom_resources
|
|
5
|
-
$available_custom_resources ||= []
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
module Resources
|
|
9
|
-
|
|
10
|
-
def call_custom_function(str, opts={}, parent=self, &block)
|
|
11
|
-
add_resource(:call_function, opts.merge({:str => str, :name => str.keyerize}), parent, &block)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# Resources for function call
|
|
15
|
-
class CallFunction < Resource
|
|
16
|
-
def to_string(pre="")
|
|
17
|
-
returning Array.new do |arr|
|
|
18
|
-
arr << "#{pre}#{str}"
|
|
19
|
-
end.join("\n")
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
class CustomResource < Resource
|
|
24
|
-
def self.inherited(subclass)
|
|
25
|
-
PoolParty::Resources.available_custom_resources << subclass
|
|
26
|
-
super
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def to_string(pre="")
|
|
30
|
-
returning Array.new do |output|
|
|
31
|
-
output << "#{pre} # Custom Functions\n"
|
|
32
|
-
output << self.class.custom_functions_to_string(pre)
|
|
33
|
-
end.join("\n")
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# Stub methods
|
|
38
|
-
# TODO: Find a better solution
|
|
39
|
-
def custom_function(*args, &block)
|
|
40
|
-
end
|
|
41
|
-
def self.custom_function(*args, &block)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
end
|
|
45
|
-
end
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
module PoolParty
|
|
2
|
-
module Resources
|
|
3
|
-
|
|
4
|
-
def global_classpackages
|
|
5
|
-
@global_classpackage_store ||= []
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def in_global_classpackages?(name)
|
|
9
|
-
!get_from_global_classpackage_store(name).nil?
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def get_from_global_classpackage_store(key)
|
|
13
|
-
global_classpackages.select {|a| a if key == a.name }.first
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def store_into_global_classpackage_store(r)
|
|
17
|
-
arr = r.is_a?(Array) ? r : [r]
|
|
18
|
-
arr.each do |a|
|
|
19
|
-
global_classpackages << a unless in_global_classpackages?(a.name)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# Wrap all the resources into a class package from
|
|
24
|
-
def classpackage_with_self(parent=self, &block)
|
|
25
|
-
name = (parent && parent.options.name || Classpackage.name(parent).to_s).sanitize
|
|
26
|
-
if in_global_classpackages?(name)
|
|
27
|
-
returning get_from_global_classpackage_store(name) do |cls|
|
|
28
|
-
cls.run_in_context(parent, &block) if block
|
|
29
|
-
end
|
|
30
|
-
else
|
|
31
|
-
@@parent_resources = parent.resources
|
|
32
|
-
@@cp = parent.add_resource(:classpackage, parent.options.merge(:name => name), parent, &block)
|
|
33
|
-
@@cp = @@cp.is_a?(Array) ? @@cp[-1] : @@cp
|
|
34
|
-
|
|
35
|
-
@@cp.run_in_context(parent) do
|
|
36
|
-
@@parent_resources.each do |ty, res|
|
|
37
|
-
resources[ty] = res unless ty == :classpackage
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
parent.instance_eval do
|
|
41
|
-
@resources = {:classpackage => [@@cp]}
|
|
42
|
-
end
|
|
43
|
-
@@cp.instance_eval &block if block
|
|
44
|
-
|
|
45
|
-
store_into_global_classpackage_store(@@cp)
|
|
46
|
-
end
|
|
47
|
-
return @@cp
|
|
48
|
-
@@parent_resources = @@cp = nil
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
class Classpackage < Resource
|
|
52
|
-
|
|
53
|
-
default_options({
|
|
54
|
-
:name => "custom"
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
def initialize(opts={}, parent=self, &block)
|
|
58
|
-
# Take the options of the parents
|
|
59
|
-
# set_parent(parent, false) if parent
|
|
60
|
-
set_vars_from_options(opts) unless opts.empty?
|
|
61
|
-
# self.instance_eval &block if block
|
|
62
|
-
run_setup(parent, &block) if block
|
|
63
|
-
# self.run_in_context &block if block
|
|
64
|
-
# store_block(&block)
|
|
65
|
-
loaded
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def to_string(pre="")
|
|
69
|
-
if resources.size > 0 && not_printed?
|
|
70
|
-
returning Array.new do |output|
|
|
71
|
-
output << "#{pre}class #{name.sanitize.downcase} {"
|
|
72
|
-
output << "#{pre}#{resources_string_from_resources(resources)}"
|
|
73
|
-
output << "#{pre}}"
|
|
74
|
-
output << include_string
|
|
75
|
-
@not_printed = false
|
|
76
|
-
end.join("\n")
|
|
77
|
-
else
|
|
78
|
-
""
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def not_printed?
|
|
83
|
-
true
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def include_string
|
|
87
|
-
"include #{name.sanitize.downcase}"
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def virtual_resource?
|
|
91
|
-
true
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def printable?
|
|
95
|
-
false
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def self.name(parent=self)
|
|
99
|
-
"custom_#{parent ? parent.object_id.to_s : "parent"}"
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
end
|
|
105
|
-
end
|