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
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
=begin rdoc
|
|
2
|
+
ssh key used to login to remote instances
|
|
3
|
+
=end
|
|
4
|
+
module PoolParty
|
|
5
|
+
class Key
|
|
6
|
+
|
|
7
|
+
attr_accessor :filepath
|
|
8
|
+
|
|
9
|
+
# Create a new key that defaults to id_rsa as the name.
|
|
10
|
+
def initialize(fpath=nil)
|
|
11
|
+
@filepath = (fpath.nil? || fpath.empty?) ? "id_rsa" : fpath
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# If the full_filepath is nil, then the key doesn't exist
|
|
15
|
+
def exists?
|
|
16
|
+
full_filepath != nil
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Read the content of the key
|
|
20
|
+
def content
|
|
21
|
+
@content ||= exists? ? open(full_filepath).read : nil
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Returns the full_filepath of the key. If a full filepath is passed, we just return the expanded filepath
|
|
25
|
+
# for the keypair, otherwise query where it is against known locations
|
|
26
|
+
def full_filepath
|
|
27
|
+
@full_filepath ||= ::File.file?(::File.expand_path(filepath)) ? ::File.expand_path(filepath) : search_in_known_locations
|
|
28
|
+
end
|
|
29
|
+
alias :to_s :full_filepath
|
|
30
|
+
|
|
31
|
+
# Basename of the keypair
|
|
32
|
+
def basename
|
|
33
|
+
@basename ||= ::File.basename(full_filepath, ::File.extname(full_filepath)) rescue filepath
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Just the filename of the keypair
|
|
37
|
+
def filename
|
|
38
|
+
@filename ||= ::File.basename(full_filepath) rescue filepath
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Search for the key in default locations with the entire filepath
|
|
42
|
+
# if the file exists. If it doesn't exist in the default locations,
|
|
43
|
+
# then it returns nil and assumes we it doesn't exist
|
|
44
|
+
def search_in_known_locations
|
|
45
|
+
self.class.keypair_paths.each do |path|
|
|
46
|
+
full_path = ::File.join( ::File.expand_path(path), ::File.basename(filepath))
|
|
47
|
+
return full_path if ::File.exists?(full_path)
|
|
48
|
+
end
|
|
49
|
+
# raise Exception.new("We cannot continue without a keypair. Please define a keypair in your clouds.rb")
|
|
50
|
+
# TODO: Add raise for keypair
|
|
51
|
+
nil
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Default locations to search for the key
|
|
55
|
+
def self.keypair_paths
|
|
56
|
+
[
|
|
57
|
+
"#{ENV["HOME"]}/.ssh",
|
|
58
|
+
"#{Default.poolparty_home_path}/keys",
|
|
59
|
+
PoolParty::Default.base_keypair_path,
|
|
60
|
+
PoolParty::Default.base_config_directory,
|
|
61
|
+
PoolParty::Default.base_ssh_path,
|
|
62
|
+
PoolParty::Default.remote_storage_path,
|
|
63
|
+
Dir.pwd
|
|
64
|
+
]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Support to add the enumerable each to keys
|
|
68
|
+
def each
|
|
69
|
+
yield full_filepath
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Turn the keypair into the a useful json string
|
|
73
|
+
def to_json
|
|
74
|
+
"{\"basename\":\"#{basename}\",\"full_filepath\": \"/etc/poolparty/#{filename}\"}"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
end
|
|
1
|
+
#todo: Deprecate
|
|
2
|
+
# =begin rdoc
|
|
3
|
+
# A logging class to allow us to log to locations
|
|
4
|
+
# =end
|
|
5
|
+
# class Loggable
|
|
6
|
+
# def initialize
|
|
7
|
+
# self.class.loggers << file_logger
|
|
8
|
+
# file_logger.level = :info
|
|
9
|
+
# end
|
|
10
|
+
# def file_logger
|
|
11
|
+
# @file_logger ||= Logging.logger( Default.pool_logger_location, logging_opts )
|
|
12
|
+
# end
|
|
13
|
+
# def stdout_logger
|
|
14
|
+
# @stdout_logger ||= Logging.logger(STDOUT, logging_opts.merge({:pattern => "%m\n"}))
|
|
15
|
+
# end
|
|
16
|
+
# def logging_opts
|
|
17
|
+
# {:pattern => "[%d] %-l : %m\n",
|
|
18
|
+
# :date_pattern => "%Y-%m-%d %H:%M:%S.%s"}
|
|
19
|
+
# end
|
|
20
|
+
# %w(info warn debug notice).each do |meth|
|
|
21
|
+
# define_method(meth.to_sym) do |*args|
|
|
22
|
+
# self.class.loggers.each {|l| l.send meth.to_sym, args}
|
|
23
|
+
# end
|
|
24
|
+
# end
|
|
25
|
+
# def self.loggers
|
|
26
|
+
# @loggers ||= []
|
|
27
|
+
# end
|
|
28
|
+
# end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
=begin rdoc
|
|
2
|
+
Neighborhood
|
|
3
|
+
|
|
4
|
+
Neighborhoods describes the neighborhood that an instance is in.
|
|
5
|
+
Neighborhoods are instances that are "near" other instances, either by
|
|
6
|
+
association of instantiation or through monitor_rack.
|
|
7
|
+
=end
|
|
8
|
+
require "#{::File.dirname(__FILE__)}/../modules/pinger"
|
|
9
|
+
require "#{::File.dirname(__FILE__)}/../schema"
|
|
10
|
+
|
|
11
|
+
module PoolParty
|
|
12
|
+
class Neighborhoods
|
|
13
|
+
include ::PoolParty::Pinger
|
|
14
|
+
attr_reader :schema
|
|
15
|
+
|
|
16
|
+
# Create a neighborhood from a string, array or hash given.
|
|
17
|
+
def initialize(data)
|
|
18
|
+
raise Exception.new("You must pass a string or a hash to Neighborhoods") unless data
|
|
19
|
+
parsed_data = case data
|
|
20
|
+
when Array
|
|
21
|
+
{:instances => data.map {|entry| disect(entry) }}
|
|
22
|
+
when String
|
|
23
|
+
{:instances => JSON.parse(data)}#.map "#{inst["instance_id"]}\t#{inst["ip"]}"}}
|
|
24
|
+
when Hash
|
|
25
|
+
data
|
|
26
|
+
end
|
|
27
|
+
@schema = PoolParty::Schema.new(parsed_data)
|
|
28
|
+
raise Exception.new("No instances found in the Neighborhoods schema") unless @schema.instances
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Get the known instances from the neighborhood.json file on the server
|
|
32
|
+
def instances
|
|
33
|
+
@instances ||= @schema.to_hash[:instances] rescue @schema.instances.collect {|line| disect(line) }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Returns empty if the neighborhood has no instances
|
|
37
|
+
def empty?
|
|
38
|
+
instances.empty?
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Get the next node in the hash
|
|
42
|
+
def next_node(node_hash)
|
|
43
|
+
return nil if empty?
|
|
44
|
+
sort.wrapping_next(node_hash)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Sort the instances by ip string, a very basic sort
|
|
48
|
+
def sort
|
|
49
|
+
instances.sort {|a, b| a.ip <=> b.ip}
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Get the instances at the specific index of the neighborhood
|
|
53
|
+
def [](at)
|
|
54
|
+
instances[at] if at >= 0 && at < instances.size
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def disect(line)
|
|
58
|
+
case line
|
|
59
|
+
when String
|
|
60
|
+
arr = line.split("\t")
|
|
61
|
+
{:instance_id => arr[0], :ip => arr[1]}
|
|
62
|
+
else
|
|
63
|
+
line
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Run through an enumeration of the instances
|
|
68
|
+
def each(&block)
|
|
69
|
+
instances.each &block
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# TODO: Make this into something useful
|
|
73
|
+
def clump(filepath=nil)
|
|
74
|
+
out = instances.to_json
|
|
75
|
+
::File.open(filepath, "w") {|f| f << out } if filepath
|
|
76
|
+
out
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def self.clump(json, filepath=nil)
|
|
80
|
+
new(json).clump(filepath)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Load the default neighborhood.json file
|
|
84
|
+
# If the neighborhood.json file exists in
|
|
85
|
+
# /etc/poolparty/neighborhood.json
|
|
86
|
+
# then load the neighborhood from the file, otherwise
|
|
87
|
+
# if there is a butterfly server running locally,
|
|
88
|
+
# query it for the current neighborhood.
|
|
89
|
+
# Finally, return an empty set of instances
|
|
90
|
+
def self.load_default
|
|
91
|
+
if ::File.file?("/etc/poolparty/neighborhood.json")
|
|
92
|
+
new( open("/etc/poolparty/neighborhood.json").read )
|
|
93
|
+
elsif ping_port("127.0.0.1", Default.butterfly_port, 1)# butterfly responding?
|
|
94
|
+
require "open-uri"
|
|
95
|
+
new( open("http://127.0.0.1:8642/neighborhood").read )
|
|
96
|
+
else
|
|
97
|
+
new("[]")
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
end
|
|
102
|
+
end
|
|
@@ -1,33 +1,68 @@
|
|
|
1
|
+
require "#{::File.dirname(__FILE__)}/service.rb"
|
|
2
|
+
require "#{::File.dirname(__FILE__)}/../provision/boot_strapper.rb"
|
|
3
|
+
|
|
1
4
|
module PoolParty
|
|
2
|
-
|
|
3
5
|
module Plugin
|
|
4
6
|
|
|
5
|
-
class Plugin
|
|
6
|
-
include Configurable
|
|
7
|
+
class Plugin < PoolParty::Service
|
|
7
8
|
include CloudResourcer
|
|
8
|
-
include
|
|
9
|
+
include PoolParty::DependencyResolverCloudExtensions
|
|
10
|
+
include PoolParty::Callbacks
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
def initialize(opts={}, prnt=nil, &block)
|
|
13
|
+
setup_callbacks
|
|
14
|
+
|
|
15
|
+
run_in_context do
|
|
16
|
+
before_load(opts, &block)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
block = Proc.new {enable} unless block
|
|
20
|
+
|
|
21
|
+
@opts = (opts.is_a?(Hash) ? opts : {:name => opts})
|
|
22
|
+
super(opts, &block)
|
|
23
|
+
|
|
24
|
+
run_in_context do
|
|
25
|
+
loaded @opts, &block
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
after_create
|
|
29
|
+
end
|
|
11
30
|
|
|
12
|
-
|
|
31
|
+
# Overwrite this method
|
|
32
|
+
def before_load(o={}, &block)
|
|
33
|
+
end
|
|
34
|
+
def loaded(o={}, &block)
|
|
35
|
+
end
|
|
36
|
+
# Callbacks available to plugins
|
|
37
|
+
def after_create
|
|
38
|
+
end
|
|
13
39
|
|
|
14
|
-
def
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
40
|
+
def enable
|
|
41
|
+
end
|
|
42
|
+
def is_plugin?
|
|
43
|
+
true
|
|
18
44
|
end
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
force ? force_realize! : (@realized ? nil : force_realize!)
|
|
45
|
+
def cloud
|
|
46
|
+
@parent
|
|
22
47
|
end
|
|
23
48
|
|
|
24
|
-
def
|
|
25
|
-
|
|
26
|
-
|
|
49
|
+
def bootstrap_gems *gems
|
|
50
|
+
gems.each do |g|
|
|
51
|
+
Provision::BootStrapper.gem_list << g unless Provision::BootStrapper.gem_list.include?(g)
|
|
52
|
+
end
|
|
27
53
|
end
|
|
28
54
|
|
|
29
|
-
|
|
30
|
-
|
|
55
|
+
def bootstrap_commands cmds
|
|
56
|
+
Provision::BootStrapper.class_commands << cmds
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def configure_commands cmds
|
|
60
|
+
Provision::DrConfigure.class_commands << cmds
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def self.inherited(subclass)
|
|
64
|
+
method_name = subclass.to_s.top_level_class.gsub(/pool_party_/, '').gsub(/_class/, '').downcase.to_sym
|
|
65
|
+
add_has_and_does_not_have_methods_for(method_name)
|
|
31
66
|
end
|
|
32
67
|
|
|
33
68
|
end
|
|
@@ -4,7 +4,7 @@ module PoolParty
|
|
|
4
4
|
module PluginModel
|
|
5
5
|
|
|
6
6
|
def plugin(name=:plugin, cloud=nil, &block)
|
|
7
|
-
plugins
|
|
7
|
+
plugins[name] ||= PluginModel.new(name, &block)
|
|
8
8
|
end
|
|
9
9
|
alias_method :register_plugin, :plugin
|
|
10
10
|
|
|
@@ -12,34 +12,31 @@ module PoolParty
|
|
|
12
12
|
$plugins ||= {}
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
class PluginModel
|
|
16
|
-
attr_accessor :
|
|
17
|
-
include MethodMissingSugar
|
|
18
|
-
include Configurable
|
|
19
|
-
include PrettyPrinter
|
|
15
|
+
class PluginModel
|
|
16
|
+
attr_accessor :klass
|
|
20
17
|
|
|
21
|
-
def initialize(name,&block)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class_string_name = "#{name}"
|
|
25
|
-
|
|
26
|
-
# Create the class to evaluate the plugin on the implemented call
|
|
27
|
-
@klass = klass = class_string_name.class_constant(PoolParty::Plugin::Plugin)
|
|
28
|
-
mod = class_string_name.module_constant(&block)
|
|
29
|
-
|
|
30
|
-
klass.send :include, mod
|
|
18
|
+
def initialize(name,&block)
|
|
19
|
+
symc = "#{name}".top_level_class.camelcase
|
|
20
|
+
klass = symc.class_constant(PoolParty::Plugin::Plugin, {:preserve => true}, &block)
|
|
31
21
|
|
|
22
|
+
lowercase_class_name = symc.downcase
|
|
32
23
|
# Store the name of the class for pretty printing later
|
|
33
|
-
klass.name = name
|
|
24
|
+
# klass.name = name
|
|
34
25
|
# Add the plugin definition to the cloud as an instance method
|
|
35
|
-
|
|
36
|
-
def #{
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
26
|
+
meth = <<-EOM
|
|
27
|
+
def #{lowercase_class_name}(opts={}, &block)
|
|
28
|
+
i = plugin_store.select {|i| i if i.class == #{lowercase_class_name.camelcase}Class }.first if plugin_store
|
|
29
|
+
if i
|
|
30
|
+
i
|
|
31
|
+
else
|
|
32
|
+
inst = #{lowercase_class_name.camelcase}Class.new(opts, parent, &block)
|
|
33
|
+
plugin_store << inst if plugin_store
|
|
34
|
+
inst
|
|
40
35
|
end
|
|
41
36
|
end
|
|
42
|
-
|
|
37
|
+
EOM
|
|
38
|
+
|
|
39
|
+
PoolParty::Cloud::Cloud.class_eval meth
|
|
43
40
|
end
|
|
44
41
|
|
|
45
42
|
end
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
module PoolParty
|
|
2
2
|
module Pool
|
|
3
3
|
|
|
4
|
-
def pool(name
|
|
5
|
-
pools
|
|
6
|
-
end
|
|
4
|
+
def pool(name, &block)
|
|
5
|
+
pools[name] ||= Pool.new(name, &block)
|
|
6
|
+
end
|
|
7
7
|
|
|
8
8
|
def pools
|
|
9
9
|
$pools ||= {}
|
|
@@ -14,45 +14,53 @@ module PoolParty
|
|
|
14
14
|
pl.options.merge!(opts) if pl.options
|
|
15
15
|
pl.run_in_context &block if block
|
|
16
16
|
end
|
|
17
|
-
|
|
17
|
+
|
|
18
|
+
def set_pool_specfile(filename)
|
|
19
|
+
$pool_specfile = filename unless $pool_specfile
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def pool_specfile
|
|
23
|
+
$pool_specfile
|
|
24
|
+
end
|
|
25
|
+
|
|
18
26
|
def reset!
|
|
19
27
|
$pools = $clouds = $plugins = @describe_instances = nil
|
|
20
28
|
end
|
|
21
29
|
|
|
22
|
-
class Pool
|
|
23
|
-
# include PoolParty::Cloud
|
|
24
|
-
include MethodMissingSugar
|
|
25
|
-
# include PluginModel
|
|
26
|
-
include Configurable
|
|
30
|
+
class Pool < PoolParty::PoolPartyBaseClass
|
|
27
31
|
include PrettyPrinter
|
|
28
|
-
include CloudResourcer
|
|
32
|
+
include CloudResourcer # WHY?!?! TODO: check on this
|
|
29
33
|
include Remote
|
|
30
34
|
|
|
31
|
-
default_options
|
|
32
|
-
:access_key => Base.access_key,
|
|
33
|
-
:secret_access_key => Base.secret_access_key
|
|
34
|
-
})
|
|
35
|
+
default_options Default.default_options
|
|
35
36
|
|
|
36
37
|
def initialize(name,&block)
|
|
37
|
-
setup_defaults
|
|
38
38
|
@pool_name = name
|
|
39
39
|
@pool_name.freeze
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
|
|
41
|
+
::PoolParty.context_stack.clear
|
|
42
|
+
|
|
43
|
+
set_pool_specfile get_latest_caller
|
|
44
|
+
setup_defaults
|
|
45
|
+
|
|
46
|
+
super(&block)
|
|
42
47
|
end
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
def self.load_from_file(filename=nil)
|
|
49
|
+
# a = new ::File.basename(filename, ::File.extname(filename))
|
|
50
|
+
File.open(filename, 'r') do |f|
|
|
51
|
+
instance_eval f.read, pool_specfile
|
|
52
|
+
end
|
|
53
|
+
# a
|
|
54
|
+
end
|
|
55
|
+
def name(*args)
|
|
56
|
+
@pool_name ||= @pool_name ? @pool_name : (args.empty? ? :default_pool : args.first)
|
|
46
57
|
end
|
|
58
|
+
|
|
59
|
+
def parent;nil;end
|
|
47
60
|
|
|
48
|
-
def setup_defaults
|
|
49
|
-
plugin_directory "#{::File.dirname(pool_specfile ? pool_specfile : Dir.pwd)}/plugins"
|
|
61
|
+
def setup_defaults
|
|
50
62
|
PoolParty::Extra::Deployments.include_deployments "#{Dir.pwd}/deployments"
|
|
51
63
|
end
|
|
52
|
-
|
|
53
|
-
# This is where the entire process starts
|
|
54
|
-
def inflate
|
|
55
|
-
end
|
|
56
64
|
|
|
57
65
|
def pool_clouds
|
|
58
66
|
returning Array.new do |arr|
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
require "dslify"
|
|
2
|
+
require "parenting"
|
|
3
|
+
module PoolParty
|
|
4
|
+
|
|
5
|
+
def context_stack
|
|
6
|
+
$context_stack ||= []
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class PoolPartyBaseClass
|
|
10
|
+
include Dslify, Parenting
|
|
11
|
+
|
|
12
|
+
include PoolParty::DependencyResolverCloudExtensions
|
|
13
|
+
# attr_accessor :depth
|
|
14
|
+
|
|
15
|
+
def initialize(opts={}, extra_opts={}, &block)
|
|
16
|
+
add_to_parent_if_parent_exists_and_is_a_service
|
|
17
|
+
|
|
18
|
+
@init_block = block
|
|
19
|
+
@base_name = get_name_from_options_and_extra_options(opts, extra_opts)
|
|
20
|
+
|
|
21
|
+
o = (opts.is_a?(Hash) ? extra_opts.merge(opts) : extra_opts).merge(:name => @base_name)
|
|
22
|
+
|
|
23
|
+
run_in_context(o, &block)
|
|
24
|
+
super(&block)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Overloading the parent run_in_context
|
|
28
|
+
def run_in_context(o={}, &block)
|
|
29
|
+
if o
|
|
30
|
+
context_stack.push self
|
|
31
|
+
set_vars_from_options(o)
|
|
32
|
+
instance_eval &block if block
|
|
33
|
+
context_stack.pop
|
|
34
|
+
else
|
|
35
|
+
super
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Add the parent's options to my own and add myself as a service if I am not a resource
|
|
40
|
+
def add_to_parent_if_parent_exists_and_is_a_service
|
|
41
|
+
if parent && !parent.is_a?(PoolParty::Resources::Resource)
|
|
42
|
+
dsl_options.merge!(parent.dsl_options) if parent.is_a?(PoolParty::Pool::Pool)
|
|
43
|
+
parent.add_service(self) if parent.respond_to?(:add_service) && !is_a_resource?
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Try to extract the name from the options
|
|
48
|
+
def get_name_from_options_and_extra_options(opts={}, extra_opts={})
|
|
49
|
+
opts.is_a?(Hash) ? (opts.has_key?(:name) ? opts.delete(:name) : nil) : dsl_options[:name] = opts
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Add to the services pool for the manifest listing
|
|
53
|
+
def add_service(serv, extra_name="")
|
|
54
|
+
subclass = "#{serv.class.to_s.top_level_class.underscore.downcase}#{extra_name}"
|
|
55
|
+
lowercase_class_name = subclass.to_s.underscore.downcase || subclass.downcase
|
|
56
|
+
|
|
57
|
+
# (services[lowercase_class_name.to_sym] ||= []) << serv if serv && !serv.empty?
|
|
58
|
+
ordered_resources << serv
|
|
59
|
+
# services.merge!({lowercase_class_name.to_sym => serv})
|
|
60
|
+
end
|
|
61
|
+
# Container for the services
|
|
62
|
+
|
|
63
|
+
def resources
|
|
64
|
+
@resources ||= OrderedHash.new
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Add resource
|
|
68
|
+
# When we are looking to add a resource, we want to make sure the
|
|
69
|
+
# resources isn't already added. This way we prevent duplicates
|
|
70
|
+
# as puppet can be finicky about duplicate resource definitions.
|
|
71
|
+
# We'll look for the resource in either a local or global store
|
|
72
|
+
# If the resource appears in either, return that resource, we'll just append
|
|
73
|
+
# to the resource config, otherwise instantiate a new resource of the type
|
|
74
|
+
# and store it into the global and local resource stores
|
|
75
|
+
#
|
|
76
|
+
# A word about stores, the global store stores the entire list of stored
|
|
77
|
+
# resources. The local resource store is available on all clouds and plugins
|
|
78
|
+
# which stores the instance variable's local resources.
|
|
79
|
+
def add_resource(ty, opts={}, extra_opts={}, &block)
|
|
80
|
+
temp_name = get_name_from_options_and_extra_options(opts, extra_opts)
|
|
81
|
+
|
|
82
|
+
if res = get_resource(ty, temp_name, opts)
|
|
83
|
+
res
|
|
84
|
+
else
|
|
85
|
+
opts = (opts.is_a?(Hash) ? extra_opts.merge(opts) : extra_opts).merge(:name => temp_name)
|
|
86
|
+
|
|
87
|
+
# opts.merge!(:name => temp_name) unless opts.has_key?(:name)
|
|
88
|
+
res = if PoolParty::Resources::Resource.available_resources.include?(ty.to_s.camelize)
|
|
89
|
+
"PoolParty::Resources::#{ty.to_s.camelize}".camelize.constantize.new(opts, &block)
|
|
90
|
+
else
|
|
91
|
+
"#{ty.to_s.camelize}".camelize.constantize.new(opts.merge(:name), &block)
|
|
92
|
+
end
|
|
93
|
+
res.after_create
|
|
94
|
+
store_in_local_resources(ty, res)
|
|
95
|
+
ordered_resources << res
|
|
96
|
+
res
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
def store_in_local_resources(ty, obj)
|
|
100
|
+
resource(ty) << obj
|
|
101
|
+
end
|
|
102
|
+
def in_local_resources?(ty, k)
|
|
103
|
+
!resource(ty).select {|r| r.name == k }.empty? rescue false
|
|
104
|
+
end
|
|
105
|
+
def get_local_resource(ty, k)
|
|
106
|
+
resource(ty).select {|r| r.name == k }.first
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def get_resource(ty, n, opts={}, &block)
|
|
110
|
+
if in_local_resources?(ty, n)
|
|
111
|
+
get_local_resource(ty, n)
|
|
112
|
+
elsif parent && parent != self
|
|
113
|
+
parent.get_resource(ty, n)
|
|
114
|
+
else
|
|
115
|
+
nil
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Store the call and use of plugins into an array
|
|
120
|
+
def plugin_store
|
|
121
|
+
@plugin_store ||= []
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def resource(type=:file)
|
|
125
|
+
resources[type.to_sym] ||= []
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def ordered_resources
|
|
129
|
+
@ordered_resources ||= []
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def is_plugin?
|
|
133
|
+
false
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def is_a_resource?
|
|
137
|
+
false
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def method_missing(m,*a,&block)
|
|
141
|
+
if respond_to?(:this_context) && this_context != self && this_context.respond_to?(m)# && !self.is_a?(PoolParty::Resources::Resource)
|
|
142
|
+
this_context.send m, *a, &block
|
|
143
|
+
else
|
|
144
|
+
# if dsl_options.has_key?(m)
|
|
145
|
+
# dsl_options[m]
|
|
146
|
+
# elsif parent && parent.respond_to?(:dsl_options) && parent.dsl_options.has_key?(m)
|
|
147
|
+
# parent.dsl_options[m]
|
|
148
|
+
# elsif self.class.default_options.has_key?(m)
|
|
149
|
+
# self.class.default_options[m]
|
|
150
|
+
# elsif parent && parent.respond_to?(:dsl_options) && parent.default_options.has_key?(m)
|
|
151
|
+
# parent.default_options[m]
|
|
152
|
+
# else
|
|
153
|
+
super
|
|
154
|
+
# end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
# Adds two methods to the module
|
|
159
|
+
# Adds the method type:
|
|
160
|
+
# has_
|
|
161
|
+
# and
|
|
162
|
+
# does_not_have_
|
|
163
|
+
# for the type passed
|
|
164
|
+
# for instance
|
|
165
|
+
# add_has_and_does_not_have_methods_for(:file)
|
|
166
|
+
# gives you the methods has_file and does_not_have_file
|
|
167
|
+
# TODO: Refactor nicely to include other types that don't accept ensure
|
|
168
|
+
def self.add_has_and_does_not_have_methods_for(typ=:file)
|
|
169
|
+
method_name = "__#{typ}"
|
|
170
|
+
PoolParty::PoolPartyBaseClass.module_eval <<-EOE
|
|
171
|
+
def has_#{typ}(opts={}, extra={}, &block)
|
|
172
|
+
#{method_name}({:ensures => :present}.merge(handle_option_values(opts).merge(extra)), &block)
|
|
173
|
+
end
|
|
174
|
+
def does_not_have_#{typ}(opts={}, extra={}, &block)
|
|
175
|
+
#{method_name}({:ensures => :absent}.merge(handle_option_values(opts).merge(extra)), &block)
|
|
176
|
+
end
|
|
177
|
+
EOE
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def handle_option_values(o)
|
|
181
|
+
case o.class.to_s
|
|
182
|
+
when "String"
|
|
183
|
+
{:name => o}
|
|
184
|
+
else
|
|
185
|
+
o
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
end
|
|
190
|
+
end
|