auser-poolparty 0.2.45 → 0.2.46
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +2 -145
- data/Rakefile +6 -1
- data/bin/cloud +2 -1
- data/bin/pool +2 -1
- data/bin/server-build-messenger +2 -1
- data/bin/server-start-node +5 -8
- data/config/hoe.rb +4 -2
- data/lib/erlang/messenger/Rakefile +6 -0
- data/lib/erlang/messenger/include/defines.hrl +7 -1
- data/lib/erlang/messenger/pm_master_rel-0.1.boot +0 -0
- data/lib/erlang/messenger/pm_master_rel-0.1.script +7 -3
- data/lib/erlang/messenger/pm_node_rel-0.1.boot +0 -0
- data/lib/erlang/messenger/pm_node_rel-0.1.script +7 -3
- data/lib/erlang/messenger/src/pm_master.erl +104 -20
- data/lib/erlang/messenger/src/pm_node.erl +51 -30
- data/lib/erlang/messenger/src/pm_node_supervisor.erl +7 -7
- data/lib/erlang/messenger/src/utils.erl +3 -1
- data/lib/erlang/messenger/useful_snippets +2 -2
- data/lib/poolparty/base_packages/haproxy.rb +1 -3
- data/lib/poolparty/base_packages/poolparty.rb +4 -3
- data/lib/poolparty/helpers/optioner.rb +27 -25
- data/lib/poolparty/helpers/provisioners/master.rb +1 -0
- data/lib/poolparty/helpers/provisioners/slave.rb +9 -1
- data/lib/poolparty/monitors/base_monitor.rb +1 -1
- data/lib/poolparty/monitors/monitors/memory_monitor.rb +29 -2
- data/lib/poolparty/monitors/monitors/web_monitor.rb +18 -0
- data/lib/poolparty/net/messenger.rb +5 -2
- data/lib/poolparty/net/remoter_base.rb +15 -1
- data/lib/poolparty/plugins/git.rb +2 -2
- data/lib/poolparty/pool/loggable.rb +1 -3
- data/lib/poolparty/pool/resources/sshkey.rb +1 -1
- data/lib/poolparty/version.rb +1 -1
- data/lib/poolparty.rb +7 -0
- data/lib/poolpartycl.rb +4 -0
- data/poolparty.gemspec +6 -149
- data/spec/poolparty/helpers/binary_spec.rb +2 -2
- data/spec/poolparty/helpers/optioner_spec.rb +1 -4
- data/spec/poolparty/monitors/monitors/memory_monitor_spec.rb +47 -0
- data/spec/poolparty/net/remoter_base_spec.rb +1 -1
- data/spec/poolparty/pool/base_spec.rb +3 -4
- data/tasks/deployment.rake +6 -2
- metadata +6 -149
- data/lib/erlang/cloudpanel/EMakefile +0 -1
- data/lib/erlang/cloudpanel/Makefile +0 -8
- data/lib/erlang/cloudpanel/cloudpanel.rb +0 -15
- data/lib/erlang/cloudpanel/doc/cloudpanel.html +0 -39
- data/lib/erlang/cloudpanel/doc/cloudpanel_app.html +0 -40
- data/lib/erlang/cloudpanel/doc/cloudpanel_deps.html +0 -89
- data/lib/erlang/cloudpanel/doc/cloudpanel_sup.html +0 -46
- data/lib/erlang/cloudpanel/doc/cloudpanel_web.html +0 -45
- data/lib/erlang/cloudpanel/doc/string.html +0 -222
- data/lib/erlang/cloudpanel/ebin/cloudpanel.app +0 -14
- data/lib/erlang/cloudpanel/priv/www/images/bg_content.gif +0 -0
- data/lib/erlang/cloudpanel/priv/www/index.html +0 -35
- data/lib/erlang/cloudpanel/priv/www/javascripts/jquery.js +0 -32
- data/lib/erlang/cloudpanel/priv/www/javascripts/site.js +0 -2
- data/lib/erlang/cloudpanel/priv/www/pages/index.html +0 -1
- data/lib/erlang/cloudpanel/priv/www/pages/tail.html +0 -1
- data/lib/erlang/cloudpanel/priv/www/partials/error.html +0 -3
- data/lib/erlang/cloudpanel/priv/www/partials/footer.html +0 -6
- data/lib/erlang/cloudpanel/priv/www/partials/header.html +0 -13
- data/lib/erlang/cloudpanel/priv/www/partials/menu.html +0 -13
- data/lib/erlang/cloudpanel/priv/www/stylesheets/application.css +0 -48
- data/lib/erlang/cloudpanel/priv/www/stylesheets/classes.css +0 -2
- data/lib/erlang/cloudpanel/priv/www/stylesheets/colors.css +0 -8
- data/lib/erlang/cloudpanel/priv/www/stylesheets/nav.css +0 -18
- data/lib/erlang/cloudpanel/src/Makefile +0 -9
- data/lib/erlang/cloudpanel/src/cloudpanel.app +0 -14
- data/lib/erlang/cloudpanel/src/cloudpanel.erl +0 -30
- data/lib/erlang/cloudpanel/src/cloudpanel.hrl +0 -2
- data/lib/erlang/cloudpanel/src/cloudpanel_app.erl +0 -22
- data/lib/erlang/cloudpanel/src/cloudpanel_deps.erl +0 -84
- data/lib/erlang/cloudpanel/src/cloudpanel_sup.erl +0 -54
- data/lib/erlang/cloudpanel/src/cloudpanel_web.erl +0 -39
- data/lib/erlang/cloudpanel/src/string.erl +0 -387
- data/lib/erlang/cloudpanel/src/tail_log.erl +0 -66
- data/lib/erlang/cloudpanel/src/tailor.erl +0 -31
- data/lib/erlang/cloudpanel/src/utils.erl +0 -9
- data/lib/erlang/cloudpanel/src/views.erl +0 -44
- data/lib/erlang/cloudpanel/start-dev.sh +0 -3
- data/lib/erlang/cloudpanel/start.sh +0 -3
- data/lib/erlang/cloudpanel/support/include.mk +0 -46
- data/lib/erlang/cloudpanel/yaws.conf +0 -20
- data/lib/erlang/messenger/ebin/master_app.beam +0 -0
- data/lib/erlang/messenger/ebin/node_app.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_client.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_event_handler.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
- 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/pm_master.beam +0 -0
- data/lib/erlang/messenger/pm_node.beam +0 -0
data/Manifest.txt
CHANGED
@@ -45,154 +45,11 @@ examples/with_apache_plugin.rb
|
|
45
45
|
generators/poolspec/USAGE
|
46
46
|
generators/poolspec/poolspec_generator.rb
|
47
47
|
generators/poolspec/templates/pool_spec_template.erb
|
48
|
-
lib/erlang/cloudpanel/EMakefile
|
49
|
-
lib/erlang/cloudpanel/Makefile
|
50
|
-
lib/erlang/cloudpanel/cloudpanel.rb
|
51
|
-
lib/erlang/cloudpanel/deps/mochiweb/LICENSE
|
52
|
-
lib/erlang/cloudpanel/deps/mochiweb/Makefile
|
53
|
-
lib/erlang/cloudpanel/deps/mochiweb/README
|
54
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochifmt.html
|
55
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochifmt_records.html
|
56
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochifmt_std.html
|
57
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochihex.html
|
58
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochijson.html
|
59
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochijson2.html
|
60
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochinum.html
|
61
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb.html
|
62
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_app.html
|
63
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_charref.html
|
64
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_cookies.html
|
65
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_echo.html
|
66
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_headers.html
|
67
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_html.html
|
68
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_http.html
|
69
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_multipart.html
|
70
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_request.html
|
71
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_response.html
|
72
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_skel.html
|
73
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_socket_server.html
|
74
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_sup.html
|
75
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_util.html
|
76
|
-
lib/erlang/cloudpanel/deps/mochiweb/doc/reloader.html
|
77
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochifmt.beam
|
78
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochifmt_records.beam
|
79
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochifmt_std.beam
|
80
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochihex.beam
|
81
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochijson.beam
|
82
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochijson2.beam
|
83
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochinum.beam
|
84
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb.app
|
85
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb.beam
|
86
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_app.beam
|
87
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_charref.beam
|
88
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_cookies.beam
|
89
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_echo.beam
|
90
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_headers.beam
|
91
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_html.beam
|
92
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_http.beam
|
93
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_multipart.beam
|
94
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_request.beam
|
95
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_response.beam
|
96
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_skel.beam
|
97
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_socket_server.beam
|
98
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_sup.beam
|
99
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_util.beam
|
100
|
-
lib/erlang/cloudpanel/deps/mochiweb/ebin/reloader.beam
|
101
|
-
lib/erlang/cloudpanel/deps/mochiweb/priv/skel/Makefile
|
102
|
-
lib/erlang/cloudpanel/deps/mochiweb/priv/skel/priv/www/index.html
|
103
|
-
lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/Makefile
|
104
|
-
lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel.app
|
105
|
-
lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel.erl
|
106
|
-
lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel.hrl
|
107
|
-
lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel_app.erl
|
108
|
-
lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel_deps.erl
|
109
|
-
lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel_sup.erl
|
110
|
-
lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel_web.erl
|
111
|
-
lib/erlang/cloudpanel/deps/mochiweb/priv/skel/start-dev.sh
|
112
|
-
lib/erlang/cloudpanel/deps/mochiweb/priv/skel/start.sh
|
113
|
-
lib/erlang/cloudpanel/deps/mochiweb/priv/skel/support/include.mk
|
114
|
-
lib/erlang/cloudpanel/deps/mochiweb/scripts/new_mochiweb.erl
|
115
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/Makefile
|
116
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochifmt.erl
|
117
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochifmt_records.erl
|
118
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochifmt_std.erl
|
119
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochihex.erl
|
120
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochijson.erl
|
121
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochijson2.erl
|
122
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochinum.erl
|
123
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb.app
|
124
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb.erl
|
125
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_app.erl
|
126
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_charref.erl
|
127
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_cookies.erl
|
128
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_echo.erl
|
129
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_headers.erl
|
130
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_html.erl
|
131
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_http.erl
|
132
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_multipart.erl
|
133
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_request.erl
|
134
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_response.erl
|
135
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_skel.erl
|
136
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_socket_server.erl
|
137
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_sup.erl
|
138
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_util.erl
|
139
|
-
lib/erlang/cloudpanel/deps/mochiweb/src/reloader.erl
|
140
|
-
lib/erlang/cloudpanel/deps/mochiweb/support/include.mk
|
141
|
-
lib/erlang/cloudpanel/doc/cloudpanel.html
|
142
|
-
lib/erlang/cloudpanel/doc/cloudpanel_app.html
|
143
|
-
lib/erlang/cloudpanel/doc/cloudpanel_deps.html
|
144
|
-
lib/erlang/cloudpanel/doc/cloudpanel_sup.html
|
145
|
-
lib/erlang/cloudpanel/doc/cloudpanel_web.html
|
146
|
-
lib/erlang/cloudpanel/doc/string.html
|
147
|
-
lib/erlang/cloudpanel/ebin/cloudpanel.app
|
148
|
-
lib/erlang/cloudpanel/ebin/cloudpanel.beam
|
149
|
-
lib/erlang/cloudpanel/ebin/cloudpanel_app.beam
|
150
|
-
lib/erlang/cloudpanel/ebin/cloudpanel_deps.beam
|
151
|
-
lib/erlang/cloudpanel/ebin/cloudpanel_sup.beam
|
152
|
-
lib/erlang/cloudpanel/ebin/cloudpanel_web.beam
|
153
|
-
lib/erlang/cloudpanel/ebin/string.beam
|
154
|
-
lib/erlang/cloudpanel/ebin/tail_log.beam
|
155
|
-
lib/erlang/cloudpanel/ebin/tailor.beam
|
156
|
-
lib/erlang/cloudpanel/ebin/utils.beam
|
157
|
-
lib/erlang/cloudpanel/ebin/views.beam
|
158
|
-
lib/erlang/cloudpanel/ebin/web_utils.beam
|
159
|
-
lib/erlang/cloudpanel/priv/www/images/bg_content.gif
|
160
|
-
lib/erlang/cloudpanel/priv/www/index.html
|
161
|
-
lib/erlang/cloudpanel/priv/www/javascripts/jquery.js
|
162
|
-
lib/erlang/cloudpanel/priv/www/javascripts/site.js
|
163
|
-
lib/erlang/cloudpanel/priv/www/pages/index.html
|
164
|
-
lib/erlang/cloudpanel/priv/www/pages/tail.html
|
165
|
-
lib/erlang/cloudpanel/priv/www/partials/error.html
|
166
|
-
lib/erlang/cloudpanel/priv/www/partials/footer.html
|
167
|
-
lib/erlang/cloudpanel/priv/www/partials/header.html
|
168
|
-
lib/erlang/cloudpanel/priv/www/partials/menu.html
|
169
|
-
lib/erlang/cloudpanel/priv/www/stylesheets/application.css
|
170
|
-
lib/erlang/cloudpanel/priv/www/stylesheets/classes.css
|
171
|
-
lib/erlang/cloudpanel/priv/www/stylesheets/colors.css
|
172
|
-
lib/erlang/cloudpanel/priv/www/stylesheets/nav.css
|
173
|
-
lib/erlang/cloudpanel/src/Makefile
|
174
|
-
lib/erlang/cloudpanel/src/cloudpanel.app
|
175
|
-
lib/erlang/cloudpanel/src/cloudpanel.erl
|
176
|
-
lib/erlang/cloudpanel/src/cloudpanel.hrl
|
177
|
-
lib/erlang/cloudpanel/src/cloudpanel_app.erl
|
178
|
-
lib/erlang/cloudpanel/src/cloudpanel_deps.erl
|
179
|
-
lib/erlang/cloudpanel/src/cloudpanel_sup.erl
|
180
|
-
lib/erlang/cloudpanel/src/cloudpanel_web.erl
|
181
|
-
lib/erlang/cloudpanel/src/string.erl
|
182
|
-
lib/erlang/cloudpanel/src/tail_log.erl
|
183
|
-
lib/erlang/cloudpanel/src/tailor.erl
|
184
|
-
lib/erlang/cloudpanel/src/utils.erl
|
185
|
-
lib/erlang/cloudpanel/src/views.erl
|
186
|
-
lib/erlang/cloudpanel/start-dev.sh
|
187
|
-
lib/erlang/cloudpanel/start.sh
|
188
|
-
lib/erlang/cloudpanel/support/include.mk
|
189
|
-
lib/erlang/cloudpanel/yaws.conf
|
190
48
|
lib/erlang/messenger/Emakefile
|
191
49
|
lib/erlang/messenger/Makefile
|
192
50
|
lib/erlang/messenger/README
|
193
51
|
lib/erlang/messenger/Rakefile
|
194
52
|
lib/erlang/messenger/control
|
195
|
-
lib/erlang/messenger/ebin/erl_crash.dump
|
196
53
|
lib/erlang/messenger/ebin/master.app
|
197
54
|
lib/erlang/messenger/ebin/master_app.beam
|
198
55
|
lib/erlang/messenger/ebin/node.app
|
@@ -267,10 +124,8 @@ lib/erlang/messenger/lib/eunit/src/eunit_tty.erl
|
|
267
124
|
lib/erlang/messenger/lib/eunit/src/file_monitor.erl
|
268
125
|
lib/erlang/messenger/lib/eunit/sys.config
|
269
126
|
lib/erlang/messenger/lib/eunit/vsn.mk
|
270
|
-
lib/erlang/messenger/pm_master.beam
|
271
127
|
lib/erlang/messenger/pm_master_rel-0.1.boot
|
272
128
|
lib/erlang/messenger/pm_master_rel-0.1.script
|
273
|
-
lib/erlang/messenger/pm_node.beam
|
274
129
|
lib/erlang/messenger/pm_node_rel-0.1.boot
|
275
130
|
lib/erlang/messenger/pm_node_rel-0.1.script
|
276
131
|
lib/erlang/messenger/src/master_app.erl
|
@@ -341,6 +196,7 @@ lib/poolparty/modules/thread_pool.rb
|
|
341
196
|
lib/poolparty/monitors/base_monitor.rb
|
342
197
|
lib/poolparty/monitors/monitors/cpu_monitor.rb
|
343
198
|
lib/poolparty/monitors/monitors/memory_monitor.rb
|
199
|
+
lib/poolparty/monitors/monitors/web_monitor.rb
|
344
200
|
lib/poolparty/net/messenger.rb
|
345
201
|
lib/poolparty/net/remote.rb
|
346
202
|
lib/poolparty/net/remote_bases/ec2.rb
|
@@ -420,6 +276,7 @@ spec/poolparty/modules/file_writer_spec.rb
|
|
420
276
|
spec/poolparty/modules/s3_string_spec.rb
|
421
277
|
spec/poolparty/monitors/base_monitor_spec.rb
|
422
278
|
spec/poolparty/monitors/monitors/cpu_monitor_spec.rb
|
279
|
+
spec/poolparty/monitors/monitors/memory_monitor_spec.rb
|
423
280
|
spec/poolparty/net/messenger_spec.rb
|
424
281
|
spec/poolparty/net/remote_bases/ec2_spec.rb
|
425
282
|
spec/poolparty/net/remote_instance_spec.rb
|
data/Rakefile
CHANGED
@@ -5,7 +5,8 @@ Dir['tasks/**/*.rake'].each { |rake| load rake }
|
|
5
5
|
|
6
6
|
desc "Clean tmp directory"
|
7
7
|
task :clean_tmp do |t|
|
8
|
-
%
|
8
|
+
%x[rm #{File.dirname(__FILE__)}/Manifest.txt; touch #{File.dirname(__FILE__)}/Manifest.txt]
|
9
|
+
%w(logs tmp).each do |dir|
|
9
10
|
FileUtils.rm_rf("#{File.dirname(__FILE__)}/#{dir}") if ::File.exists?("#{File.dirname(__FILE__)}/#{dir}")
|
10
11
|
end
|
11
12
|
end
|
@@ -15,6 +16,10 @@ task :clean_pkg do |t|
|
|
15
16
|
FileUtils.rm_rf("#{File.dirname(__FILE__)}/#{dir}") if ::File.exists?("#{File.dirname(__FILE__)}/#{dir}")
|
16
17
|
end
|
17
18
|
end
|
19
|
+
|
20
|
+
desc "Generate a new manifest and a new gem"
|
21
|
+
task :build_local_gem => [:clean_tmp, :spec, :clean_pkg, :"manifest:refresh", :package]
|
22
|
+
|
18
23
|
desc "Generate gemspec"
|
19
24
|
task :gemspec => [:spec, :clean_tmp, :"manifest:refresh", :local_deploy] do |t|
|
20
25
|
res = %x[rake debug_gem]
|
data/bin/cloud
CHANGED
@@ -8,7 +8,8 @@ name = ARGV.select {|arg| arg if Binary.available_binaries_for("cloud").include?
|
|
8
8
|
# original options back, but if they do contain a binary, we don't want -h getting through to
|
9
9
|
# these options, so we'll strip it if it's included
|
10
10
|
DUP_ARG = ARGV.dup
|
11
|
-
new_args = DUP_ARG.
|
11
|
+
new_args = DUP_ARG.map {|arg| DUP_ARG.delete(arg) unless help_array.include?(arg) || Binary.available_binaries_for("cloud").include?(arg) }
|
12
|
+
new_args = new_args.reject {|arg| Binary.available_binaries_for("cloud").include?(arg) }.empty? ? ARGV : (name ? (help_array.each {|arg| DUP_ARG.delete(arg)}; DUP_ARG) : DUP_ARG)
|
12
13
|
|
13
14
|
# Let's make sure if no command is passed in that we show the help message
|
14
15
|
new_args.push("-h") unless name
|
data/bin/pool
CHANGED
@@ -8,7 +8,8 @@ name = ARGV.select {|arg| arg if Binary.available_binaries_for("pool").include?(
|
|
8
8
|
# original options back, but if they do contain a binary, we don't want -h getting through to
|
9
9
|
# these options, so we'll strip it if it's included
|
10
10
|
DUP_ARG = ARGV.dup
|
11
|
-
new_args = DUP_ARG.
|
11
|
+
new_args = DUP_ARG.map {|arg| DUP_ARG.delete(arg) unless help_array.include?(arg) || Binary.available_binaries_for("pool").include?(arg) }
|
12
|
+
new_args = new_args.reject {|arg| Binary.available_binaries_for("pool").include?(arg) }.empty? ? ARGV : (name ? (help_array.each {|arg| DUP_ARG.delete(arg)}; DUP_ARG) : DUP_ARG)
|
12
13
|
|
13
14
|
# Let's make sure if no command is passed in that we show the help message
|
14
15
|
new_args.push("-h") unless name
|
data/bin/server-build-messenger
CHANGED
@@ -3,7 +3,7 @@ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
|
3
3
|
require "poolparty"
|
4
4
|
require "poolpartycl"
|
5
5
|
|
6
|
-
root_dir = ::File.expand_path( ::File.join(::File.dirname(__FILE__), "..", "lib/erlang/messenger") )
|
6
|
+
root_dir = ::File.expand_path( ::File.join(::File.dirname(__FILE__), "..", "lib/erlang/messenger/ebin") )
|
7
7
|
|
8
8
|
o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
|
9
9
|
end
|
@@ -17,6 +17,7 @@ ERLC_FLAGS = "-I#{INCLUDE}"
|
|
17
17
|
# erl -pa ./ebin -s pm_packager start -s init stop
|
18
18
|
cmd =<<-EOE
|
19
19
|
cd #{root_dir}
|
20
|
+
rake recompile
|
20
21
|
rake build_boot_scripts
|
21
22
|
EOE
|
22
23
|
|
data/bin/server-start-node
CHANGED
@@ -3,29 +3,26 @@ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
|
3
3
|
require "poolparty"
|
4
4
|
require "poolpartycl"
|
5
5
|
|
6
|
-
available_monitors = PoolParty::Monitors.available_monitors
|
7
6
|
o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
|
8
7
|
opts.on('-n name', '--name name', 'Host name') { |h| optioner.hostname h }
|
9
8
|
opts.on('-l', '--no-shell', 'No shell') {optioner.noshell true}
|
10
9
|
end
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
include Remote
|
11
|
+
available_monitors = PoolParty::Monitors.available_monitors
|
15
12
|
|
16
13
|
@hostname = o.hostname ? o.hostname : `hostname`.chomp
|
17
14
|
@hostname = "node0" if @hostname == "master" # Quick fix to make sure we have a node running on the master as well
|
18
15
|
|
19
|
-
|
20
|
-
|
21
|
-
@clouds.each do |cloud|
|
16
|
+
o.loaded_clouds.each do |cloud|
|
22
17
|
|
23
18
|
with_cloud(cloud, {:testing => o.testing, :hostname => @hostname, :noshell => o.noshell }) do
|
24
19
|
# TODO: Change this to be app specfic
|
25
20
|
# SECURITY RISK
|
26
21
|
|
27
22
|
boot_file = "#{Messenger.append_dir}/pm_node_rel-0.1"
|
28
|
-
command = Messenger.erl_command(hostname, "-boot #{boot_file} #{noshell ? "" : "-detached -heart"}")
|
23
|
+
command = Messenger.erl_command(hostname, "-boot #{boot_file} #{noshell ? "" : "-detached -heart"} -- #{available_monitors.join(" ")}")
|
24
|
+
|
25
|
+
vputs "Running #{command}"
|
29
26
|
|
30
27
|
Kernel.system "exec #{command}" unless testing
|
31
28
|
end
|
data/config/hoe.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
require '
|
1
|
+
require 'poolparty'
|
2
2
|
|
3
3
|
AUTHOR = 'Ari Lerner' # can also be an array of Authors
|
4
4
|
EMAIL = "ari.lerner@citrusbyte.com"
|
5
5
|
DESCRIPTION =<<-EOM
|
6
|
-
Self-healing, auto-scaling
|
6
|
+
Self-healing, auto-scaling system administration, provisioning
|
7
|
+
and maintaining tool that makes cloud computing fun and easy
|
7
8
|
EOM
|
8
9
|
GEM_NAME = 'poolparty' # what ppl will type to install your gem
|
9
10
|
RUBYFORGE_PROJECT = 'poolparty' # The unix name for your project
|
@@ -63,6 +64,7 @@ $hoe = Hoe.new(GEM_NAME, VERS) do |p|
|
|
63
64
|
p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
|
64
65
|
p.test_globs = ["test/**/test_*.rb"]
|
65
66
|
p.clean_globs |= ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store'] #An array of file patterns to delete on clean.
|
67
|
+
# p.files = %w(Rakefile History.txt README.txt) + Dir.glob("{examples,lib,specs,tasks,script,generators,bin}/**/*")
|
66
68
|
|
67
69
|
# == Optional
|
68
70
|
p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
@@ -1,5 +1,7 @@
|
|
1
1
|
% Includes file for the PoolParty Messenger
|
2
2
|
|
3
|
+
% -define(debug, true).
|
4
|
+
|
3
5
|
-ifdef(debug).
|
4
6
|
|
5
7
|
-define (MASTER_LOCATION, erlang:list_to_atom(lists:append("master@", element(2, inet:gethostname()))) ).
|
@@ -13,4 +15,8 @@
|
|
13
15
|
-endif.
|
14
16
|
|
15
17
|
-define (MASTER_NODE_NAME, master).
|
16
|
-
-define (MASTER_SERVER, global:whereis_name(pm_master)).
|
18
|
+
-define (MASTER_SERVER, global:whereis_name(pm_master)).
|
19
|
+
|
20
|
+
-define(DICT, dict).
|
21
|
+
-record (node,
|
22
|
+
{load}).
|
Binary file
|
@@ -1,4 +1,4 @@
|
|
1
|
-
%% script generated at {2008,10
|
1
|
+
%% script generated at {2008,11,10} {0,51,31}
|
2
2
|
{script,
|
3
3
|
{"master","0.1"},
|
4
4
|
[{preLoaded,
|
@@ -68,7 +68,9 @@
|
|
68
68
|
overload,misc_supp,format_lib_supp,erlsrv,alarm_handler]},
|
69
69
|
{path,
|
70
70
|
["/Users/auser/Sites/work/citrusbyte/internal/gems/pool-party/poolparty/lib/erlang/messenger/ebin"]},
|
71
|
-
{primLoad,
|
71
|
+
{primLoad,
|
72
|
+
[utils,pm_master_supervisor,pm_master_event_handler,
|
73
|
+
pm_master,pm_event_manager,master_app]},
|
72
74
|
{progress,modules_loaded},
|
73
75
|
{path,
|
74
76
|
["/opt/local/lib/erlang/lib/kernel-2.12.2/ebin",
|
@@ -222,7 +224,9 @@
|
|
222
224
|
[{description,"Master Server for PoolParty"},
|
223
225
|
{vsn,"0.1"},
|
224
226
|
{id,[]},
|
225
|
-
{modules,
|
227
|
+
{modules,
|
228
|
+
[master_app,pm_master,pm_master_supervisor,utils,
|
229
|
+
pm_event_manager,pm_master_event_handler]},
|
226
230
|
{registered,[pm_master,pm_master_supervisor]},
|
227
231
|
{applications,[kernel,stdlib]},
|
228
232
|
{included_applications,[]},
|
Binary file
|
@@ -1,4 +1,4 @@
|
|
1
|
-
%% script generated at {2008,10
|
1
|
+
%% script generated at {2008,11,10} {0,51,26}
|
2
2
|
{script,
|
3
3
|
{"node","0.1"},
|
4
4
|
[{preLoaded,
|
@@ -68,7 +68,9 @@
|
|
68
68
|
overload,misc_supp,format_lib_supp,erlsrv,alarm_handler]},
|
69
69
|
{path,
|
70
70
|
["/Users/auser/Sites/work/citrusbyte/internal/gems/pool-party/poolparty/lib/erlang/messenger/ebin"]},
|
71
|
-
{primLoad,
|
71
|
+
{primLoad,
|
72
|
+
[utils,pm_node_supervisor,pm_node,pm_event_manager,
|
73
|
+
node_app]},
|
72
74
|
{progress,modules_loaded},
|
73
75
|
{path,
|
74
76
|
["/opt/local/lib/erlang/lib/kernel-2.12.2/ebin",
|
@@ -222,7 +224,9 @@
|
|
222
224
|
[{description,"Node Server for PoolParty"},
|
223
225
|
{vsn,"0.1"},
|
224
226
|
{id,[]},
|
225
|
-
{modules,
|
227
|
+
{modules,
|
228
|
+
[node_app,pm_node,pm_node_supervisor,utils,
|
229
|
+
pm_event_manager]},
|
226
230
|
{registered,[pm_node,pm_node_supervisor]},
|
227
231
|
{applications,[kernel,stdlib]},
|
228
232
|
{included_applications,[]},
|
@@ -10,19 +10,27 @@
|
|
10
10
|
|
11
11
|
-include_lib("../include/defines.hrl").
|
12
12
|
|
13
|
-
-record(state, {
|
13
|
+
-record(state, {
|
14
|
+
nodes = ?DICT:new() % Dictionary of running nodes
|
15
|
+
}).
|
16
|
+
|
14
17
|
-define (SERVER, global:whereis_name(?MODULE)).
|
15
18
|
|
16
19
|
%% API
|
17
|
-
-export([start_link/0]).
|
18
20
|
|
19
21
|
%% gen_server callbacks
|
20
|
-
-export([
|
21
|
-
|
22
|
+
-export([start_link/0,
|
23
|
+
stop/0,
|
24
|
+
init/1,
|
25
|
+
handle_call/3,
|
26
|
+
handle_cast/2,
|
27
|
+
handle_info/2,
|
28
|
+
terminate/2,
|
29
|
+
code_change/3]).
|
22
30
|
|
23
31
|
% Client function definitions
|
24
32
|
-export ([get_load/1, reconfigure_cloud/0]).
|
25
|
-
-export ([run_cmd/1, fire_cmd/1]).
|
33
|
+
-export ([run_cmd/1, fire_cmd/1, get_current_nodes/0]).
|
26
34
|
-export ([shutdown_cloud/0]).
|
27
35
|
|
28
36
|
%%====================================================================
|
@@ -32,15 +40,15 @@
|
|
32
40
|
%%% Internal functions
|
33
41
|
%%--------------------------------------------------------------------
|
34
42
|
|
35
|
-
% pm_master:get_load("
|
43
|
+
% pm_master:get_load("cpu").
|
36
44
|
get_load(Type) ->
|
37
45
|
% {Loads, _} = pm_cluster:send_call(get_load_for_type, [Type]),
|
38
|
-
{Loads, _} = gen_server:call(?SERVER, {
|
39
|
-
|
46
|
+
% {Loads, _} = gen_server:call(?SERVER, {get_load, [Type]}),
|
47
|
+
Loads = gen_server:call(?SERVER, {get_current_load, Type}),
|
48
|
+
utils:average_of_list(Loads).
|
40
49
|
|
41
50
|
% Send reconfigure tasks to every node
|
42
|
-
reconfigure_cloud() ->
|
43
|
-
gen_server:call(?SERVER, {run_reconfig}).
|
51
|
+
reconfigure_cloud() -> gen_server:cast(?SERVER, {force_reconfig}).
|
44
52
|
|
45
53
|
% Fire the given command on all nodes
|
46
54
|
run_cmd(Cmd) -> gen_server:call(?SERVER, {run_cmd, Cmd}).
|
@@ -50,6 +58,11 @@ fire_cmd(Cmd) -> gen_server:call(?SERVER, {fire_cmd, Cmd}).
|
|
50
58
|
shutdown_cloud() ->
|
51
59
|
pm_cluster:send_call(stop, []),
|
52
60
|
{ok}.
|
61
|
+
|
62
|
+
get_current_nodes() ->
|
63
|
+
gen_server:call(?SERVER, {get_live_nodes}).
|
64
|
+
|
65
|
+
stop() -> gen_server:cast(?MODULE, stop).
|
53
66
|
%%--------------------------------------------------------------------
|
54
67
|
%% Function: start_link() -> {ok,Pid} | ignore | {error,Error}
|
55
68
|
%% Description: Starts the server
|
@@ -70,7 +83,10 @@ start_link() ->
|
|
70
83
|
%%--------------------------------------------------------------------
|
71
84
|
init([]) ->
|
72
85
|
% pm_event_manager:add_handler(pm_master_event_handler),
|
73
|
-
|
86
|
+
process_flag(trap_exit, true),
|
87
|
+
{ok, #state{
|
88
|
+
nodes = ?DICT:new()
|
89
|
+
}}.
|
74
90
|
|
75
91
|
%%--------------------------------------------------------------------
|
76
92
|
%% Function: %% handle_call(Request, From, State) -> {reply, Reply, State} |
|
@@ -82,14 +98,21 @@ init([]) ->
|
|
82
98
|
%% Description: Handling call messages
|
83
99
|
%%--------------------------------------------------------------------
|
84
100
|
% Handle load messages
|
85
|
-
handle_call({
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
handle_call(
|
90
|
-
|
91
|
-
|
92
|
-
{reply,
|
101
|
+
handle_call({get_load, Args}, _From, State) ->
|
102
|
+
Nodes = pm_cluster:get_live_nodes(),
|
103
|
+
List = rpc:multicall(Nodes, pm_node, get_load_for_type, [Args]),
|
104
|
+
{reply, List, State};
|
105
|
+
handle_call({get_current_load, Type}, _From, State) ->
|
106
|
+
LoadForType = get_load_for_type(Type, State),
|
107
|
+
?TRACE("LoadForType: ",[LoadForType]),
|
108
|
+
{reply, LoadForType, State};
|
109
|
+
handle_call({get_live_nodes}, _From, State) ->
|
110
|
+
{reply, get_live_nodes(State), State}.
|
111
|
+
|
112
|
+
% handle_call(_Request, _From, State) ->
|
113
|
+
% Nodes = pm_cluster:get_live_nodes(),
|
114
|
+
% Reply = Reply = rpc:multicall(Nodes, pm_node, Request, []),
|
115
|
+
% {reply, Reply, State}.
|
93
116
|
|
94
117
|
%%--------------------------------------------------------------------
|
95
118
|
%% Function: handle_cast(Msg, State) -> {noreply, State} |
|
@@ -97,6 +120,18 @@ handle_call(Request, _From, State) ->
|
|
97
120
|
%% {stop, Reason, State}
|
98
121
|
%% Description: Handling cast messages
|
99
122
|
%%--------------------------------------------------------------------
|
123
|
+
handle_cast({update_node_load, From, Loads}, State) ->
|
124
|
+
% ?TRACE("Cast with load message", [From, Loads]),
|
125
|
+
% {_Nodes, NewState} = get_node_listing(From, State),
|
126
|
+
% {noreply, NewState};
|
127
|
+
{_LoadState, NewState} = store_load_for(From, Loads, State),
|
128
|
+
{noreply, NewState};
|
129
|
+
handle_cast({force_reconfig}, State) ->
|
130
|
+
Fun = fun(NodeEntry) ->
|
131
|
+
{_Node, Pid} = NodeEntry,
|
132
|
+
gen_server:cast(Pid, {reconfig}) end,
|
133
|
+
run_on_nodes(Fun, State),
|
134
|
+
{noreply, State};
|
100
135
|
handle_cast(_Msg, State) ->
|
101
136
|
{noreply, State}.
|
102
137
|
|
@@ -124,4 +159,53 @@ terminate(_Reason, _State) ->
|
|
124
159
|
%% Description: Convert process state when code is changed
|
125
160
|
%%--------------------------------------------------------------------
|
126
161
|
code_change(_OldVsn, State, _Extra) ->
|
127
|
-
{ok, State}.
|
162
|
+
{ok, State}.
|
163
|
+
|
164
|
+
% Private methods
|
165
|
+
get_node_listing(Name, State) ->
|
166
|
+
% Find or create the stored node
|
167
|
+
case ?DICT:is_key(Name, State#state.nodes) of
|
168
|
+
true -> NodeStore = ?DICT:fetch(Name, State#state.nodes), {NodeStore, State};
|
169
|
+
false ->
|
170
|
+
NodeStore = {}, NewState = State#state{nodes = ?DICT:store(Name, NodeStore, State#state.nodes)}, {NodeStore, NewState}
|
171
|
+
end.
|
172
|
+
|
173
|
+
get_load_for_type(Type, State) ->
|
174
|
+
Loads = [ get_load_for_node(Type, Name, State) || Name <- get_live_nodes(State) ],
|
175
|
+
[Load || Load <- Loads, Load =/= false, Load > 0.0].
|
176
|
+
|
177
|
+
get_load_for_node(Type, Name, State) ->
|
178
|
+
{NodeStore, _} = get_node_listing(Name, State),
|
179
|
+
case proplists:is_defined(erlang:list_to_atom(Type), NodeStore) of
|
180
|
+
true -> proplists:get_value(erlang:list_to_atom(Type), NodeStore);
|
181
|
+
_ -> false
|
182
|
+
end.
|
183
|
+
|
184
|
+
get_node_pids(State) ->
|
185
|
+
Nodes = dict:fetch_keys(State#state.nodes),
|
186
|
+
[ {Node, global:whereis_name(Node)} || Node <- Nodes, global:whereis_name(Node) =/= undefined].
|
187
|
+
|
188
|
+
get_live_nodes(State) ->
|
189
|
+
NodePids = get_node_pids(State),
|
190
|
+
RespondingNodes = lists:map(
|
191
|
+
fun(NodeEntry) ->
|
192
|
+
{Node, Pid} = NodeEntry,
|
193
|
+
case is_pid(Pid) of
|
194
|
+
true ->
|
195
|
+
case gen_server:call(Pid, {still_there}) of
|
196
|
+
still_here -> Node;
|
197
|
+
_ -> false
|
198
|
+
end;
|
199
|
+
false -> false
|
200
|
+
end
|
201
|
+
end, NodePids),
|
202
|
+
[ Node || Node <- RespondingNodes, Node =/= false].
|
203
|
+
|
204
|
+
run_on_nodes(Fun, State) ->
|
205
|
+
NodePids = get_node_pids(State),
|
206
|
+
lists:map(Fun, NodePids).
|
207
|
+
|
208
|
+
store_load_for(Name, Loads, State) ->
|
209
|
+
NewNodeEntry = [ {erlang:list_to_atom(Key), erlang:list_to_float(proplists:get_value(Key, Loads))} || Key <- proplists:get_keys(Loads) ],
|
210
|
+
NewState = ?DICT:store(Name, NewNodeEntry, State#state.nodes),
|
211
|
+
{NewNodeEntry, State#state{nodes = NewState}}.
|