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
|
@@ -6,193 +6,125 @@
|
|
|
6
6
|
|
|
7
7
|
Most of the Resources will not need to create their own
|
|
8
8
|
=end
|
|
9
|
-
module PoolParty
|
|
9
|
+
module PoolParty
|
|
10
10
|
module Resources
|
|
11
|
-
|
|
12
|
-
def resources
|
|
13
|
-
@resources ||= {}
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def resource(type=:file)
|
|
17
|
-
resources[type] ||= []
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def add_resource(type, opts={}, parent=self, &block)
|
|
21
|
-
if opts[:name] && in_a_resource_store?(type, opts[:name])
|
|
22
|
-
@res = get_from_local_resource_store(type, opts[:name], parent)
|
|
23
|
-
@res ||= get_from_global_resource_store(type, opts[:name])
|
|
24
|
-
# if should_duplicate_resource?(type, @res, parent, opts)
|
|
25
|
-
# unless @res.parent == parent
|
|
26
|
-
# @pa = parent
|
|
27
|
-
# @res.instance_eval {@parent = @pa}
|
|
28
|
-
# end
|
|
29
|
-
# parent.resource(type) << @res
|
|
30
|
-
# end
|
|
31
|
-
else
|
|
32
|
-
@res = returning "PoolParty::Resources::#{type.to_s.camelize}".camelize.constantize.new(opts, parent, &block) do |o|
|
|
33
|
-
store_into_global_resource_store(o)
|
|
34
|
-
resource(type) << o
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
@res
|
|
38
|
-
end
|
|
39
|
-
def should_duplicate_resource?(type, res, pare, opts)
|
|
40
|
-
pare != @res.parent &&
|
|
41
|
-
pare.cloud != @res.cloud &&
|
|
42
|
-
in_global_resource_store?(type, opts[:name]) &&
|
|
43
|
-
!in_resources?(type, res, pare)
|
|
44
|
-
end
|
|
45
|
-
def get_resource(ty, key, parent=self)
|
|
46
|
-
get_from_local_resource_store(ty, key, parent) || get_from_global_resource_store(ty, key)
|
|
47
|
-
end
|
|
48
|
-
def get_from_local_resource_store(type, key, parent)
|
|
49
|
-
resource(type).select {|r| r.key == key }.first
|
|
50
|
-
end
|
|
51
|
-
def in_a_resource_store?(type, key, parent=self)
|
|
52
|
-
!(get_resource(type, key) && in_global_resource_store?(type, key)).nil?
|
|
53
|
-
end
|
|
54
|
-
def in_resources?(type, key, parent=self)
|
|
55
|
-
!get_resource(type, key).nil?
|
|
56
|
-
end
|
|
57
|
-
def global_resources_store
|
|
58
|
-
$global_resources ||= []
|
|
59
|
-
end
|
|
60
|
-
def store_into_global_resource_store(r)
|
|
61
|
-
global_resources_store << r unless in_global_resource_store?(r.class_name_sym, r.key)
|
|
62
|
-
end
|
|
63
|
-
def get_from_global_resource_store(ty, key)
|
|
64
|
-
global_resources_store.select {|r| r if r.same_resources_of(ty, key) }.first
|
|
65
|
-
end
|
|
66
|
-
def in_global_resource_store?(ty, key)
|
|
67
|
-
!get_from_global_resource_store(ty, key).nil?
|
|
68
|
-
end
|
|
69
|
-
#:nodoc:
|
|
70
|
-
def reset_resources!
|
|
71
|
-
$global_resources = $global_classpackage_store = @resources = nil
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
# def resources_string(pre="")
|
|
75
|
-
# returning Array.new do |output|
|
|
76
|
-
# output << resources_string_from_resources(resources)
|
|
77
|
-
# end.join("\n")
|
|
78
|
-
# end
|
|
11
|
+
|
|
79
12
|
|
|
80
13
|
def custom_file(path, str)
|
|
81
14
|
write_to_file_in_storage_directory(path, str)
|
|
82
15
|
end
|
|
83
|
-
|
|
84
|
-
class Resource
|
|
16
|
+
|
|
17
|
+
class Resource < PoolParty::PoolPartyBaseClass
|
|
85
18
|
attr_accessor :prestring, :poststring
|
|
86
19
|
|
|
87
|
-
include CloudResourcer
|
|
88
|
-
|
|
20
|
+
# include CloudResourcer
|
|
21
|
+
|
|
89
22
|
# For the time being, we'll make puppet the only available dependency resolution
|
|
90
23
|
# base, but in the future, we can rip this out and make it an option
|
|
91
|
-
include PoolParty::DependencyResolutions::Puppet
|
|
24
|
+
# include PoolParty::DependencyResolutions::Puppet
|
|
25
|
+
include PoolParty::DependencyResolverResourceExtensions
|
|
92
26
|
|
|
93
|
-
|
|
94
|
-
include PoolParty::
|
|
27
|
+
# DSL Overriders
|
|
28
|
+
include PoolParty::ResourcingDsl
|
|
95
29
|
|
|
30
|
+
# ability to have searchable paths on resources
|
|
31
|
+
include SearchablePaths
|
|
32
|
+
|
|
33
|
+
# When we subclass Resource, we want to add a few methods to the Resources class
|
|
34
|
+
# This will anable us to call out to these resources in our DSLified manner
|
|
35
|
+
# When we call a method from the subclass, say it's the File class
|
|
36
|
+
# then we want to be able to have the method file() available.
|
|
37
|
+
# We also want to be able to fetch the resource with a get_file method.
|
|
38
|
+
# This will just call out to get the resource. If the resource isn't available
|
|
39
|
+
# in a resource store, we expect to return a nil result.
|
|
40
|
+
# Finally, the has_ and does_not_have_ methods are appended. See below for
|
|
41
|
+
# those methods. Then we make sure we add these resources as available_resources
|
|
42
|
+
# onto the class so we know it's available as a resource
|
|
96
43
|
def self.inherited(subclass)
|
|
97
44
|
subclass = subclass.to_s.split("::")[-1] if subclass.to_s.index("::")
|
|
98
45
|
lowercase_class_name = subclass.to_s.underscore.downcase || subclass.downcase
|
|
46
|
+
method_name = "__#{lowercase_class_name}".to_sym
|
|
99
47
|
|
|
100
48
|
# Add add resource method to the Resources module
|
|
101
|
-
unless PoolParty::
|
|
49
|
+
unless PoolParty::PoolPartyBaseClass.respond_to?(method_name)
|
|
102
50
|
method =<<-EOE
|
|
103
|
-
|
|
104
|
-
|
|
51
|
+
private
|
|
52
|
+
def #{method_name}(opts={}, &blk)
|
|
53
|
+
add_resource(:#{lowercase_class_name}, opts, &blk)
|
|
105
54
|
end
|
|
106
|
-
def get_#{lowercase_class_name}(n, opts={},
|
|
107
|
-
res =
|
|
108
|
-
|
|
109
|
-
nil
|
|
110
|
-
# PoolParty::Resources::Resource.resource_string_name(#{lowercase_class_name}, n)
|
|
111
|
-
# add_resource(:#{lowercase_class_name}, opts, parent, &blk)
|
|
112
|
-
# res ||= PoolParty::Resources::Resource.resource_string_name(#{lowercase_class_name}, n)
|
|
55
|
+
def get_#{lowercase_class_name}(n, opts={}, &block)
|
|
56
|
+
res = get_resource(:#{lowercase_class_name}, n, opts, &block)
|
|
57
|
+
raise PackageException.new("Oops. Check that you specified the #{lowercase_class_name} \#\{n\}.") unless res
|
|
113
58
|
res
|
|
114
59
|
end
|
|
60
|
+
public
|
|
115
61
|
EOE
|
|
116
|
-
PoolParty::
|
|
117
|
-
PoolParty::
|
|
62
|
+
PoolParty::PoolPartyBaseClass.module_eval method
|
|
63
|
+
PoolParty::PoolPartyBaseClass.add_has_and_does_not_have_methods_for(lowercase_class_name.to_sym)
|
|
118
64
|
|
|
119
65
|
available_resources << subclass
|
|
120
66
|
end
|
|
121
67
|
end
|
|
122
68
|
|
|
69
|
+
# Keep track of the resources that are available. This way we can show some pretty output
|
|
70
|
+
# later and ensure that we are only calling available resources
|
|
123
71
|
def self.available_resources
|
|
124
72
|
@available_resources ||= []
|
|
125
73
|
end
|
|
126
74
|
|
|
127
|
-
def self.available_resource_methods
|
|
128
|
-
available_resources.map {|a| a.my_methods }
|
|
129
|
-
end
|
|
130
|
-
|
|
131
75
|
# This is set in order of descending precedence
|
|
132
76
|
# The options are overwritten from the bottom up
|
|
133
77
|
# and the resource will use those as the values
|
|
134
78
|
# Then it takes the value of the block and sets whatever is sent there as
|
|
135
79
|
# the options
|
|
136
80
|
# Finally, it uses the parent's options as the lowest priority
|
|
137
|
-
def initialize(opts={},
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
81
|
+
def initialize(opts={}, extra_opts={}, &block)
|
|
82
|
+
super(opts, extra_opts, &block)
|
|
83
|
+
|
|
84
|
+
@resource_name = @base_name
|
|
85
|
+
dsl_options[:name] = resource_name unless dsl_options.has_key?(:name)
|
|
141
86
|
|
|
142
|
-
|
|
87
|
+
loaded(opts, &block)
|
|
143
88
|
|
|
144
|
-
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
# Helper to set the containing parent on the resource
|
|
148
|
-
def set_resource_parent
|
|
149
|
-
if @parent && @parent != self
|
|
150
|
-
if can_set_requires_for_parent
|
|
151
|
-
# requires @parent.to_s
|
|
152
|
-
end
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
def can_set_requires_for_parent
|
|
157
|
-
@parent.is_a?(PoolParty::Resources::Resource) &&
|
|
158
|
-
@parent.printable? &&
|
|
159
|
-
@parent.name != name &&
|
|
160
|
-
!@parent.is_a?(PoolParty::Resources::Classpackage)
|
|
89
|
+
after_create
|
|
161
90
|
end
|
|
162
91
|
|
|
163
92
|
# Stub, so you can create virtual resources
|
|
164
93
|
# This is called after the resource is initialized
|
|
165
94
|
# with the options given to it in the init-block
|
|
166
|
-
def loaded(opts={},
|
|
95
|
+
def loaded(opts={}, &block)
|
|
167
96
|
end
|
|
168
97
|
|
|
169
|
-
def
|
|
170
|
-
@
|
|
171
|
-
while !(@pa.is_a?(PoolParty::Cloud::Cloud) || @pa.nil? || @pa == self)
|
|
172
|
-
@pa = @pa.respond_to?(:parent) ? @pa.parent : nil
|
|
173
|
-
end
|
|
174
|
-
@pa
|
|
98
|
+
def resource_name
|
|
99
|
+
@resource_name ||= nil
|
|
175
100
|
end
|
|
176
101
|
|
|
177
|
-
def
|
|
178
|
-
|
|
179
|
-
returning Array.new do |arr|
|
|
180
|
-
while !(@pa.is_a?(PoolParty::Cloud::Cloud) || @pa.nil? || @pa == self)
|
|
181
|
-
@pa = @pa.respond_to?(:parent) ? @pa.parent : nil
|
|
182
|
-
arr << @pa
|
|
183
|
-
end
|
|
184
|
-
end
|
|
102
|
+
def name(*args)
|
|
103
|
+
resource_name
|
|
185
104
|
end
|
|
186
105
|
|
|
187
|
-
#
|
|
188
|
-
|
|
106
|
+
# After create callback
|
|
107
|
+
def after_create
|
|
108
|
+
end
|
|
189
109
|
|
|
190
|
-
|
|
191
|
-
|
|
110
|
+
# We don't want to inherit the services on a resource, as resources
|
|
111
|
+
# are a base and should never have services.
|
|
112
|
+
def services
|
|
192
113
|
end
|
|
114
|
+
|
|
115
|
+
def cloud
|
|
116
|
+
2.upto(context_stack.size) do |i|
|
|
117
|
+
return ::PoolParty.context_stack[-i] if ::PoolParty.context_stack[-i].is_a?(PoolParty::Cloud::Cloud)
|
|
118
|
+
end
|
|
119
|
+
nil
|
|
120
|
+
end
|
|
121
|
+
|
|
193
122
|
def duplicatable?
|
|
194
123
|
false
|
|
195
124
|
end
|
|
125
|
+
def resource?
|
|
126
|
+
true
|
|
127
|
+
end
|
|
196
128
|
# This way we can subclass resources without worry
|
|
197
129
|
def class_type_name
|
|
198
130
|
self.class.to_s.top_level_class.underscore.downcase
|
|
@@ -220,23 +152,32 @@ module PoolParty
|
|
|
220
152
|
def disallowed_options
|
|
221
153
|
[]
|
|
222
154
|
end
|
|
223
|
-
|
|
224
|
-
[
|
|
225
|
-
:subscribe, :owner, :group, :path, :mode, :source, :notify, :subscribe, :check, :creates, :cwd, :command, :ensure,
|
|
226
|
-
:require, :schedule, :range, :alias, :hour, :minute, :user, :month, :monthday, :name, :onlyif, :unless, :refreshonly,
|
|
227
|
-
:refresh, :content, :template, :ip, :repeat, :provider, :key, :device, :fstype, :remounts, :options, :atboot, :before,
|
|
228
|
-
:binary, :status, :start, :stop, :restart, :pattern, :recurse, :home
|
|
229
|
-
]
|
|
230
|
-
end
|
|
155
|
+
|
|
231
156
|
def key
|
|
232
157
|
name
|
|
233
158
|
end
|
|
234
|
-
def virtual_resource?
|
|
235
|
-
|
|
159
|
+
# def virtual_resource?
|
|
160
|
+
# false
|
|
161
|
+
# end
|
|
162
|
+
# def printable?
|
|
163
|
+
# true
|
|
164
|
+
# end
|
|
165
|
+
def is_in_plugin?
|
|
166
|
+
parent.is_plugin?
|
|
236
167
|
end
|
|
237
|
-
|
|
168
|
+
|
|
169
|
+
def is_a_resource?
|
|
238
170
|
true
|
|
239
171
|
end
|
|
172
|
+
|
|
173
|
+
def method_missing(m,*a,&block)
|
|
174
|
+
if parent && parent.dsl_options.has_key?(m) && is_in_plugin?
|
|
175
|
+
parent.send m, *a, &block
|
|
176
|
+
else
|
|
177
|
+
super
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
|
|
240
181
|
# Private method just for resource retrievling purposes
|
|
241
182
|
def class_name_sym
|
|
242
183
|
self.class.to_s.top_level_class.downcase.to_sym
|
|
@@ -248,8 +189,8 @@ module PoolParty
|
|
|
248
189
|
# it returns an empty hash
|
|
249
190
|
def get_modified_options
|
|
250
191
|
unless @modified_options
|
|
251
|
-
if
|
|
252
|
-
opts =
|
|
192
|
+
if dsl_options
|
|
193
|
+
opts = dsl_options.inject({}) do |sum,h|
|
|
253
194
|
sum.merge!({h[0].to_sym => ((h[1].nil?) ? self.send(h[0].to_sym) : h[1]) })
|
|
254
195
|
end
|
|
255
196
|
else
|
|
@@ -258,42 +199,15 @@ module PoolParty
|
|
|
258
199
|
@full_allowed_options ||= allowed_options.reject {|ele| disallowed_options.include?(ele) }
|
|
259
200
|
@modified_options = opts.reject do |k,v|
|
|
260
201
|
!@full_allowed_options.include?(k) ||
|
|
261
|
-
@parent && @parent.respond_to?(:
|
|
202
|
+
@parent && @parent.respond_to?(:dsl_options) && @parent != self && @parent.dsl_options.has_key?(k) && @parent.dsl_options[k] == dsl_options[k]
|
|
262
203
|
end
|
|
263
204
|
end
|
|
264
205
|
@modified_options
|
|
265
206
|
end
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
# Adds two methods to the module
|
|
269
|
-
# Adds the method type:
|
|
270
|
-
# has_
|
|
271
|
-
# and
|
|
272
|
-
# does_not_have_
|
|
273
|
-
# for the type passed
|
|
274
|
-
# for instance
|
|
275
|
-
# add_has_and_does_not_have_methods_for(:file)
|
|
276
|
-
# gives you the methods has_file and does_not_have_file
|
|
277
|
-
# TODO: Refactor nicely to include other types that don't accept ensure
|
|
278
|
-
def self.add_has_and_does_not_have_methods_for(type=:file)
|
|
279
|
-
module_eval <<-EOE
|
|
280
|
-
def has_#{type}(opts={}, parent=self, &block)
|
|
281
|
-
#{type}(handle_option_values(opts).merge(:ensures => "present"), parent, &block)
|
|
282
|
-
end
|
|
283
|
-
def does_not_have_#{type}(opts={}, parent=self, &block)
|
|
284
|
-
#{type}(handle_option_values(opts).merge(:ensures => "absent"), parent, &block)
|
|
285
|
-
end
|
|
286
|
-
EOE
|
|
287
|
-
end
|
|
288
|
-
|
|
289
|
-
def handle_option_values(o)
|
|
290
|
-
case o.class.to_s
|
|
291
|
-
when "String"
|
|
292
|
-
{:name => o}
|
|
293
|
-
else
|
|
294
|
-
o
|
|
295
|
-
end
|
|
207
|
+
|
|
296
208
|
end
|
|
297
209
|
|
|
298
210
|
end
|
|
299
|
-
end
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
Dir["#{::File.dirname(__FILE__)}/../resources/*.rb"].each {|lib| require "#{lib}"}
|
|
@@ -1,43 +1,55 @@
|
|
|
1
|
+
require "parenting"
|
|
1
2
|
module PoolParty
|
|
2
3
|
|
|
3
4
|
class Script
|
|
5
|
+
include Parenting
|
|
4
6
|
|
|
5
7
|
def self.inflate_file(file)
|
|
6
8
|
inflate open(file).read if file
|
|
7
9
|
end
|
|
8
10
|
|
|
9
11
|
def self.inflate(script, file="__SCRIPT__")
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
module_eval script, file
|
|
13
|
+
# a = new
|
|
14
|
+
# a.instance_eval <<-EOM
|
|
15
|
+
# def run_child(pa)
|
|
16
|
+
# context_stack.push pa
|
|
17
|
+
# #{str}
|
|
18
|
+
# context_stack.pop
|
|
19
|
+
# remove_method(:run_child)
|
|
20
|
+
# self
|
|
21
|
+
# end
|
|
22
|
+
# EOM
|
|
23
|
+
# a.run_child(self)
|
|
24
|
+
# a
|
|
13
25
|
end
|
|
14
|
-
|
|
15
|
-
def inflate
|
|
16
|
-
pools.map {|name,pool| pool.inflate } unless pools.empty?
|
|
17
|
-
end
|
|
18
|
-
|
|
26
|
+
|
|
19
27
|
def self.to_ruby(opts={},&blk)
|
|
20
28
|
blk.to_ruby(opts)
|
|
21
29
|
end
|
|
22
30
|
|
|
23
31
|
def self.for_save_string
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
end
|
|
32
|
-
EOE
|
|
32
|
+
out = []
|
|
33
|
+
pools.collect {|n,pl| pl}.each do |pl|
|
|
34
|
+
out << "pool :#{pl.name} do"
|
|
35
|
+
clouds.each do |n,cl|
|
|
36
|
+
# grossy-gross
|
|
37
|
+
minimum_runnable_options_string = cl.minimum_runnable_options.collect do |o|
|
|
38
|
+
"#{o} #{cl.send(o).respec_string}" unless cl.send(o).nil?
|
|
33
39
|
end
|
|
34
|
-
out <<
|
|
40
|
+
out << <<-EOE
|
|
41
|
+
cloud :#{cl.name} do
|
|
42
|
+
#{minimum_runnable_options_string.join("\n")}
|
|
43
|
+
end
|
|
44
|
+
EOE
|
|
35
45
|
end
|
|
36
|
-
|
|
46
|
+
out << "end"
|
|
47
|
+
end
|
|
48
|
+
out.join("\n")
|
|
37
49
|
end
|
|
38
50
|
|
|
39
51
|
def self.save!(to_file=true)
|
|
40
|
-
write_to_file_in_storage_directory(
|
|
52
|
+
write_to_file_in_storage_directory(Default.default_specfile_name, for_save_string) if to_file
|
|
41
53
|
for_save_string
|
|
42
54
|
end
|
|
43
55
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module PoolParty
|
|
2
|
+
|
|
3
|
+
class Service < PoolPartyBaseClass
|
|
4
|
+
|
|
5
|
+
include PoolParty::DependencyResolverCloudExtensions
|
|
6
|
+
|
|
7
|
+
def initialize(o={}, &block)
|
|
8
|
+
super(o, &block)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def to_properties_hash
|
|
12
|
+
{ :pp_type => "plugin", :options => options,
|
|
13
|
+
:name => self.class.to_s.top_level_class,
|
|
14
|
+
:resources => ordered_resources.map {|a| a.to_properties_hash }}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def cloud
|
|
18
|
+
2.upto(context_stack.size) do |i|
|
|
19
|
+
return ::PoolParty.context_stack[-i] if ::PoolParty.context_stack[-i].is_a?(PoolParty::Cloud::Cloud)
|
|
20
|
+
end
|
|
21
|
+
nil
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.add_has_and_does_not_have_methods_for(typ=:file)
|
|
25
|
+
lowercase_class_name = typ.to_s.top_level_class.downcase
|
|
26
|
+
|
|
27
|
+
meth = <<-EOM
|
|
28
|
+
def __#{lowercase_class_name}(opts={}, &block)
|
|
29
|
+
i = PoolParty::#{lowercase_class_name.camelcase}Class.new(opts, &block)
|
|
30
|
+
plugin_store << i if respond_to?(:plugin_store)
|
|
31
|
+
i
|
|
32
|
+
end
|
|
33
|
+
alias :#{lowercase_class_name} :__#{lowercase_class_name}
|
|
34
|
+
EOM
|
|
35
|
+
|
|
36
|
+
PoolParty::PoolPartyBaseClass.module_eval meth
|
|
37
|
+
PoolParty::PoolPartyBaseClass.add_has_and_does_not_have_methods_for(lowercase_class_name.to_sym)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
Dir["#{::File.dirname(__FILE__)}/../services/*.rb"].each {|lib| require "#{lib}"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require "ostruct"
|
|
2
|
+
require "erb"
|
|
3
|
+
|
|
4
|
+
module PoolParty
|
|
5
|
+
class Template
|
|
6
|
+
|
|
7
|
+
def self.compile_string(string, opts={})
|
|
8
|
+
vars = OpenStruct.new opts
|
|
9
|
+
handle_render(string, vars, (opts.delete(:render) || :erb))
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.compile_file(file, opts={})
|
|
13
|
+
content = open(file).read
|
|
14
|
+
compile_string(content, opts)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.handle_render(string, vars, renderer)
|
|
18
|
+
case renderer
|
|
19
|
+
when :haml
|
|
20
|
+
nil
|
|
21
|
+
else
|
|
22
|
+
ERB.new(string).result(vars.send(:binding))
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
=begin rdoc
|
|
2
|
+
BootStrapper is contains the basic files that need to be uploaded to a new instance and the first commands that are run to set up a base PoolParty enviornment. This includes things like ensuring that ruby, rubygems, and poolparty are installed, and then start the monitor.
|
|
3
|
+
=end
|
|
4
|
+
|
|
5
|
+
require "#{::File.dirname(__FILE__)}/../net/remoter/connections"
|
|
6
|
+
|
|
7
|
+
# Provide a very simple provisioner with as few dependencies as possible
|
|
8
|
+
module PoolParty
|
|
9
|
+
module Provision
|
|
10
|
+
|
|
11
|
+
class BootStrapper
|
|
12
|
+
include ::PoolParty::Remote
|
|
13
|
+
|
|
14
|
+
# List of gems that are default to install
|
|
15
|
+
def self.gem_list
|
|
16
|
+
@gem_list ||= %w( logging
|
|
17
|
+
rake
|
|
18
|
+
xml-simple
|
|
19
|
+
net-ssh
|
|
20
|
+
net-sftp
|
|
21
|
+
net-scp
|
|
22
|
+
net-ssh-gateway
|
|
23
|
+
highline
|
|
24
|
+
json
|
|
25
|
+
activesupport
|
|
26
|
+
grempe-amazon-ec2
|
|
27
|
+
ohai
|
|
28
|
+
chef
|
|
29
|
+
auser-dslify
|
|
30
|
+
auser-parenting
|
|
31
|
+
adamwiggins-rest-client
|
|
32
|
+
rack
|
|
33
|
+
thin
|
|
34
|
+
)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Default options for the boot_strapper
|
|
38
|
+
@defaults = ::PoolParty::Default.default_options.merge({
|
|
39
|
+
:full_keypair_path => "#{ENV["AWS_KEYPAIR_NAME"]}" || "~/.ssh/id_rsa",
|
|
40
|
+
:installer => 'apt-get',
|
|
41
|
+
:dependency_resolver => 'chef'
|
|
42
|
+
})
|
|
43
|
+
class <<self; attr_reader :defaults; end
|
|
44
|
+
|
|
45
|
+
# In case the method is being called on ourself, let's check the
|
|
46
|
+
# defaults hash to see if it's available there
|
|
47
|
+
def method_missing(m,*a,&block)
|
|
48
|
+
if self.class.defaults.has_key?(m)
|
|
49
|
+
self.class.defaults[m]
|
|
50
|
+
elsif @cloud
|
|
51
|
+
@cloud.send m, *a, &block
|
|
52
|
+
else
|
|
53
|
+
super
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def initialize(host, opts={}, &block)
|
|
58
|
+
self.class.defaults.merge(opts).to_instance_variables(self)
|
|
59
|
+
@target_host = host
|
|
60
|
+
@cloud = opts[:cloud]
|
|
61
|
+
|
|
62
|
+
instance_eval &block if block
|
|
63
|
+
@cloud.call_before_bootstrap_callbacks if @cloud
|
|
64
|
+
|
|
65
|
+
default_commands
|
|
66
|
+
dputs "Starting bootstrapping process on #{host}"
|
|
67
|
+
execute!
|
|
68
|
+
|
|
69
|
+
@cloud.call_after_bootstrap_callbacks if @cloud
|
|
70
|
+
after_bootstrap
|
|
71
|
+
dputs "Bootstrapping complete on #{host}"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def self.class_commands
|
|
75
|
+
@class_commands ||= []
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Collect all the bootstrap files that will be uploaded to the remote instances
|
|
79
|
+
def pack_the_dependencies
|
|
80
|
+
# Add the keypair to the instance... shudder
|
|
81
|
+
::Suitcase::Zipper.add(keypair, "keys")
|
|
82
|
+
|
|
83
|
+
# Use the locally built poolparty gem if it is availabl
|
|
84
|
+
if edge_pp_gem = Dir["#{Default.vendor_path}/../pkg/*poolparty*gem"].pop
|
|
85
|
+
puts "using edge poolparty: #{::File.expand_path(edge_pp_gem)}"
|
|
86
|
+
::Suitcase::Zipper.add(edge_pp_gem, 'gems')
|
|
87
|
+
else
|
|
88
|
+
vputs "using gem auser-poolparty. use rake build to use edge"
|
|
89
|
+
self.class.gem_list << 'auser-poolparty'
|
|
90
|
+
end
|
|
91
|
+
# Add the gems to the suitcase
|
|
92
|
+
puts "Adding default gem dependencies"
|
|
93
|
+
::Suitcase::Zipper.gems self.class.gem_list, "#{Default.tmp_path}/trash/dependencies"
|
|
94
|
+
|
|
95
|
+
::Suitcase::Zipper.packages( "http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz",
|
|
96
|
+
"#{Default.tmp_path}/trash/dependencies/packages")
|
|
97
|
+
# ::Suitcase::Zipper.add("templates/")
|
|
98
|
+
|
|
99
|
+
::Suitcase::Zipper.add("#{::File.dirname(__FILE__)}/../templates/monitor.ru", "/etc/poolparty/")
|
|
100
|
+
::Suitcase::Zipper.add("#{::File.dirname(__FILE__)}/../templates/monitor.god", "/etc/poolparty/")
|
|
101
|
+
|
|
102
|
+
::Suitcase::Zipper.add("#{Default.tmp_path}/trash/dependencies/cache", "gems")
|
|
103
|
+
|
|
104
|
+
::Suitcase::Zipper.add("#{::File.join(File.dirname(__FILE__), '..', 'templates', 'gemrc_template' )}", "etc/poolparty")
|
|
105
|
+
|
|
106
|
+
instances = @cloud.nodes(:status => "running") + [@cloud.started_instance]
|
|
107
|
+
::Suitcase::Zipper.add_content_as(
|
|
108
|
+
{:instances => instances.flatten.compact}.to_json,
|
|
109
|
+
"neighborhood.json", "/etc/poolparty")
|
|
110
|
+
|
|
111
|
+
::Suitcase::Zipper.build_dir!("#{Default.tmp_path}/dependencies")
|
|
112
|
+
|
|
113
|
+
::Suitcase::Zipper.flush!
|
|
114
|
+
|
|
115
|
+
# ::FileUtils.rm_rf "#{Default.tmp_path}/trash"
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# The commands to setup a PoolParty enviornment
|
|
119
|
+
def default_commands
|
|
120
|
+
pack_the_dependencies
|
|
121
|
+
::FileUtils.rm_rf "#{Default.tmp_path}/dependencies/gems/cache"
|
|
122
|
+
rsync "#{Default.tmp_path}/dependencies", '/var/poolparty'
|
|
123
|
+
|
|
124
|
+
commands << [
|
|
125
|
+
"mkdir -p /etc/poolparty",
|
|
126
|
+
"mkdir -p /var/log/poolparty",
|
|
127
|
+
"groupadd -f poolparty",
|
|
128
|
+
# "useradd poolparty --home-dir /var/poolparty --groups poolparty --create-home",
|
|
129
|
+
'cd /var/poolparty/dependencies',
|
|
130
|
+
"cp /var/poolparty/dependencies/etc/poolparty/gemrc_template /etc/poolparty",
|
|
131
|
+
"#{installer} update",
|
|
132
|
+
"#{installer} install -y ruby ruby1.8-dev libopenssl-ruby1.8 build-essential wget", #optional, but nice to have
|
|
133
|
+
"tar -zxvf packages/rubygems-1.3.1.tgz",
|
|
134
|
+
"cd rubygems-1.3.1",
|
|
135
|
+
"ruby setup.rb --no-ri --no-rdoc",
|
|
136
|
+
"ln -sfv /usr/bin/gem1.8 /usr/bin/gem", #TODO: check if this is really needed
|
|
137
|
+
"cd ../ && rm -rf rubygems-1.3.1*",
|
|
138
|
+
"gem source --add http://gems.github.com",
|
|
139
|
+
"cd /var/poolparty/dependencies/gems/",
|
|
140
|
+
"gem install --no-rdoc --no-ri -y *.gem",
|
|
141
|
+
"cd /var/poolparty/dependencies",
|
|
142
|
+
"cp /var/poolparty/dependencies/etc/poolparty/* /etc/poolparty/",
|
|
143
|
+
'touch /var/poolparty/POOLPARTY.PROGRESS',
|
|
144
|
+
"mkdir -p /root/.ssh",
|
|
145
|
+
"cp /var/poolparty/dependencies/keys/* /root/.ssh/",
|
|
146
|
+
"chmod 600 /root/.ssh/#{::File.basename(@cloud.keypair.full_filepath)}",
|
|
147
|
+
# "god -c /etc/poolparty/monitor.god",
|
|
148
|
+
"mkdir -p /var/log/poolparty/",
|
|
149
|
+
"thin -R /etc/poolparty/monitor.ru -p 8642 --pid /var/run/stats_monitor.pid --daemon -l /var/log/poolparty/monitor.log start 2>/dev/null",
|
|
150
|
+
'echo "bootstrap" >> /var/poolparty/POOLPARTY.PROGRESS']
|
|
151
|
+
commands << self.class.class_commands unless self.class.class_commands.empty?
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def after_bootstrap
|
|
155
|
+
# thin_cmd = "thin -R /etc/poolparty/monitor.ru start -p 8642 --daemonize --pid /var/run/poolparty/monitor.pid --log /var/log/poolparty/monitor.log --environment production --chdir /var/poolparty" #TODO --user poolparty --group poolparty
|
|
156
|
+
# vputs "thin_cmd = #{thin_cmd}"
|
|
157
|
+
# curl_put = "curl -i -XPUT -d'{}' http://localhost:8642/stats_monitor"
|
|
158
|
+
# execute! [ thin_cmd, "sleep 10", curl_put ]
|
|
159
|
+
# execute! ["sleep 5", curl_put]
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
end
|
|
164
|
+
end
|