fairchild-poolparty 1.1.4 → 1.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.txt +0 -12
- data/Rakefile +17 -1
- data/VERSION.yml +1 -1
- data/bin/cloud +20 -1
- data/bin/cloud-bootstrap +14 -4
- data/bin/cloud-configure +26 -9
- data/bin/cloud-contract +7 -7
- data/bin/cloud-describe +28 -0
- data/bin/cloud-expand +13 -6
- data/bin/cloud-list +3 -5
- data/bin/cloud-osxcopy +1 -1
- data/bin/cloud-provision +1 -1
- data/bin/cloud-show +6 -5
- data/bin/cloud-ssh +1 -3
- data/bin/cloud-start +8 -6
- data/bin/cloud-terminate +9 -7
- data/bin/server-cloud-elections +29 -18
- data/bin/server-ensure-provisioning +24 -29
- data/bin/server-list-active +10 -5
- data/bin/server-monitor.ru +18 -1
- data/bin/server-update-hosts +3 -3
- data/bin/server-write-new-nodes +1 -1
- data/config/jeweler.rb +12 -3
- data/lib/poolparty/aska/aska.rb +1 -12
- data/lib/poolparty/base_packages/haproxy.rb +26 -18
- data/lib/poolparty/base_packages/poolparty.rb +1 -1
- data/lib/poolparty/capistrano.rb +1 -1
- data/lib/poolparty/core/array.rb +12 -0
- data/lib/poolparty/core/hash.rb +12 -5
- data/lib/poolparty/core/nil.rb +8 -0
- data/lib/poolparty/core/object.rb +15 -5
- data/lib/poolparty/core/string.rb +28 -2
- data/lib/poolparty/dependency_resolver/chef_resolver.rb +106 -79
- data/lib/poolparty/dependency_resolver/dependency_resolver.rb +1 -1
- data/lib/poolparty/dependency_resolver/dependency_resolver_cloud_extensions.rb +5 -4
- data/lib/poolparty/dependency_resolver/puppet_resolver.rb +44 -17
- data/lib/poolparty/helpers/console.rb +1 -1
- data/lib/poolparty/helpers/optioner.rb +9 -2
- data/lib/poolparty/lite.rb +12 -2
- data/lib/poolparty/modules/callbacks.rb +44 -0
- data/lib/poolparty/modules/cloud_dsl.rb +17 -11
- data/lib/poolparty/modules/cloud_resourcer.rb +29 -21
- data/lib/poolparty/modules/definable_resource.rb +1 -1
- data/lib/poolparty/modules/pinger.rb +28 -0
- data/lib/poolparty/modules/resourcing_dsl.rb +7 -3
- 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 +32 -81
- data/lib/poolparty/monitors/monitor_rack.rb +60 -69
- data/lib/poolparty/monitors/monitors/favicon_monitor.rb +12 -0
- data/lib/poolparty/monitors/monitors/load_monitor.rb +9 -15
- data/lib/poolparty/monitors/monitors/memory_monitor.rb +48 -48
- data/lib/poolparty/monitors/monitors/neighborhood_monitor.rb +77 -0
- data/lib/poolparty/monitors/{stats_monitor.rb → monitors/stats_monitor.rb} +29 -24
- data/lib/poolparty/monitors/monitors/time_monitor.rb +15 -0
- data/lib/poolparty/net/messenger.rb +2 -0
- data/lib/poolparty/net/remoter/cloud_control.rb +177 -227
- data/lib/poolparty/net/remoter/connections.rb +10 -18
- data/lib/poolparty/net/remoter/interactive.rb +24 -90
- data/lib/poolparty/net/remoter_base.rb +98 -25
- data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +83 -66
- 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 +165 -0
- data/lib/poolparty/net/remoter_bases/vmrun/vmrun_instance.rb +71 -0
- data/lib/poolparty/{base_packages → plugins}/bind.rb +1 -1
- data/lib/poolparty/plugins/chef.rb +71 -71
- data/lib/poolparty/plugins/chef_deploy.rb +58 -0
- data/lib/poolparty/plugins/{deploydirectory.rb → deploy_directory.rb} +12 -3
- data/lib/poolparty/plugins/dynomite.rb +14 -0
- data/lib/poolparty/plugins/gem_package.rb +37 -0
- data/lib/poolparty/plugins/line_in_file.rb +1 -0
- data/lib/poolparty/plugins/nanite.rb +41 -0
- data/lib/poolparty/{base_packages → plugins}/tokyo_tyrant.rb +1 -1
- data/lib/poolparty/poolparty/cloud.rb +36 -35
- data/lib/poolparty/poolparty/default.rb +2 -11
- data/lib/poolparty/poolparty/key.rb +15 -12
- data/lib/poolparty/poolparty/neighborhoods.rb +54 -21
- data/lib/poolparty/poolparty/plugin.rb +6 -9
- data/lib/poolparty/poolparty/plugin_model.rb +5 -5
- data/lib/poolparty/poolparty/pool.rb +8 -4
- data/lib/poolparty/poolparty/poolparty_base_class.rb +20 -11
- data/lib/poolparty/poolparty/resource.rb +9 -5
- data/lib/poolparty/poolparty/service.rb +3 -1
- data/lib/poolparty/provision/boot_strapper.rb +47 -24
- data/lib/poolparty/provision/configurations/chef.rb +7 -4
- data/lib/poolparty/provision/dr_configure.rb +80 -25
- data/lib/poolparty/resources/cron.rb +8 -0
- data/lib/poolparty/resources/directory.rb +1 -1
- data/lib/poolparty/resources/file.rb +16 -0
- data/lib/poolparty/resources/package.rb +7 -2
- data/lib/poolparty/resources/service.rb +4 -3
- data/lib/poolparty/resources/symlink.rb +0 -8
- data/lib/poolparty/schema.rb +35 -20
- data/lib/poolparty/templates/haproxy.conf +27 -25
- data/lib/poolparty/templates/monitor.ru +3 -3
- data/lib/poolparty/verification/verifier_base.rb +17 -0
- data/lib/poolparty/verification/verifiers/ping.rb +17 -0
- data/lib/poolparty/verification/verify.rb +74 -0
- data/lib/poolparty.rb +8 -9
- data/lib/poolpartycl.rb +14 -0
- data/spec/bin/server-list-active_spec.rb +2 -0
- data/spec/poolparty/base_packages/haproxy_spec.rb +1 -1
- data/spec/poolparty/core/array_spec.rb +3 -1
- data/spec/poolparty/core/ordered_hash_spec.rb +2 -2
- data/spec/poolparty/dependency_resolver/chef_resolver_spec.rb +9 -15
- data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +6 -6
- data/spec/poolparty/dependency_resolver/puppet_resolver_spec.rb +121 -124
- data/spec/poolparty/net/remote_spec.rb +287 -286
- data/spec/poolparty/net/remoter_bases/ec2_mocks_and_stubs.rb +1 -1
- data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +7 -8
- data/spec/poolparty/net/remoter_bases/ec2_spec.rb +22 -7
- data/spec/poolparty/net/remoter_spec.rb +48 -45
- data/spec/poolparty/poolparty/cloud_spec.rb +15 -22
- data/spec/poolparty/poolparty/key_spec.rb +4 -4
- data/spec/poolparty/poolparty/neighborhoods_spec.rb +1 -2
- data/spec/poolparty/poolparty/plugin_spec.rb +2 -2
- data/spec/poolparty/poolparty/resource_spec.rb +4 -5
- data/spec/poolparty/poolparty_base_class_spec.rb +82 -78
- data/spec/poolparty/resources/package_spec.rb +0 -3
- data/spec/poolparty/spec_helper.rb +4 -4
- data/tasks/development.rake +9 -0
- data/test/poolparty/core/array_test.rb +21 -0
- data/test/poolparty/core/hash_test.rb +14 -1
- data/test/poolparty/core/string_test.rb +29 -0
- data/test/poolparty/dependency_resolver/puppet_resolver_test.rb +106 -0
- data/test/poolparty/modules/callbacks_test.rb +40 -0
- data/test/poolparty/modules/cloud_dsl_test.rb +25 -0
- data/test/poolparty/net/remoter_bases/vmrun/vmrun_test.rb +50 -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/verification/verify_test.rb +49 -0
- data/test/test_helper.rb +4 -1
- data/test/test_poolparty.rb +6 -5
- data/vendor/chef/apache2/attributes/apache.rb +1 -1
- data/vendor/chef/apache2/templates/default/default-site.erb +1 -1
- 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
- metadata +57 -252
- data/bin/cloud-run +0 -18
- data/bin/cloud-stats +0 -17
- data/bin/ec2-list-active +0 -24
- 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-list-instances +0 -15
- 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/master.app +0 -19
- data/lib/erlang/messenger/ebin/node.app +0 -19
- data/lib/erlang/messenger/ebin/packager.app +0 -19
- data/lib/erlang/messenger/ebin/pm_client_rel-0.1.rel +0 -1
- data/lib/erlang/messenger/ebin/pm_master_rel-0.1.rel +0 -1
- data/lib/erlang/messenger/ebin/pm_node_rel-0.1.rel +0 -1
- 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 -72
- data/lib/erlang/messenger/useful_snippets +0 -17
- data/lib/poolparty/monitors/monitors/server_monitor.rb +0 -7
- data/lib/poolparty/monitors/monitors/web_monitor.rb +0 -18
- data/lib/poolparty/monitors/neighborhood_monitor.rb +0 -24
- data/lib/poolparty/monitors.rb +0 -6
- data/lib/poolparty/net/remoter/lists.rb +0 -12
- data/lib/poolparty/poolparty/custom_resource.rb +0 -45
- data/lib/poolparty/resources/custom_service.rb +0 -30
- data/lib/poolparty/services/gem_package.rb +0 -52
- data/lib/poolparty/version.rb +0 -15
- data/spec/poolparty/plugins/svn_spec.rb +0 -16
- data/spec/poolparty/poolparty/custom_resource_spec.rb +0 -79
- data/vendor/gems/butterfly/History.txt +0 -4
- data/vendor/gems/butterfly/PostInstall.txt +0 -2
- data/vendor/gems/butterfly/README.rdoc +0 -48
- data/vendor/gems/butterfly/Rakefile +0 -62
- data/vendor/gems/butterfly/VERSION.yml +0 -4
- data/vendor/gems/butterfly/bin/flutter +0 -4
- data/vendor/gems/butterfly/butterfly.gemspec +0 -37
- data/vendor/gems/butterfly/examples/config.ru +0 -15
- data/vendor/gems/butterfly/examples/my_app.rb +0 -12
- data/vendor/gems/butterfly/lib/butterfly.rb +0 -14
- data/vendor/gems/butterfly/lib/handler.rb +0 -48
- data/vendor/gems/butterfly/lib/request.rb +0 -29
- data/vendor/gems/butterfly/lib/response.rb +0 -49
- data/vendor/gems/butterfly/script/console +0 -10
- data/vendor/gems/butterfly/script/destroy +0 -14
- data/vendor/gems/butterfly/script/generate +0 -14
- data/vendor/gems/butterfly/test/test_adapter_base.rb +0 -23
- data/vendor/gems/butterfly/test/test_butterfly_request.rb +0 -46
- data/vendor/gems/butterfly/test/test_butterfly_response.rb +0 -43
- data/vendor/gems/butterfly/test/test_butterfly_server.rb +0 -16
- data/vendor/gems/butterfly/test/test_default.rb +0 -12
- data/vendor/gems/butterfly/test/test_helper.rb +0 -6
- data/vendor/gems/dslify/History.txt +0 -4
- data/vendor/gems/dslify/Manifest.txt +0 -25
- data/vendor/gems/dslify/PostInstall.txt +0 -5
- data/vendor/gems/dslify/README.txt +0 -60
- data/vendor/gems/dslify/Rakefile +0 -56
- data/vendor/gems/dslify/config/hoe.rb +0 -73
- data/vendor/gems/dslify/config/requirements.rb +0 -15
- data/vendor/gems/dslify/dslify.gemspec +0 -40
- data/vendor/gems/dslify/lib/dslify/dslify.rb +0 -69
- data/vendor/gems/dslify/lib/dslify/version.rb +0 -10
- data/vendor/gems/dslify/lib/dslify.rb +0 -7
- data/vendor/gems/dslify/script/console +0 -10
- data/vendor/gems/dslify/script/destroy +0 -14
- data/vendor/gems/dslify/script/generate +0 -14
- data/vendor/gems/dslify/script/txt2html +0 -82
- data/vendor/gems/dslify/setup.rb +0 -1585
- data/vendor/gems/dslify/tasks/deployment.rake +0 -34
- data/vendor/gems/dslify/tasks/environment.rake +0 -7
- data/vendor/gems/dslify/tasks/website.rake +0 -17
- data/vendor/gems/dslify/test/test_dslify.rb +0 -114
- data/vendor/gems/dslify/website/index.html +0 -86
- data/vendor/gems/dslify/website/index.txt +0 -83
- data/vendor/gems/dslify/website/javascripts/rounded_corners_lite.inc.js +0 -285
- data/vendor/gems/dslify/website/stylesheets/screen.css +0 -138
- data/vendor/gems/dslify/website/template.html.erb +0 -48
- data/vendor/gems/parenting/History.txt +0 -4
- data/vendor/gems/parenting/Manifest.txt +0 -13
- data/vendor/gems/parenting/PostInstall.txt +0 -2
- data/vendor/gems/parenting/README.rdoc +0 -47
- data/vendor/gems/parenting/Rakefile +0 -28
- data/vendor/gems/parenting/lib/parenting/base.rb +0 -65
- data/vendor/gems/parenting/lib/parenting.rb +0 -10
- data/vendor/gems/parenting/parenting.gemspec +0 -39
- data/vendor/gems/parenting/script/console +0 -10
- data/vendor/gems/parenting/script/destroy +0 -14
- data/vendor/gems/parenting/script/generate +0 -14
- data/vendor/gems/parenting/test/file_to_eval.rb +0 -9
- data/vendor/gems/parenting/test/test_helper.rb +0 -5
- data/vendor/gems/parenting/test/test_parenting.rb +0 -89
- data/vendor/gems/suitcase/LICENSE +0 -20
- data/vendor/gems/suitcase/README.rdoc +0 -31
- data/vendor/gems/suitcase/Rakefile +0 -57
- data/vendor/gems/suitcase/VERSION.yml +0 -4
- data/vendor/gems/suitcase/lib/suitcase/unzipper.rb +0 -15
- data/vendor/gems/suitcase/lib/suitcase/zipper.rb +0 -119
- data/vendor/gems/suitcase/lib/suitcase.rb +0 -5
- data/vendor/gems/suitcase/suitcase.gemspec +0 -32
- data/vendor/gems/suitcase/test/suitcase_test.rb +0 -102
- data/vendor/gems/suitcase/test/test_dir/box.rb +0 -1
- data/vendor/gems/suitcase/test/test_dir/test.txt +0 -1
- data/vendor/gems/suitcase/test/test_helper.rb +0 -12
@@ -43,19 +43,34 @@ module PoolParty
|
|
43
43
|
if opts.has_key?(:variable)
|
44
44
|
vars = opts.delete(:variable)
|
45
45
|
out << vars.map do |res, arr|
|
46
|
-
handle_print_resource(res, :variable,
|
46
|
+
handle_print_resource(res, :variable, tabs)
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
out << opts.map do |type, arr|
|
51
51
|
arr.map do |res|
|
52
|
-
handle_print_resource(res, type,
|
52
|
+
handle_print_resource(res, type, tabs)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
56
56
|
out.join("\n")
|
57
57
|
end
|
58
58
|
|
59
|
+
def resources_to_string(opts,tabs=0)
|
60
|
+
out = []
|
61
|
+
out << opts.map do |resource|
|
62
|
+
case ty = resource.delete(:pp_type)
|
63
|
+
when "variable"
|
64
|
+
handle_print_variable(resource[:name], resource[:value], :variable)
|
65
|
+
else
|
66
|
+
real_name = resource[:name]
|
67
|
+
handle_print_resource(resource, ty.to_sym, tabs)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
out.join("\n")
|
71
|
+
end
|
72
|
+
|
73
|
+
|
59
74
|
def permitted_option?(ty, key)
|
60
75
|
true
|
61
76
|
# if permitted_resource_options.has_key?(ty)
|
@@ -74,22 +89,31 @@ module PoolParty
|
|
74
89
|
end
|
75
90
|
|
76
91
|
def hash_flush_out(hash, pre="", post="")
|
77
|
-
hash.map do |k,v|
|
78
|
-
|
79
|
-
res = to_option_string(v)
|
80
|
-
res.empty? ? nil : "#{pre}#{key} => #{res}#{post}"
|
92
|
+
setup_hash_for_output(hash).map do |k,v|
|
93
|
+
hash.empty? ? nil : "#{pre}#{k} => #{v}#{post}"
|
81
94
|
end
|
82
95
|
end
|
83
96
|
|
84
|
-
def
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
"
|
97
|
+
def setup_hash_for_output(hsh)
|
98
|
+
ty = hsh.delete(:klasstype)
|
99
|
+
if hsh.has_key?(:ensures)
|
100
|
+
hsh.delete(:ensures)
|
101
|
+
hsh[:ensure] = case ty.to_s
|
102
|
+
when "directory"
|
103
|
+
"directory"
|
104
|
+
when "symlink"
|
105
|
+
hsh[:source]
|
106
|
+
else
|
107
|
+
"present"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
new_hsh ={}
|
111
|
+
hsh.each do |k,v|
|
112
|
+
new_hsh.merge!({k => to_option_string(v)})
|
90
113
|
end
|
114
|
+
new_hsh
|
91
115
|
end
|
92
|
-
|
116
|
+
|
93
117
|
def to_option_string(obj)
|
94
118
|
case obj
|
95
119
|
when PoolParty::Resources::Resource
|
@@ -136,10 +160,12 @@ module PoolParty
|
|
136
160
|
end
|
137
161
|
end
|
138
162
|
|
139
|
-
def
|
140
|
-
|
141
|
-
|
142
|
-
|
163
|
+
def handle_print_variable(name, value, tabs)
|
164
|
+
"$#{name} = #{to_option_string(value)}"
|
165
|
+
end
|
166
|
+
|
167
|
+
def handle_print_resource(res, type, tabs)
|
168
|
+
case type.to_s
|
143
169
|
when "line_in_file"
|
144
170
|
"#{tf(tabs)}exec { \"#{res[:file]}_line_#{tabs}\": \n#{tf(tabs+1)}command => '#{PoolParty::Resources::LineInFile.command(res[:line], res[:file])}',\n#{tf(tabs+1)}path => '/usr/local/bin:$PATH'\n#{tf(tabs)}}"
|
145
171
|
else
|
@@ -151,6 +177,7 @@ module PoolParty
|
|
151
177
|
else
|
152
178
|
type
|
153
179
|
end
|
180
|
+
res.merge!(:klasstype => type.to_s)
|
154
181
|
"#{tf(tabs)}#{klasstype} { \"#{res.delete(:name) }\": #{res.empty? ? "" : "\n#{tf(tabs+1)}#{hash_flush_out(res.reject {|k,v| !permitted_option?(type, k) }).reject {|s| s.nil? }.join(",\n#{tf(tabs+1)}")}"}\n#{tf(tabs)}}"
|
155
182
|
end
|
156
183
|
end
|
@@ -20,7 +20,7 @@ module PoolParty
|
|
20
20
|
if level >= 1
|
21
21
|
@np.center "CloudSpeak"
|
22
22
|
@np << "All the commands set on your cloud can be called within the console"
|
23
|
-
@np << "
|
23
|
+
@np << "instances_by_status('running') - get list of running nodes"
|
24
24
|
@np << "list_of_pending_instances - get list of pending nodes"
|
25
25
|
@np << "available_monitors - get list of the available monitors on the cloud"
|
26
26
|
@np << " note: all monitors can be called as a method on the cloud"
|
@@ -9,12 +9,12 @@ module PoolParty
|
|
9
9
|
class Optioner
|
10
10
|
include Dslify
|
11
11
|
|
12
|
-
default_options(:verbose => false,
|
12
|
+
default_options( :verbose => false,
|
13
13
|
:quiet => false,
|
14
14
|
:cloudname => false,
|
15
15
|
:poolname => false)
|
16
16
|
|
17
|
-
def initialize(args=[], opts={}, &block)
|
17
|
+
def initialize(args=[], opts={}, &block)
|
18
18
|
boolean_args << opts[:boolean_args] if opts.has_key?(:boolean_args)
|
19
19
|
|
20
20
|
@arguments = parse_args(args)
|
@@ -132,11 +132,18 @@ module PoolParty
|
|
132
132
|
|
133
133
|
def process_options
|
134
134
|
end
|
135
|
+
|
136
|
+
def output_options
|
137
|
+
puts ""
|
138
|
+
end
|
135
139
|
|
136
140
|
def output_version
|
137
141
|
puts ::PoolParty::Version
|
138
142
|
end
|
139
143
|
|
144
|
+
def output_options
|
145
|
+
end
|
146
|
+
|
140
147
|
end
|
141
148
|
|
142
149
|
def extract_cloud_from_options(o)
|
data/lib/poolparty/lite.rb
CHANGED
@@ -1,16 +1,26 @@
|
|
1
1
|
require "rubygems"
|
2
2
|
require "json"
|
3
|
-
|
3
|
+
begin
|
4
|
+
require "#{::File.dirname(__FILE__)}/../../vendor/gems/dslify/lib/dslify"
|
5
|
+
rescue Exception => e
|
6
|
+
require "dslify"
|
7
|
+
end
|
4
8
|
require "#{::File.dirname(__FILE__)}/poolparty/default"
|
9
|
+
require "#{::File.dirname(__FILE__)}/modules/user_helpers"
|
5
10
|
require "#{::File.dirname(__FILE__)}/schema"
|
6
11
|
require "#{::File.dirname(__FILE__)}/net/init"
|
12
|
+
require "#{::File.dirname(__FILE__)}/core/string"
|
13
|
+
require "#{::File.dirname(__FILE__)}/core/hash"
|
14
|
+
require "#{::File.dirname(__FILE__)}/poolparty/neighborhoods"
|
7
15
|
require "#{::File.dirname(__FILE__)}/exceptions/RemoteException.rb"
|
8
16
|
|
9
17
|
module PoolParty
|
18
|
+
extend ::PoolParty::Remote
|
19
|
+
|
10
20
|
def self.load_cloud_from_json(json_file_path=nil)
|
11
21
|
json_file = json_file_path || PoolParty::Default.properties_hash_file
|
12
22
|
PoolParty::Schema.new( ::File.read(json_file) ) rescue exit 1
|
13
|
-
end
|
23
|
+
end
|
14
24
|
end
|
15
25
|
|
16
26
|
class String
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module PoolParty
|
2
|
+
module Callbacks
|
3
|
+
module ClassMethods
|
4
|
+
def additional_callbacks(arr=[])
|
5
|
+
@additional_callbacks ||= arr
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
module InstanceMethods
|
10
|
+
def defined_callbacks
|
11
|
+
[
|
12
|
+
:before_bootstrap,
|
13
|
+
:after_bootstrap,
|
14
|
+
:before_configure,
|
15
|
+
:after_configure,
|
16
|
+
:after_create,
|
17
|
+
# TODO: Add after_launch_instance and after_terminate_instance
|
18
|
+
# :after_launch_instance,
|
19
|
+
# :after_terminate_instance,
|
20
|
+
self.class.additional_callbacks
|
21
|
+
].flatten
|
22
|
+
end
|
23
|
+
|
24
|
+
# Callbacks on bootstrap and configuration
|
25
|
+
def setup_callbacks
|
26
|
+
defined_callbacks.each do |meth|
|
27
|
+
unless respond_to?("call_#{meth}_callbacks".to_sym)
|
28
|
+
self.class.module_eval <<-EOE
|
29
|
+
def call_#{meth}_callbacks(*args)
|
30
|
+
plugin_store.each {|a| a.call_#{meth}_callbacks(*args) } if respond_to?(:plugin_store) && plugin_store
|
31
|
+
self.send :#{meth}, *args if respond_to?(:#{meth})
|
32
|
+
end
|
33
|
+
EOE
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.included(receiver)
|
40
|
+
receiver.extend ClassMethods
|
41
|
+
receiver.send :include, InstanceMethods
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -1,14 +1,15 @@
|
|
1
1
|
module PoolParty
|
2
2
|
module CloudDsl
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
|
4
|
+
# TODO: Add to ec2 remoter_base
|
5
|
+
# def mount_ebs_volume_at(id="", loc="/data")
|
6
|
+
# ebs_volume_id id
|
7
|
+
# ebs_volume_mount_point loc
|
8
|
+
# ebs_volume_device "/dev/#{id.sanitize}"
|
9
|
+
#
|
10
|
+
# has_mount(:name => loc, :device => ebs_volume_device)
|
11
|
+
# has_directory(:name => loc)
|
12
|
+
# end
|
12
13
|
|
13
14
|
def dependency_resolver(name='puppet')
|
14
15
|
klass = name.preserved_class_constant("Resolver")
|
@@ -22,8 +23,13 @@ module PoolParty
|
|
22
23
|
def disable(service);dsl_options[service] = :disabled;end
|
23
24
|
|
24
25
|
# Check to see if the package has been enabled
|
25
|
-
def enabled?(srv)
|
26
|
-
|
26
|
+
def enabled?(srv);dsl_options.has_key?(srv) && dsl_options[srv] == :enabled;end
|
27
|
+
|
28
|
+
# All services that are :enabled and have a plugin that corresponds, call on the cloud
|
29
|
+
def add_optional_enabled_services
|
30
|
+
dsl_options.each do |k,v|
|
31
|
+
self.send k if enabled?(k) && respond_to?(k)
|
32
|
+
end
|
27
33
|
end
|
28
34
|
|
29
35
|
end
|
@@ -38,6 +38,8 @@ module PoolParty
|
|
38
38
|
end
|
39
39
|
|
40
40
|
# Set instances with a range or a number
|
41
|
+
# if passed with a hash, call nodes(hash) to return filtered list of
|
42
|
+
# instances
|
41
43
|
def instances(arg)
|
42
44
|
case arg
|
43
45
|
when Range
|
@@ -46,6 +48,8 @@ module PoolParty
|
|
46
48
|
when Fixnum
|
47
49
|
minimum_instances arg
|
48
50
|
maximum_instances arg
|
51
|
+
when Hash
|
52
|
+
nodes(arg)
|
49
53
|
else
|
50
54
|
raise SpecException.new("Don't know how to handle instances cloud input #{arg}")
|
51
55
|
end
|
@@ -54,8 +58,12 @@ module PoolParty
|
|
54
58
|
def setup_dev
|
55
59
|
return true if keypair || master.nil?
|
56
60
|
end
|
57
|
-
|
58
|
-
|
61
|
+
|
62
|
+
# Declare the remoter base
|
63
|
+
# Check to make sure the available_bases is available, otherwise raise
|
64
|
+
# Give access to the cloud the remote_base and instantiate a new
|
65
|
+
# instance of the remote base
|
66
|
+
def using(t, &block)
|
59
67
|
@cloud = self
|
60
68
|
if t && self.class.available_bases.include?(t.to_sym)
|
61
69
|
unless using_remoter?
|
@@ -63,31 +71,31 @@ module PoolParty
|
|
63
71
|
self.class.send :attr_reader, :parent_cloud
|
64
72
|
klass_string = "#{t}".classify
|
65
73
|
klass = "::PoolParty::Remote::#{klass_string}".constantize
|
66
|
-
|
74
|
+
|
75
|
+
@remote_base = klass.send :new, self, &block
|
76
|
+
@remote_base.instance_eval &block if block
|
67
77
|
options[:remote_base] = klass.to_s if respond_to?(:options)
|
68
|
-
|
69
|
-
remote_instance_klass = "::PoolParty::Remote::#{klass_string}RemoteInstance"
|
70
|
-
options[:remote_instance_base] = remote_instance_klass if respond_to?(:options)
|
71
78
|
|
72
79
|
@parent_cloud = @cloud
|
73
|
-
instance_eval "def #{t};@remote_base;end
|
80
|
+
instance_eval "def #{t};@remote_base;end"
|
74
81
|
end
|
75
82
|
else
|
76
|
-
|
83
|
+
raise "Unknown remote base: #{t}"
|
77
84
|
end
|
78
85
|
end
|
79
86
|
|
87
|
+
# Are we using a remoter?
|
80
88
|
def using_remoter?
|
81
|
-
|
89
|
+
!@remote_base.nil?
|
82
90
|
end
|
83
91
|
|
84
92
|
# Keypairs
|
85
93
|
# Use the keypair path
|
86
94
|
def keypair(*args)
|
87
95
|
if args && !args.empty?
|
88
|
-
args.each {|arg| _keypairs.unshift Key.new(arg) }
|
96
|
+
args.each {|arg| _keypairs.unshift Key.new(arg) unless arg.nil? || arg.empty? }
|
89
97
|
else
|
90
|
-
_keypairs.select {|key| key.exists? }.first
|
98
|
+
@keypair ||= _keypairs.select {|key| key.exists? }.first
|
91
99
|
end
|
92
100
|
end
|
93
101
|
|
@@ -97,10 +105,19 @@ module PoolParty
|
|
97
105
|
dsl_options[:keypairs] ||= [Key.new]
|
98
106
|
end
|
99
107
|
|
100
|
-
def full_keypair_path
|
108
|
+
def full_keypair_path
|
101
109
|
@full_keypair_path ||= keypair.full_filepath
|
102
110
|
end
|
103
111
|
|
112
|
+
def update_from_schema(schema)
|
113
|
+
keypairs = schema.options.delete(:keypairs).map {|a| PoolParty::Key.new(a.basename) }
|
114
|
+
options.merge! schema.options
|
115
|
+
dsl_options[:keypairs] = keypairs
|
116
|
+
|
117
|
+
dsl_options[:dependency_resolver] = schema.options.dependency_resolver.split("::")[-1].gsub(/Resolver/, '').preserved_class_constant("Resolver") rescue PoolParty::Chef
|
118
|
+
|
119
|
+
end
|
120
|
+
|
104
121
|
# TODO: deprecate
|
105
122
|
def number_of_resources
|
106
123
|
arr = resources.map do |n, r|
|
@@ -109,14 +126,5 @@ module PoolParty
|
|
109
126
|
resources.map {|n,r| r.size}.inject(0){|sum,i| sum+=i}
|
110
127
|
end
|
111
128
|
|
112
|
-
def plugin_store
|
113
|
-
@plugin_store ||= []
|
114
|
-
end
|
115
|
-
|
116
|
-
# TODO: deprecate
|
117
|
-
def realize_plugins!(force=false)
|
118
|
-
plugin_store.each {|plugin| puts "plugin: #{plugin}";plugin.realize!(force) if plugin }
|
119
|
-
end
|
120
|
-
|
121
129
|
end
|
122
130
|
end
|
@@ -16,7 +16,7 @@ module PoolParty
|
|
16
16
|
#
|
17
17
|
# For example usage, see lib/poolparty/plugins/line.rb
|
18
18
|
def define_resource(name, &block)
|
19
|
-
name.to_s.new_resource_class
|
19
|
+
name.to_s.new_resource_class &block
|
20
20
|
end
|
21
21
|
|
22
22
|
# Allow us to create virtual resources
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module PoolParty
|
2
|
+
module Pinger
|
3
|
+
module ClassMethods
|
4
|
+
# Test to see if the host has the available port open
|
5
|
+
# for response.
|
6
|
+
def ping_port(host, port=22, retry_times=400)
|
7
|
+
connected = false
|
8
|
+
retry_times.times do |i|
|
9
|
+
begin
|
10
|
+
break if connected = TCPSocket.new(host, port).is_a?(TCPSocket)
|
11
|
+
rescue Exception => e
|
12
|
+
sleep(2)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
connected
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
module InstanceMethods
|
20
|
+
def ping_port(ip, port, retry_times=500);self.class.ping_port(ip, port, retry_times);end
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.included(receiver)
|
24
|
+
receiver.extend ClassMethods
|
25
|
+
receiver.send :include, InstanceMethods
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -8,14 +8,18 @@ module PoolParty
|
|
8
8
|
def on_change(str=nil)
|
9
9
|
str ? dsl_options.merge!(:notify => send_if_method(str)) : dsl_options[:notify]
|
10
10
|
end
|
11
|
-
def ensures(str=
|
11
|
+
def ensures(str = :present)
|
12
|
+
if [:absent, :present].include?(str)
|
12
13
|
str == :absent ? is_absent : is_present
|
14
|
+
else
|
15
|
+
str
|
16
|
+
end
|
13
17
|
end
|
14
18
|
def present
|
15
|
-
|
19
|
+
:install
|
16
20
|
end
|
17
21
|
def absent
|
18
|
-
|
22
|
+
:remove
|
19
23
|
end
|
20
24
|
# Allows us to send an ensure to ensure the presence of a resource
|
21
25
|
def is_present(*args)
|
@@ -1,106 +1,107 @@
|
|
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
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
1
|
+
# TODO: Deprecate
|
2
|
+
# require 'thread'
|
3
|
+
# begin
|
4
|
+
# require 'fasttread'
|
5
|
+
# rescue LoadError
|
6
|
+
# end
|
7
|
+
#
|
8
|
+
# class ThreadPool
|
9
|
+
# class Worker
|
10
|
+
# def initialize(thread_queue)
|
11
|
+
# @mutex = Mutex.new
|
12
|
+
# @cv = ConditionVariable.new
|
13
|
+
# @queue = thread_queue
|
14
|
+
# @running = true
|
15
|
+
# @thread = Thread.new do
|
16
|
+
# @mutex.synchronize do
|
17
|
+
# while @running
|
18
|
+
# @cv.wait(@mutex)
|
19
|
+
# block = get_block
|
20
|
+
# if block
|
21
|
+
# @mutex.unlock
|
22
|
+
# block.call
|
23
|
+
# @mutex.lock
|
24
|
+
# reset_block
|
25
|
+
# end
|
26
|
+
# @queue << self
|
27
|
+
# end
|
28
|
+
# end
|
29
|
+
# end
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
# def name
|
33
|
+
# @thread.inspect
|
34
|
+
# end
|
35
|
+
#
|
36
|
+
# def get_block
|
37
|
+
# @block
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
# def set_block(block)
|
41
|
+
# @mutex.synchronize do
|
42
|
+
# raise RuntimeError, "Thread already busy." if @block
|
43
|
+
# @block = block
|
44
|
+
# # Signal the thread in this class, that there's a job to be done
|
45
|
+
# @cv.signal
|
46
|
+
# end
|
47
|
+
# end
|
48
|
+
#
|
49
|
+
# def reset_block
|
50
|
+
# @block = nil
|
51
|
+
# end
|
52
|
+
#
|
53
|
+
# def busy?
|
54
|
+
# @mutex.synchronize { !@block.nil? }
|
55
|
+
# end
|
56
|
+
#
|
57
|
+
# def stop
|
58
|
+
# @mutex.synchronize do
|
59
|
+
# @running = false
|
60
|
+
# @cv.signal
|
61
|
+
# end
|
62
|
+
# @thread.join
|
63
|
+
# end
|
64
|
+
# end
|
65
|
+
#
|
66
|
+
# attr_accessor :max_size
|
67
|
+
#
|
68
|
+
# def initialize(max_size = 10)
|
69
|
+
# @max_size = max_size
|
70
|
+
# @queue = Queue.new
|
71
|
+
# @workers = []
|
72
|
+
# end
|
73
|
+
#
|
74
|
+
# def size
|
75
|
+
# @workers.size
|
76
|
+
# end
|
77
|
+
#
|
78
|
+
# def busy?
|
79
|
+
# @queue.size < @workers.size
|
80
|
+
# end
|
81
|
+
#
|
82
|
+
# def shutdown
|
83
|
+
# @workers.each { |w| w.stop }
|
84
|
+
# @workers = []
|
85
|
+
# end
|
86
|
+
#
|
87
|
+
# alias :join :shutdown
|
88
|
+
#
|
89
|
+
# def process(block=nil,&blk)
|
90
|
+
# block = blk if block_given?
|
91
|
+
# worker = get_worker
|
92
|
+
# worker.set_block(block)
|
93
|
+
# end
|
94
|
+
#
|
95
|
+
# private
|
96
|
+
#
|
97
|
+
# def get_worker
|
98
|
+
# if !@queue.empty? or @workers.size == @max_size
|
99
|
+
# return @queue.pop
|
100
|
+
# else
|
101
|
+
# worker = Worker.new(@queue)
|
102
|
+
# @workers << worker
|
103
|
+
# worker
|
104
|
+
# end
|
105
|
+
# end
|
106
|
+
#
|
107
|
+
# end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module PoolParty
|
2
|
+
# Require all the files in a directory below the base
|
3
|
+
def require_user_directory(dirname)
|
4
|
+
begin
|
5
|
+
cloud_dir = ::File.dirname($pool_specfile)
|
6
|
+
Dir["#{cloud_dir}/#{dirname}/**"].each {|a| require a }
|
7
|
+
rescue Exception => e
|
8
|
+
vputs "Error requiring user directory #{dirname}: #{e}"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
# Add to the suitcase files below the clouds.rb base directory
|
13
|
+
def pack_user_directory(dirname)
|
14
|
+
begin
|
15
|
+
::Suitcase::Zipper.add("#{::File.dirname($pool_specfile)}/#{dirname}", "etc")
|
16
|
+
rescue Exception => e
|
17
|
+
vputs "Error packing user directory #{dirname}: #{e}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|