poolparty 0.2.6 → 0.2.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (208) hide show
  1. data/Manifest.txt +123 -4
  2. data/PostInstall.txt +2 -1
  3. data/bin/cloud +16 -7
  4. data/bin/cloud-provision +9 -5
  5. data/bin/cloud-run +19 -0
  6. data/bin/cloud-ssh +2 -7
  7. data/bin/cloud-start +2 -1
  8. data/bin/pool +3 -3
  9. data/bin/server-build-messenger +20 -0
  10. data/bin/server-fire-cmd +14 -0
  11. data/bin/server-get-load +29 -0
  12. data/bin/server-list-active +25 -0
  13. data/bin/server-list-responding +24 -0
  14. data/bin/server-rerun +24 -0
  15. data/bin/server-start-master +27 -0
  16. data/bin/server-start-node +33 -0
  17. data/config/requirements.rb +1 -1
  18. data/erl_crash.dump +8409 -0
  19. data/lib/erlang/messenger/Emakefile +1 -0
  20. data/lib/erlang/messenger/Makefile +15 -0
  21. data/lib/erlang/messenger/README +5 -0
  22. data/lib/erlang/messenger/Rakefile +60 -0
  23. data/lib/erlang/messenger/control +11 -0
  24. data/lib/erlang/messenger/ebin/master.app +19 -0
  25. data/lib/erlang/messenger/ebin/master_app.beam +0 -0
  26. data/lib/erlang/messenger/ebin/node.app +19 -0
  27. data/lib/erlang/messenger/ebin/node_app.beam +0 -0
  28. data/lib/erlang/messenger/ebin/packager.app +19 -0
  29. data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
  30. data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
  31. data/lib/erlang/messenger/ebin/pm_event_handler.beam +0 -0
  32. data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
  33. data/lib/erlang/messenger/ebin/pm_master_rel-0.1.rel +1 -0
  34. data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
  35. data/lib/erlang/messenger/ebin/pm_node.beam +0 -0
  36. data/lib/erlang/messenger/ebin/pm_node_rel-0.1.rel +1 -0
  37. data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
  38. data/lib/erlang/messenger/ebin/pm_packager.beam +0 -0
  39. data/lib/erlang/messenger/ebin/utils.beam +0 -0
  40. data/lib/erlang/messenger/lib/eunit/AUTHORS +2 -0
  41. data/lib/erlang/messenger/lib/eunit/CHANGELOG +14 -0
  42. data/lib/erlang/messenger/lib/eunit/COPYING +504 -0
  43. data/lib/erlang/messenger/lib/eunit/Makefile +28 -0
  44. data/lib/erlang/messenger/lib/eunit/NOTES +276 -0
  45. data/lib/erlang/messenger/lib/eunit/README +3 -0
  46. data/lib/erlang/messenger/lib/eunit/doc/edoc-info +3 -0
  47. data/lib/erlang/messenger/lib/eunit/doc/erlang.png +0 -0
  48. data/lib/erlang/messenger/lib/eunit/doc/eunit.html +172 -0
  49. data/lib/erlang/messenger/lib/eunit/doc/index.html +17 -0
  50. data/lib/erlang/messenger/lib/eunit/doc/modules-frame.html +12 -0
  51. data/lib/erlang/messenger/lib/eunit/doc/overview-summary.html +984 -0
  52. data/lib/erlang/messenger/lib/eunit/doc/overview.edoc +980 -0
  53. data/lib/erlang/messenger/lib/eunit/doc/packages-frame.html +11 -0
  54. data/lib/erlang/messenger/lib/eunit/doc/stylesheet.css +55 -0
  55. data/lib/erlang/messenger/lib/eunit/ebin/autoload.beam +0 -0
  56. data/lib/erlang/messenger/lib/eunit/ebin/code_monitor.beam +0 -0
  57. data/lib/erlang/messenger/lib/eunit/ebin/eunit.app +21 -0
  58. data/lib/erlang/messenger/lib/eunit/ebin/eunit.appup +1 -0
  59. data/lib/erlang/messenger/lib/eunit/ebin/eunit.beam +0 -0
  60. data/lib/erlang/messenger/lib/eunit/ebin/eunit_autoexport.beam +0 -0
  61. data/lib/erlang/messenger/lib/eunit/ebin/eunit_data.beam +0 -0
  62. data/lib/erlang/messenger/lib/eunit/ebin/eunit_lib.beam +0 -0
  63. data/lib/erlang/messenger/lib/eunit/ebin/eunit_proc.beam +0 -0
  64. data/lib/erlang/messenger/lib/eunit/ebin/eunit_serial.beam +0 -0
  65. data/lib/erlang/messenger/lib/eunit/ebin/eunit_server.beam +0 -0
  66. data/lib/erlang/messenger/lib/eunit/ebin/eunit_striptests.beam +0 -0
  67. data/lib/erlang/messenger/lib/eunit/ebin/eunit_test.beam +0 -0
  68. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tests.beam +0 -0
  69. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tty.beam +0 -0
  70. data/lib/erlang/messenger/lib/eunit/ebin/file_monitor.beam +0 -0
  71. data/lib/erlang/messenger/lib/eunit/examples/eunit_examples.erl +339 -0
  72. data/lib/erlang/messenger/lib/eunit/examples/fib.erl +19 -0
  73. data/lib/erlang/messenger/lib/eunit/examples/tests.txt +1 -0
  74. data/lib/erlang/messenger/lib/eunit/include/eunit.hrl +313 -0
  75. data/lib/erlang/messenger/lib/eunit/src/Makefile +46 -0
  76. data/lib/erlang/messenger/lib/eunit/src/autoload.erl +388 -0
  77. data/lib/erlang/messenger/lib/eunit/src/code_monitor.erl +243 -0
  78. data/lib/erlang/messenger/lib/eunit/src/eunit.app.src +21 -0
  79. data/lib/erlang/messenger/lib/eunit/src/eunit.appup.src +1 -0
  80. data/lib/erlang/messenger/lib/eunit/src/eunit.erl +196 -0
  81. data/lib/erlang/messenger/lib/eunit/src/eunit_autoexport.erl +102 -0
  82. data/lib/erlang/messenger/lib/eunit/src/eunit_data.erl +798 -0
  83. data/lib/erlang/messenger/lib/eunit/src/eunit_internal.hrl +48 -0
  84. data/lib/erlang/messenger/lib/eunit/src/eunit_lib.erl +682 -0
  85. data/lib/erlang/messenger/lib/eunit/src/eunit_proc.erl +552 -0
  86. data/lib/erlang/messenger/lib/eunit/src/eunit_serial.erl +157 -0
  87. data/lib/erlang/messenger/lib/eunit/src/eunit_server.erl +340 -0
  88. data/lib/erlang/messenger/lib/eunit/src/eunit_striptests.erl +64 -0
  89. data/lib/erlang/messenger/lib/eunit/src/eunit_test.erl +334 -0
  90. data/lib/erlang/messenger/lib/eunit/src/eunit_tests.erl +45 -0
  91. data/lib/erlang/messenger/lib/eunit/src/eunit_tty.erl +272 -0
  92. data/lib/erlang/messenger/lib/eunit/src/file_monitor.erl +409 -0
  93. data/lib/erlang/messenger/lib/eunit/sys.config +9 -0
  94. data/lib/erlang/messenger/lib/eunit/vsn.mk +1 -0
  95. data/lib/erlang/messenger/pm_master_rel-0.1.boot +0 -0
  96. data/lib/erlang/messenger/pm_master_rel-0.1.script +242 -0
  97. data/lib/erlang/messenger/pm_node_rel-0.1.boot +0 -0
  98. data/lib/erlang/messenger/pm_node_rel-0.1.script +242 -0
  99. data/lib/erlang/messenger/src/master_app.erl +39 -0
  100. data/lib/erlang/messenger/src/node_app.erl +39 -0
  101. data/lib/erlang/messenger/src/pm_client.erl +19 -0
  102. data/lib/erlang/messenger/src/pm_cluster.erl +57 -0
  103. data/lib/erlang/messenger/src/pm_event_handler.erl +21 -0
  104. data/lib/erlang/messenger/src/pm_master.erl +118 -0
  105. data/lib/erlang/messenger/src/pm_master_supervisor.erl +40 -0
  106. data/lib/erlang/messenger/src/pm_node.erl +124 -0
  107. data/lib/erlang/messenger/src/pm_node_supervisor.erl +40 -0
  108. data/lib/erlang/messenger/src/pm_packager.erl +73 -0
  109. data/lib/erlang/messenger/src/utils.erl +38 -0
  110. data/lib/poolparty/base_packages/haproxy.rb +9 -2
  111. data/lib/poolparty/base_packages/heartbeat.rb +40 -28
  112. data/lib/poolparty/base_packages/poolparty.rb +39 -16
  113. data/lib/poolparty/base_packages/ruby.rb +2 -3
  114. data/lib/poolparty/config/allowed_commands.yml +1 -0
  115. data/lib/poolparty/core/array.rb +5 -2
  116. data/lib/poolparty/core/hash.rb +16 -2
  117. data/lib/poolparty/core/string.rb +9 -2
  118. data/lib/poolparty/core/symbol.rb +2 -2
  119. data/lib/poolparty/dependency_resolutions/base.rb +12 -0
  120. data/lib/poolparty/dependency_resolutions/puppet.rb +49 -0
  121. data/lib/poolparty/exceptions/UnacceptableCommand.rb +5 -0
  122. data/lib/poolparty/helpers/console.rb +3 -2
  123. data/lib/poolparty/helpers/display.rb +3 -3
  124. data/lib/poolparty/helpers/messenger.rb +29 -0
  125. data/lib/poolparty/helpers/optioner.rb +6 -2
  126. data/lib/poolparty/helpers/provisioner_base.rb +18 -11
  127. data/lib/poolparty/helpers/provisioners/master.rb +24 -22
  128. data/lib/poolparty/helpers/provisioners/slave.rb +8 -4
  129. data/lib/poolparty/modules/definable_resource.rb +1 -0
  130. data/lib/poolparty/modules/file_writer.rb +11 -10
  131. data/lib/poolparty/modules/method_missing_sugar.rb +1 -1
  132. data/lib/poolparty/modules/pretty_printer.rb +11 -11
  133. data/lib/poolparty/modules/resourcing_dsl.rb +61 -0
  134. data/lib/poolparty/monitors/base_monitor.rb +17 -3
  135. data/lib/poolparty/monitors/monitors/cpu_monitor.rb +15 -0
  136. data/lib/poolparty/monitors/monitors/memory_monitor.rb +23 -0
  137. data/lib/poolparty/net/remote_instance.rb +6 -1
  138. data/lib/poolparty/net/remoter.rb +23 -5
  139. data/lib/poolparty/net/remoter_base.rb +5 -1
  140. data/lib/poolparty/plugins/git.rb +22 -24
  141. data/lib/poolparty/pool/base.rb +22 -6
  142. data/lib/poolparty/pool/cloud.rb +28 -4
  143. data/lib/poolparty/pool/custom_resource.rb +6 -6
  144. data/lib/poolparty/pool/loggable.rb +3 -0
  145. data/lib/poolparty/pool/pool.rb +1 -1
  146. data/lib/poolparty/pool/resource.rb +58 -94
  147. data/lib/poolparty/pool/resources/class_package.rb +6 -6
  148. data/lib/poolparty/pool/resources/conditional.rb +5 -1
  149. data/lib/poolparty/pool/resources/exec.rb +6 -2
  150. data/lib/poolparty/pool/resources/gem.rb +22 -8
  151. data/lib/poolparty/pool/resources/remote_file.rb +5 -1
  152. data/lib/poolparty/pool/resources/symlink.rb +25 -0
  153. data/lib/poolparty/pool/resources/variable.rb +8 -7
  154. data/lib/poolparty/pool/tmp/.ppkeys +3 -0
  155. data/lib/poolparty/pool/tmp/happydayz +1 -0
  156. data/lib/poolparty/pool/tmp/install_master.sh +33 -0
  157. data/lib/poolparty/pool/tmp/pool.spec +11 -0
  158. data/lib/poolparty/pool/tmp/poolparty.pp +600 -0
  159. data/lib/poolparty/pool/tmp/tc-instances.list +1 -0
  160. data/lib/poolparty/templates/cib.xml +54 -0
  161. data/lib/poolparty/templates/ha.cf +12 -3
  162. data/lib/poolparty/templates/haproxy.conf +3 -3
  163. data/lib/poolparty/templates/haresources +3 -0
  164. data/lib/poolparty/templates/poolparty.monitor +14 -0
  165. data/lib/poolparty/templates/puppet.conf +3 -4
  166. data/lib/poolparty/version.rb +1 -1
  167. data/lib/poolparty.rb +9 -6
  168. data/poolparty.gemspec +7 -6
  169. data/setup.rb +3 -3
  170. data/spec/poolparty/bin/console_spec.rb +1 -1
  171. data/spec/poolparty/core/array_spec.rb +5 -0
  172. data/spec/poolparty/core/hash_spec.rb +19 -1
  173. data/spec/poolparty/core/string_spec.rb +13 -0
  174. data/spec/poolparty/dependency_resolutions/base_spec.rb +11 -0
  175. data/spec/poolparty/helpers/messenger_spec.rb +14 -0
  176. data/spec/poolparty/helpers/optioner_spec.rb +2 -1
  177. data/spec/poolparty/helpers/provisioner_base_spec.rb +1 -1
  178. data/spec/poolparty/helpers/provisioners/master_spec.rb +2 -2
  179. data/spec/poolparty/helpers/provisioners/slave_spec.rb +3 -3
  180. data/spec/poolparty/modules/file_writer_spec.rb +9 -0
  181. data/spec/poolparty/monitors/base_monitor_spec.rb +19 -0
  182. data/spec/poolparty/monitors/monitors/cpu_monitor_spec.rb +17 -0
  183. data/spec/poolparty/net/remote_instance_spec.rb +6 -1
  184. data/spec/poolparty/net/remote_spec.rb +51 -42
  185. data/spec/poolparty/net/remoter_spec.rb +2 -1
  186. data/spec/poolparty/plugins/git_spec.rb +2 -2
  187. data/spec/poolparty/pool/base_spec.rb +20 -2
  188. data/spec/poolparty/pool/cloud_spec.rb +30 -1
  189. data/spec/poolparty/pool/custom_resource_spec.rb +2 -2
  190. data/spec/poolparty/pool/plugin_spec.rb +4 -4
  191. data/spec/poolparty/pool/pool_spec.rb +1 -1
  192. data/spec/poolparty/pool/resource_spec.rb +66 -0
  193. data/spec/poolparty/pool/resources/gem_spec.rb +29 -3
  194. data/spec/poolparty/pool/resources/symlink_spec.rb +22 -0
  195. data/spec/poolparty/pool/resources/variable_spec.rb +4 -0
  196. data/spec/poolparty/spec_helper.rb +5 -0
  197. data/tasks/cloud.rake +0 -54
  198. data/tasks/development.rake +0 -12
  199. data/tasks/ec2.rake +1 -16
  200. data/tasks/instance.rake +0 -61
  201. data/test_manifest.pp +286 -166
  202. data/website/index.html +5 -5
  203. data/website/index.txt +3 -3
  204. metadata +137 -8
  205. data/bin/pool-start-monitor +0 -1
  206. data/lib/erlang/eb_server.erl +0 -27
  207. data/lib/poolparty/plugins/gem_package.rb +0 -17
  208. data/spec/poolparty/modules/tmp/willy/nilly.rb +0 -1
@@ -0,0 +1,242 @@
1
+ %% script generated at {2008,10,23} {20,39,52}
2
+ {script,
3
+ {"node","0.1"},
4
+ [{preLoaded,
5
+ [erlang,erl_prim_loader,prim_file,prim_inet,init,otp_ring0]},
6
+ {progress,preloaded},
7
+ {path,
8
+ ["/opt/local/lib/erlang/lib/kernel-2.12.2/ebin",
9
+ "/opt/local/lib/erlang/lib/stdlib-1.15.2/ebin"]},
10
+ {primLoad,[error_handler]},
11
+ {kernel_load_completed},
12
+ {progress,kernel_load_completed},
13
+ {path,["/opt/local/lib/erlang/lib/kernel-2.12.2/ebin"]},
14
+ {primLoad,
15
+ [zlib,wrap_log_reader,user_sup,user_drv,user,seq_trace,rpc,
16
+ ram_file,pg2,packages,os,net_kernel,net_adm,net,
17
+ kernel_config,kernel,inet_udp,inet_tcp_dist,inet_tcp,
18
+ inet_sctp,inet_res,inet_parse,inet_hosts,
19
+ inet_gethost_native,inet_dns,inet_db,inet_config,inet6_udp,
20
+ inet6_tcp_dist,inet6_tcp,inet,hipe_unified_loader,heart,
21
+ group,global_search,global_group,global,gen_udp,gen_tcp,
22
+ gen_sctp,file_server,file_io_server,file,erts_debug,
23
+ error_logger,erl_reply,erl_epmd,erl_distribution,erl_ddll,
24
+ erl_boot_server,dist_util,dist_ac,disk_log_sup,
25
+ disk_log_server,disk_log_1,disk_log,code_server,code_aux,
26
+ code,auth,application_starter,application_master,
27
+ application_controller,application]},
28
+ {path,["/opt/local/lib/erlang/lib/stdlib-1.15.2/ebin"]},
29
+ {primLoad,
30
+ [zip,win32reg,timer,sys,supervisor_bridge,supervisor,string,
31
+ sofs,slave,shell_default,shell,sets,regexp,random,queue,
32
+ qlc_pt,qlc,proplists,proc_lib,pool,pg,otp_internal,ordsets,
33
+ orddict,ms_transform,math,log_mf_h,lists,lib,io_lib_pretty,
34
+ io_lib_fread,io_lib_format,io_lib,io,gen_server,gen_fsm,
35
+ gen_event,gen,gb_trees,gb_sets,filename,filelib,file_sorter,
36
+ eval_bits,ets,escript,error_logger_tty_h,
37
+ error_logger_file_h,erl_tar,erl_scan,erl_pp,erl_posix_msg,
38
+ erl_parse,erl_lint,erl_internal,erl_expand_records,erl_eval,
39
+ erl_compile,erl_bits,epp,edlin_expand,edlin,digraph_utils,
40
+ digraph,dict,dets_v9,dets_v8,dets_utils,dets_sup,
41
+ dets_server,dets,calendar,c,beam_lib,base64,array]},
42
+ {path,["/opt/local/lib/erlang/lib/inets-5.0.5/ebin"]},
43
+ {primLoad,
44
+ [tftp_sup,tftp_lib,tftp_file,tftp_engine,tftp_binary,tftp,
45
+ mod_trace,mod_security_server,mod_security,
46
+ mod_responsecontrol,mod_range,mod_log,mod_include,
47
+ mod_htaccess,mod_head,mod_get,mod_esi,mod_disk_log,mod_dir,
48
+ mod_cgi,mod_browser,mod_auth_server,mod_auth_plain,
49
+ mod_auth_mnesia,mod_auth_dets,mod_auth,mod_alias,
50
+ mod_actions,inets_sup,inets_service,inets_app,inets,
51
+ httpd_util,httpd_sup,httpd_socket,httpd_script_env,
52
+ httpd_response,httpd_request_handler,httpd_request,
53
+ httpd_misc_sup,httpd_manager,httpd_log,httpd_instance_sup,
54
+ httpd_file,httpd_example,httpd_esi,httpd_conf,httpd_cgi,
55
+ httpd_acceptor_sup,httpd_acceptor,httpd,httpc_sup,
56
+ httpc_response,httpc_request,httpc_profile_sup,
57
+ httpc_manager,httpc_handler_sup,httpc_handler,http_util,
58
+ http_uri,http_transport,http_response,http_request,
59
+ http_cookie,http_chunk,http,ftp_sup,ftp_response,
60
+ ftp_progress,ftp]},
61
+ {path,["/opt/local/lib/erlang/lib/crypto-1.5.1.1/ebin"]},
62
+ {primLoad,[crypto_sup,crypto_server,crypto_app,crypto]},
63
+ {path,["/opt/local/lib/erlang/lib/sasl-2.1.5.2/ebin"]},
64
+ {primLoad,
65
+ [systools_relup,systools_rc,systools_make,systools_lib,
66
+ systools,sasl_report_tty_h,sasl_report_file_h,sasl_report,
67
+ sasl,release_handler_1,release_handler,rb_format_supp,rb,
68
+ overload,misc_supp,format_lib_supp,erlsrv,alarm_handler]},
69
+ {path,
70
+ ["/Users/auser/Sites/work/citrusbyte/internal/gems/pool-party/poolparty/lib/erlang/messenger/ebin"]},
71
+ {primLoad,[utils,pm_node_supervisor,pm_node,node_app]},
72
+ {progress,modules_loaded},
73
+ {path,
74
+ ["/opt/local/lib/erlang/lib/kernel-2.12.2/ebin",
75
+ "/opt/local/lib/erlang/lib/stdlib-1.15.2/ebin",
76
+ "/opt/local/lib/erlang/lib/inets-5.0.5/ebin",
77
+ "/opt/local/lib/erlang/lib/crypto-1.5.1.1/ebin",
78
+ "/opt/local/lib/erlang/lib/sasl-2.1.5.2/ebin",
79
+ "/Users/auser/Sites/work/citrusbyte/internal/gems/pool-party/poolparty/lib/erlang/messenger/ebin"]},
80
+ {kernelProcess,heart,{heart,start,[]}},
81
+ {kernelProcess,error_logger,{error_logger,start_link,[]}},
82
+ {kernelProcess,application_controller,
83
+ {application_controller,start,
84
+ [{application,kernel,
85
+ [{description,"ERTS CXC 138 10"},
86
+ {vsn,"2.12.2"},
87
+ {id,[]},
88
+ {modules,
89
+ [application,application_controller,application_master,
90
+ application_starter,auth,code,code_aux,packages,
91
+ code_server,dist_util,erl_boot_server,
92
+ erl_distribution,erl_prim_loader,erl_reply,erlang,
93
+ error_handler,error_logger,file,file_server,
94
+ file_io_server,prim_file,global,global_group,
95
+ global_search,group,heart,hipe_unified_loader,
96
+ inet6_tcp,inet6_tcp_dist,inet6_udp,inet_config,
97
+ inet_hosts,inet_gethost_native,inet_tcp_dist,init,
98
+ kernel,kernel_config,net,net_adm,net_kernel,os,
99
+ ram_file,rpc,user,user_drv,user_sup,disk_log,
100
+ disk_log_1,disk_log_server,disk_log_sup,dist_ac,
101
+ erl_ddll,erl_epmd,erts_debug,gen_tcp,gen_udp,gen_sctp,
102
+ prim_inet,inet,inet_db,inet_dns,inet_parse,inet_res,
103
+ inet_tcp,inet_udp,inet_sctp,pg2,seq_trace,
104
+ wrap_log_reader,zlib,otp_ring0]},
105
+ {registered,
106
+ [application_controller,erl_reply,auth,boot_server,
107
+ code_server,disk_log_server,disk_log_sup,
108
+ erl_prim_loader,error_logger,file_server_2,
109
+ fixtable_server,global_group,global_name_server,heart,
110
+ init,kernel_config,kernel_sup,net_kernel,net_sup,rex,
111
+ user,os_server,ddll_server,erl_epmd,inet_db,pg2]},
112
+ {applications,[]},
113
+ {included_applications,[]},
114
+ {env,[{error_logger,tty}]},
115
+ {start_phases,undefined},
116
+ {maxT,infinity},
117
+ {maxP,infinity},
118
+ {mod,{kernel,[]}}]}]}},
119
+ {progress,init_kernel_started},
120
+ {apply,
121
+ {application,load,
122
+ [{application,stdlib,
123
+ [{description,"ERTS CXC 138 10"},
124
+ {vsn,"1.15.2"},
125
+ {id,[]},
126
+ {modules,
127
+ [array,base64,beam_lib,c,calendar,dets,dets_server,
128
+ dets_sup,dets_utils,dets_v8,dets_v9,dict,digraph,
129
+ digraph_utils,edlin,edlin_expand,epp,eval_bits,
130
+ erl_bits,erl_compile,erl_eval,erl_expand_records,
131
+ erl_internal,erl_lint,erl_parse,erl_posix_msg,erl_pp,
132
+ erl_scan,erl_tar,error_logger_file_h,
133
+ error_logger_tty_h,escript,ets,file_sorter,filelib,
134
+ filename,gb_trees,gb_sets,gen,gen_event,gen_fsm,
135
+ gen_server,io,io_lib,io_lib_format,io_lib_fread,
136
+ io_lib_pretty,lib,lists,log_mf_h,math,ms_transform,
137
+ orddict,ordsets,otp_internal,pg,pool,proc_lib,
138
+ proplists,qlc,qlc_pt,queue,random,regexp,sets,shell,
139
+ shell_default,slave,sofs,string,supervisor,
140
+ supervisor_bridge,sys,timer,win32reg,zip]},
141
+ {registered,
142
+ [timer_server,rsh_starter,take_over_monitor,
143
+ pool_master,dets]},
144
+ {applications,[kernel]},
145
+ {included_applications,[]},
146
+ {env,[]},
147
+ {start_phases,undefined},
148
+ {maxT,infinity},
149
+ {maxP,infinity}]}]}},
150
+ {apply,
151
+ {application,load,
152
+ [{application,inets,
153
+ [{description,"INETS CXC 138 49"},
154
+ {vsn,"5.0.5"},
155
+ {id,[]},
156
+ {modules,
157
+ [inets,inets_sup,inets_app,inets_service,ftp,
158
+ ftp_progress,ftp_response,ftp_sup,http,httpc_handler,
159
+ httpc_handler_sup,httpc_manager,httpc_profile_sup,
160
+ httpc_request,httpc_response,httpc_sup,http_cookie,
161
+ http_uri,http_chunk,http_request,http_response,
162
+ http_transport,http_util,httpd,httpd_acceptor,
163
+ httpd_acceptor_sup,httpd_cgi,httpd_conf,httpd_esi,
164
+ httpd_example,httpd_file,httpd_instance_sup,httpd_log,
165
+ httpd_manager,httpd_misc_sup,httpd_request,
166
+ httpd_request_handler,httpd_response,httpd_script_env,
167
+ httpd_socket,httpd_sup,httpd_util,mod_actions,
168
+ mod_alias,mod_auth,mod_auth_dets,mod_auth_mnesia,
169
+ mod_auth_plain,mod_auth_server,mod_browser,mod_cgi,
170
+ mod_dir,mod_disk_log,mod_esi,mod_get,mod_head,
171
+ mod_htaccess,mod_include,mod_log,mod_range,
172
+ mod_responsecontrol,mod_security,mod_security_server,
173
+ mod_trace,tftp,tftp_binary,tftp_engine,tftp_file,
174
+ tftp_lib,tftp_sup]},
175
+ {registered,[inets_sup,httpc_manager]},
176
+ {applications,[kernel,stdlib]},
177
+ {included_applications,[]},
178
+ {env,[]},
179
+ {start_phases,undefined},
180
+ {maxT,infinity},
181
+ {maxP,infinity},
182
+ {mod,{inets_app,[]}}]}]}},
183
+ {apply,
184
+ {application,load,
185
+ [{application,crypto,
186
+ [{description,"CRYPTO version 1"},
187
+ {vsn,"1.5.1.1"},
188
+ {id,[]},
189
+ {modules,[crypto,crypto_app,crypto_sup,crypto_server]},
190
+ {registered,[crypto_sup,crypto_server]},
191
+ {applications,[kernel,stdlib]},
192
+ {included_applications,[]},
193
+ {env,[]},
194
+ {start_phases,undefined},
195
+ {maxT,infinity},
196
+ {maxP,infinity},
197
+ {mod,{crypto_app,[]}}]}]}},
198
+ {apply,
199
+ {application,load,
200
+ [{application,sasl,
201
+ [{description,"SASL CXC 138 11"},
202
+ {vsn,"2.1.5.2"},
203
+ {id,[]},
204
+ {modules,
205
+ [sasl,alarm_handler,format_lib_supp,misc_supp,overload,
206
+ rb,rb_format_supp,release_handler,release_handler_1,
207
+ erlsrv,sasl_report,sasl_report_tty_h,
208
+ sasl_report_file_h,systools,systools_make,systools_rc,
209
+ systools_relup,systools_lib]},
210
+ {registered,
211
+ [sasl_sup,alarm_handler,overload,release_handler]},
212
+ {applications,[kernel,stdlib]},
213
+ {included_applications,[]},
214
+ {env,[{sasl_error_logger,tty},{errlog_type,all}]},
215
+ {start_phases,undefined},
216
+ {maxT,infinity},
217
+ {maxP,infinity},
218
+ {mod,{sasl,[]}}]}]}},
219
+ {apply,
220
+ {application,load,
221
+ [{application,node,
222
+ [{description,"Node Server for PoolParty"},
223
+ {vsn,"0.1"},
224
+ {id,[]},
225
+ {modules,[node_app,pm_node,pm_node_supervisor,utils]},
226
+ {registered,[pm_node,pm_node_supervisor]},
227
+ {applications,[kernel,stdlib]},
228
+ {included_applications,[]},
229
+ {env,[]},
230
+ {start_phases,[]},
231
+ {maxT,infinity},
232
+ {maxP,infinity},
233
+ {mod,{node_app,[]}}]}]}},
234
+ {progress,applications_loaded},
235
+ {apply,{application,start_boot,[kernel,permanent]}},
236
+ {apply,{application,start_boot,[stdlib,permanent]}},
237
+ {apply,{application,start_boot,[inets,permanent]}},
238
+ {apply,{application,start_boot,[crypto,permanent]}},
239
+ {apply,{application,start_boot,[sasl,permanent]}},
240
+ {apply,{application,start_boot,[node,permanent]}},
241
+ {apply,{c,erlangrc,[]}},
242
+ {progress,started}]}.
@@ -0,0 +1,39 @@
1
+ -module (master_app).
2
+ -behaviour(application).
3
+
4
+ %% Application callbacks
5
+ -export([start/2, stop/1]).
6
+
7
+ %%====================================================================
8
+ %% Application callbacks
9
+ %%====================================================================
10
+ %%--------------------------------------------------------------------
11
+ %% Function: start(Type, StartArgs) -> {ok, Pid} |
12
+ %% {ok, Pid, State} |
13
+ %% {error, Reason}
14
+ %% Description: This function is called whenever an application
15
+ %% is started using application:start/1,2, and should start the processes
16
+ %% of the application. If the application is structured according to the
17
+ %% OTP design principles as a supervision tree, this means starting the
18
+ %% top supervisor of the tree.
19
+ %%--------------------------------------------------------------------
20
+ start(_Type, StartArgs) ->
21
+ case pm_master_supervisor:start_link(StartArgs) of
22
+ {ok, Pid} ->
23
+ {ok, Pid};
24
+ Error ->
25
+ Error
26
+ end.
27
+
28
+ %%--------------------------------------------------------------------
29
+ %% Function: stop(State) -> void()
30
+ %% Description: This function is called whenever an application
31
+ %% has stopped. It is intended to be the opposite of Module:start/2 and
32
+ %% should do any necessary cleaning up. The return value is ignored.
33
+ %%--------------------------------------------------------------------
34
+ stop(_State) ->
35
+ ok.
36
+
37
+ %%====================================================================
38
+ %% Internal functions
39
+ %%====================================================================
@@ -0,0 +1,39 @@
1
+ -module (node_app).
2
+ -behaviour(application).
3
+
4
+ %% Application callbacks
5
+ -export([start/2, stop/1]).
6
+
7
+ %%====================================================================
8
+ %% Application callbacks
9
+ %%====================================================================
10
+ %%--------------------------------------------------------------------
11
+ %% Function: start(Type, StartArgs) -> {ok, Pid} |
12
+ %% {ok, Pid, State} |
13
+ %% {error, Reason}
14
+ %% Description: This function is called whenever an application
15
+ %% is started using application:start/1,2, and should start the processes
16
+ %% of the application. If the application is structured according to the
17
+ %% OTP design principles as a supervision tree, this means starting the
18
+ %% top supervisor of the tree.
19
+ %%--------------------------------------------------------------------
20
+ start(_Type, StartArgs) ->
21
+ case pm_node_supervisor:start_link(StartArgs) of
22
+ {ok, Pid} ->
23
+ {ok, Pid};
24
+ Error ->
25
+ Error
26
+ end.
27
+
28
+ %%--------------------------------------------------------------------
29
+ %% Function: stop(State) -> void()
30
+ %% Description: This function is called whenever an application
31
+ %% has stopped. It is intended to be the opposite of Module:start/2 and
32
+ %% should do any necessary cleaning up. The return value is ignored.
33
+ %%--------------------------------------------------------------------
34
+ stop(_State) ->
35
+ ok.
36
+
37
+ %%====================================================================
38
+ %% Internal functions
39
+ %%====================================================================
@@ -0,0 +1,19 @@
1
+ -module (pm_client).
2
+ -export ([init/0, send_cmd/1, reconfigure_cloud/0, get_load/1, get_live_nodes/0]).
3
+ -export ([shutdown/0]).
4
+ % Run commands on the running master process
5
+ % erl -pa ./ebin/ -run pm_client get_load cpu -run init stop -noshell
6
+
7
+ % Connect to the master
8
+ init() -> net_adm:ping(master).
9
+ % Send the command Cmd to the pm_master process
10
+ send_cmd(Cmd) -> pm_master:fire_cmd(Cmd).
11
+ % Reconfigure the cloud
12
+ reconfigure_cloud() -> pm_master:reconfigure_cloud().
13
+ % Get the load on the cloud of type Type
14
+ get_load(Type) -> pm_master:get_load(Type).
15
+ % Get a list of the live nodes
16
+ get_live_nodes() -> pm_master:get_live_nodes().
17
+ % Terminate the cloud messenger
18
+ % This sends a shutdown to the whole cloud
19
+ shutdown() -> pm_master:shutdown_cloud().
@@ -0,0 +1,57 @@
1
+ -module(pm_cluster).
2
+
3
+ -ifdef(EUNIT).
4
+ -include_lib("eunit/include/eunit.hrl").
5
+ -endif.
6
+
7
+ -export ([slaves/1, slaves/0]).
8
+ -export ([get_live_nodes/0,refresh_live_nodes/0]).
9
+ -export ([send_call/2, master/0]).
10
+
11
+ send_call(Type, Args) ->
12
+ Nodes = get_live_nodes(),
13
+ rpc:multicall(Nodes, pm_node, Type, [Args]).
14
+
15
+ master() ->
16
+ {erlang:node()}.
17
+
18
+ slaves([]) ->
19
+ ok;
20
+
21
+ slaves([Host|Hosts]) ->
22
+ Args = erl_system_args(),
23
+ NodeName = "pp_cluster",
24
+ {ok, Node} = slave:start_link(Host, NodeName, Args),
25
+ io:format("Erlang node started = [~p]~n", [Node]),
26
+ slaves(Hosts).
27
+
28
+ slaves() ->
29
+ get_live_nodes().
30
+
31
+ erl_system_args()->
32
+ Shared = case init:get_argument(shared) of
33
+ error -> " ";
34
+ {ok,[[]]} -> " -shared "
35
+ end,
36
+ lists:append(
37
+ ["-rsh ssh -setcookie",
38
+ atom_to_list(erlang:get_cookie()),
39
+ Shared, " +Mea r10b "
40
+ ]).
41
+
42
+ refresh_live_nodes() ->
43
+ String = ". /etc/profile && server-list-active -c name",
44
+ Nodes = string:tokens(os:cmd(String), "\n\t"),
45
+ io:format("nodes: ~p~n", [Nodes]),
46
+ lists:map(
47
+ fun(No) ->
48
+ io:format("pinging ~p~n", [list_to_atom(lists:append("pp_cluster@",No))]),
49
+ net_adm:ping(list_to_atom(lists:append("@pp_cluster", No)))
50
+ end,
51
+ Nodes),
52
+ ok.
53
+ % Get the live nodes
54
+ get_live_nodes() ->
55
+ nodes().
56
+ %% Do not forget to start erlang with a command like:
57
+ %% erl -rsh ssh -sname clustmaster
@@ -0,0 +1,21 @@
1
+ % Handles generic events
2
+ -module (pm_event_handler).
3
+ -export ([make/0, add_handler/1, event/1]).
4
+
5
+ % Make a new event handler
6
+ make() ->
7
+ register(?MODULE, spawn(fun() -> handle_events(fun no_op/1) end )).
8
+
9
+ add_handler(Fun) ->
10
+ whereis(?MODULE) ! {add, Fun}.
11
+
12
+ event(X) -> whereis(?MODULE) ! {event, X}.
13
+
14
+ handle_events(Fun) ->
15
+ receive
16
+ {event, Any} ->
17
+ (catch Fun(Any)),
18
+ handle_events(Fun)
19
+ end.
20
+
21
+ no_op(_) -> void.
@@ -0,0 +1,118 @@
1
+ %%%-------------------------------------------------------------------
2
+ %%% File : pm_master.erl
3
+ %%% Author : Ari Lerner <arilerner@mac.com>
4
+ %%% The client is a running process that will run on the master node
5
+ %%% and spawn requests to the pm_nodes and compile the responses
6
+ %%% for use within the poolparty network
7
+ %%%-------------------------------------------------------------------
8
+ -module(pm_master).
9
+ -behaviour(gen_server).
10
+
11
+ %% API
12
+ -export([start_link/0]).
13
+
14
+ %% gen_server callbacks
15
+ -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
16
+ terminate/2, code_change/3]).
17
+ -record(state, {}).
18
+ -define(SERVER, ?MODULE).
19
+
20
+ % Client function definitions
21
+ -export ([get_load/1, reconfigure_cloud/0, fire_cmd/1]).
22
+ -export ([shutdown_cloud/0]).
23
+
24
+ %%====================================================================
25
+ %% API
26
+ %%====================================================================
27
+ %%--------------------------------------------------------------------
28
+ %% Function: start_link() -> {ok,Pid} | ignore | {error,Error}
29
+ %% Description: Starts the server
30
+ %%--------------------------------------------------------------------
31
+ start_link() ->
32
+ gen_server:start_link({global, ?SERVER}, ?MODULE, [], []).
33
+
34
+ %%====================================================================
35
+ %% gen_server callbacks
36
+ %%====================================================================
37
+
38
+ %%--------------------------------------------------------------------
39
+ %% Function: init(Args) -> {ok, State} |
40
+ %% {ok, State, Timeout} |
41
+ %% ignore |
42
+ %% {stop, Reason}
43
+ %% Description: Initiates the server
44
+ %%--------------------------------------------------------------------
45
+ init([]) ->
46
+ {ok, #state{}}.
47
+
48
+ %%--------------------------------------------------------------------
49
+ %% Function: %% handle_call(Request, From, State) -> {reply, Reply, State} |
50
+ %% {reply, Reply, State, Timeout} |
51
+ %% {noreply, State} |
52
+ %% {noreply, State, Timeout} |
53
+ %% {stop, Reason, Reply, State} |
54
+ %% {stop, Reason, State}
55
+ %% Description: Handling call messages
56
+ %%--------------------------------------------------------------------
57
+ handle_call(_Request, _From, State) ->
58
+ Reply = ok,
59
+ {reply, Reply, State}.
60
+
61
+ %%--------------------------------------------------------------------
62
+ %% Function: handle_cast(Msg, State) -> {noreply, State} |
63
+ %% {noreply, State, Timeout} |
64
+ %% {stop, Reason, State}
65
+ %% Description: Handling cast messages
66
+ %%--------------------------------------------------------------------
67
+ handle_cast(_Msg, State) ->
68
+ {noreply, State}.
69
+
70
+ %%--------------------------------------------------------------------
71
+ %% Function: handle_info(Info, State) -> {noreply, State} |
72
+ %% {noreply, State, Timeout} |
73
+ %% {stop, Reason, State}
74
+ %% Description: Handling all non call/cast messages
75
+ %%--------------------------------------------------------------------
76
+ handle_info(_Info, State) ->
77
+ {noreply, State}.
78
+
79
+ %%--------------------------------------------------------------------
80
+ %% Function: terminate(Reason, State) -> void()
81
+ %% Description: This function is called by a gen_server when it is about to
82
+ %% terminate. It should be the opposite of Module:init/1 and do any necessary
83
+ %% cleaning up. When it returns, the gen_server terminates with Reason.
84
+ %% The return value is ignored.
85
+ %%--------------------------------------------------------------------
86
+ terminate(_Reason, _State) ->
87
+ ok.
88
+
89
+ %%--------------------------------------------------------------------
90
+ %% Func: code_change(OldVsn, State, Extra) -> {ok, NewState}
91
+ %% Description: Convert process state when code is changed
92
+ %%--------------------------------------------------------------------
93
+ code_change(_OldVsn, State, _Extra) ->
94
+ {ok, State}.
95
+
96
+ %%--------------------------------------------------------------------
97
+ %%% Internal functions
98
+ %%--------------------------------------------------------------------
99
+
100
+ % pm_master:get_load("0", "cpu").
101
+ get_load(Type) ->
102
+ {Loads, _} = pm_cluster:send_call(get_load_for_type, [Type]),
103
+ {utils:convert_responses_to_int_list(Loads)}.
104
+
105
+ % Send reconfigure tasks to every node
106
+ reconfigure_cloud() ->
107
+ pm_cluster:send_call(run_reconfig, []),
108
+ {ok}.
109
+
110
+ % Fire the given command on all nodes
111
+ fire_cmd(Cmd) ->
112
+ pm_cluster:send_call(fire_cmd, [Cmd]),
113
+ {ok}.
114
+
115
+ % Shutdown
116
+ shutdown_cloud() ->
117
+ pm_cluster:send_call(stop, []),
118
+ {ok}.
@@ -0,0 +1,40 @@
1
+ % This supervisor is responsible for monitoring the
2
+ % client service
3
+
4
+ -module (pm_master_supervisor).
5
+ -behaviour(supervisor).
6
+
7
+ -export([start/0, start_in_shell_for_testing/0, start_link/1, init/1]).
8
+
9
+ -ifdef(EUNIT).
10
+ -include_lib("eunit/include/eunit.hrl").
11
+ -endif.
12
+
13
+ start() ->
14
+ spawn(fun() ->
15
+ supervisor:start_link({local, ?MODULE}, ?MODULE, _Arg = [])
16
+ end).
17
+
18
+ start_in_shell_for_testing() ->
19
+ {ok, Pid} = supervisor:start_link({local, ?MODULE}, ?MODULE, _Arg = []),
20
+ unlink(Pid).
21
+
22
+ start_link(Args) ->
23
+ supervisor:start_link({local, ?MODULE}, ?MODULE, Args).
24
+
25
+ init([]) ->
26
+ RestartStrategy = one_for_one,
27
+ MaxRestarts = 3, % 1000
28
+ MaxTimeBetRestarts = 30, % 3600
29
+
30
+ SupFlags = {RestartStrategy, MaxRestarts, MaxTimeBetRestarts},
31
+
32
+ LoadServers = [
33
+ {pm_master1,
34
+ {pm_master, start_link, []},
35
+ permanent, 5000, worker,
36
+ [pm_master]
37
+ }
38
+ ],
39
+
40
+ {ok, {SupFlags, LoadServers}}.