auser-poolparty 0.2.39 → 0.2.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. data/Manifest.txt +117 -0
  2. data/bin/cloud-configure +3 -3
  3. data/bin/cloud-expand +10 -6
  4. data/bin/cloud-handle-load +32 -0
  5. data/bin/cloud-maintain +3 -9
  6. data/bin/cloud-provision +1 -1
  7. data/bin/cloud-start +2 -1
  8. data/bin/server-show-stats +1 -0
  9. data/lib/erlang/cloudpanel/EMakefile +1 -0
  10. data/lib/erlang/cloudpanel/Makefile +3 -0
  11. data/lib/erlang/cloudpanel/cloudpanel.rb +15 -0
  12. data/lib/erlang/cloudpanel/doc/cloudpanel_web.html +1 -1
  13. data/lib/erlang/cloudpanel/doc/string.html +222 -0
  14. data/lib/erlang/cloudpanel/priv/www/index.html +2 -1
  15. data/lib/erlang/cloudpanel/priv/www/javascripts/site.js +2 -0
  16. data/lib/erlang/cloudpanel/priv/www/pages/index.html +1 -0
  17. data/lib/erlang/cloudpanel/priv/www/pages/tail.html +1 -0
  18. data/lib/erlang/cloudpanel/priv/www/partials/error.html +3 -0
  19. data/lib/erlang/cloudpanel/priv/www/partials/footer.html +6 -0
  20. data/lib/erlang/cloudpanel/priv/www/partials/header.html +13 -0
  21. data/lib/erlang/cloudpanel/priv/www/partials/menu.html +13 -0
  22. data/lib/erlang/cloudpanel/src/cloudpanel.hrl +1 -0
  23. data/lib/erlang/cloudpanel/src/cloudpanel_web.erl +18 -24
  24. data/lib/erlang/cloudpanel/src/string.erl +387 -0
  25. data/lib/erlang/cloudpanel/src/tail_log.erl +66 -0
  26. data/lib/erlang/cloudpanel/src/tailor.erl +31 -0
  27. data/lib/erlang/cloudpanel/src/utils.erl +9 -0
  28. data/lib/erlang/cloudpanel/src/views.erl +44 -0
  29. data/lib/erlang/cloudpanel/yaws.conf +20 -0
  30. data/lib/erlang/messenger/useful_snippets +1 -1
  31. data/lib/poolparty/aska/aska.rb +29 -4
  32. data/lib/poolparty/base_packages/poolparty.rb +14 -6
  33. data/lib/poolparty/config/postlaunchmessage.txt +5 -0
  34. data/lib/poolparty/exceptions/LoadRulesException.rb +7 -0
  35. data/lib/poolparty/helpers/provisioner_base.rb +24 -8
  36. data/lib/poolparty/helpers/provisioners/master.rb +8 -2
  37. data/lib/poolparty/helpers/provisioners/slave.rb +4 -3
  38. data/lib/poolparty/modules/method_missing_sugar.rb +1 -1
  39. data/lib/poolparty/monitors/base_monitor.rb +1 -1
  40. data/lib/poolparty/net/remoter.rb +8 -5
  41. data/lib/poolparty/plugins/git.rb +1 -1
  42. data/lib/poolparty/pool/base.rb +6 -3
  43. data/lib/poolparty/pool/cloud.rb +4 -2
  44. data/lib/poolparty/pool/loggable.rb +2 -5
  45. data/lib/poolparty/templates/yaws.conf +19 -0
  46. data/lib/poolparty/version.rb +1 -1
  47. data/lib/poolparty.rb +2 -2
  48. data/poolparty.gemspec +121 -2
  49. data/spec/poolparty/aska/aska_spec.rb +33 -0
  50. data/spec/poolparty/core/hash_spec.rb +3 -3
  51. data/spec/poolparty/net/remote_spec.rb +4 -3
  52. data/spec/poolparty/net/remoter_spec.rb +1 -0
  53. data/spec/poolparty/pool/base_spec.rb +11 -2
  54. data/spec/poolparty/pool/cloud_spec.rb +2 -2
  55. data/website/index.html +1 -1
  56. metadata +121 -2
data/Manifest.txt CHANGED
@@ -10,6 +10,7 @@ bin/cloud-configure
10
10
  bin/cloud-contract
11
11
  bin/cloud-ensure-provisioning
12
12
  bin/cloud-expand
13
+ bin/cloud-handle-load
13
14
  bin/cloud-list
14
15
  bin/cloud-maintain
15
16
  bin/cloud-osxcopy
@@ -45,21 +46,127 @@ examples/with_apache_plugin.rb
45
46
  generators/poolspec/USAGE
46
47
  generators/poolspec/poolspec_generator.rb
47
48
  generators/poolspec/templates/pool_spec_template.erb
49
+ lib/erlang/cloudpanel/EMakefile
48
50
  lib/erlang/cloudpanel/Makefile
51
+ lib/erlang/cloudpanel/cloudpanel.rb
52
+ lib/erlang/cloudpanel/deps/mochiweb/LICENSE
53
+ lib/erlang/cloudpanel/deps/mochiweb/Makefile
54
+ lib/erlang/cloudpanel/deps/mochiweb/README
55
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochifmt.html
56
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochifmt_records.html
57
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochifmt_std.html
58
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochihex.html
59
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochijson.html
60
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochijson2.html
61
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochinum.html
62
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb.html
63
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_app.html
64
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_charref.html
65
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_cookies.html
66
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_echo.html
67
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_headers.html
68
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_html.html
69
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_http.html
70
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_multipart.html
71
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_request.html
72
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_response.html
73
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_skel.html
74
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_socket_server.html
75
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_sup.html
76
+ lib/erlang/cloudpanel/deps/mochiweb/doc/mochiweb_util.html
77
+ lib/erlang/cloudpanel/deps/mochiweb/doc/reloader.html
78
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochifmt.beam
79
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochifmt_records.beam
80
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochifmt_std.beam
81
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochihex.beam
82
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochijson.beam
83
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochijson2.beam
84
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochinum.beam
85
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb.app
86
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb.beam
87
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_app.beam
88
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_charref.beam
89
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_cookies.beam
90
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_echo.beam
91
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_headers.beam
92
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_html.beam
93
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_http.beam
94
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_multipart.beam
95
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_request.beam
96
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_response.beam
97
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_skel.beam
98
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_socket_server.beam
99
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_sup.beam
100
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/mochiweb_util.beam
101
+ lib/erlang/cloudpanel/deps/mochiweb/ebin/reloader.beam
102
+ lib/erlang/cloudpanel/deps/mochiweb/priv/skel/Makefile
103
+ lib/erlang/cloudpanel/deps/mochiweb/priv/skel/priv/www/index.html
104
+ lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/Makefile
105
+ lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel.app
106
+ lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel.erl
107
+ lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel.hrl
108
+ lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel_app.erl
109
+ lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel_deps.erl
110
+ lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel_sup.erl
111
+ lib/erlang/cloudpanel/deps/mochiweb/priv/skel/src/skel_web.erl
112
+ lib/erlang/cloudpanel/deps/mochiweb/priv/skel/start-dev.sh
113
+ lib/erlang/cloudpanel/deps/mochiweb/priv/skel/start.sh
114
+ lib/erlang/cloudpanel/deps/mochiweb/priv/skel/support/include.mk
115
+ lib/erlang/cloudpanel/deps/mochiweb/scripts/new_mochiweb.erl
116
+ lib/erlang/cloudpanel/deps/mochiweb/src/Makefile
117
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochifmt.erl
118
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochifmt_records.erl
119
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochifmt_std.erl
120
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochihex.erl
121
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochijson.erl
122
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochijson2.erl
123
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochinum.erl
124
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb.app
125
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb.erl
126
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_app.erl
127
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_charref.erl
128
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_cookies.erl
129
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_echo.erl
130
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_headers.erl
131
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_html.erl
132
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_http.erl
133
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_multipart.erl
134
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_request.erl
135
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_response.erl
136
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_skel.erl
137
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_socket_server.erl
138
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_sup.erl
139
+ lib/erlang/cloudpanel/deps/mochiweb/src/mochiweb_util.erl
140
+ lib/erlang/cloudpanel/deps/mochiweb/src/reloader.erl
141
+ lib/erlang/cloudpanel/deps/mochiweb/support/include.mk
49
142
  lib/erlang/cloudpanel/doc/cloudpanel.html
50
143
  lib/erlang/cloudpanel/doc/cloudpanel_app.html
51
144
  lib/erlang/cloudpanel/doc/cloudpanel_deps.html
52
145
  lib/erlang/cloudpanel/doc/cloudpanel_sup.html
53
146
  lib/erlang/cloudpanel/doc/cloudpanel_web.html
147
+ lib/erlang/cloudpanel/doc/string.html
54
148
  lib/erlang/cloudpanel/ebin/cloudpanel.app
55
149
  lib/erlang/cloudpanel/ebin/cloudpanel.beam
56
150
  lib/erlang/cloudpanel/ebin/cloudpanel_app.beam
57
151
  lib/erlang/cloudpanel/ebin/cloudpanel_deps.beam
58
152
  lib/erlang/cloudpanel/ebin/cloudpanel_sup.beam
59
153
  lib/erlang/cloudpanel/ebin/cloudpanel_web.beam
154
+ lib/erlang/cloudpanel/ebin/string.beam
155
+ lib/erlang/cloudpanel/ebin/tail_log.beam
156
+ lib/erlang/cloudpanel/ebin/tailor.beam
157
+ lib/erlang/cloudpanel/ebin/utils.beam
158
+ lib/erlang/cloudpanel/ebin/views.beam
159
+ lib/erlang/cloudpanel/ebin/web_utils.beam
60
160
  lib/erlang/cloudpanel/priv/www/images/bg_content.gif
61
161
  lib/erlang/cloudpanel/priv/www/index.html
62
162
  lib/erlang/cloudpanel/priv/www/javascripts/jquery.js
163
+ lib/erlang/cloudpanel/priv/www/javascripts/site.js
164
+ lib/erlang/cloudpanel/priv/www/pages/index.html
165
+ lib/erlang/cloudpanel/priv/www/pages/tail.html
166
+ lib/erlang/cloudpanel/priv/www/partials/error.html
167
+ lib/erlang/cloudpanel/priv/www/partials/footer.html
168
+ lib/erlang/cloudpanel/priv/www/partials/header.html
169
+ lib/erlang/cloudpanel/priv/www/partials/menu.html
63
170
  lib/erlang/cloudpanel/priv/www/stylesheets/application.css
64
171
  lib/erlang/cloudpanel/priv/www/stylesheets/classes.css
65
172
  lib/erlang/cloudpanel/priv/www/stylesheets/colors.css
@@ -72,9 +179,15 @@ lib/erlang/cloudpanel/src/cloudpanel_app.erl
72
179
  lib/erlang/cloudpanel/src/cloudpanel_deps.erl
73
180
  lib/erlang/cloudpanel/src/cloudpanel_sup.erl
74
181
  lib/erlang/cloudpanel/src/cloudpanel_web.erl
182
+ lib/erlang/cloudpanel/src/string.erl
183
+ lib/erlang/cloudpanel/src/tail_log.erl
184
+ lib/erlang/cloudpanel/src/tailor.erl
185
+ lib/erlang/cloudpanel/src/utils.erl
186
+ lib/erlang/cloudpanel/src/views.erl
75
187
  lib/erlang/cloudpanel/start-dev.sh
76
188
  lib/erlang/cloudpanel/start.sh
77
189
  lib/erlang/cloudpanel/support/include.mk
190
+ lib/erlang/cloudpanel/yaws.conf
78
191
  lib/erlang/messenger/Emakefile
79
192
  lib/erlang/messenger/Makefile
80
193
  lib/erlang/messenger/README
@@ -181,6 +294,7 @@ lib/poolparty/base_packages/heartbeat.rb
181
294
  lib/poolparty/base_packages/poolparty.rb
182
295
  lib/poolparty/base_packages/ruby.rb
183
296
  lib/poolparty/config/allowed_commands.yml
297
+ lib/poolparty/config/postlaunchmessage.txt
184
298
  lib/poolparty/core/array.rb
185
299
  lib/poolparty/core/class.rb
186
300
  lib/poolparty/core/exception.rb
@@ -197,6 +311,7 @@ lib/poolparty/core/symbol.rb
197
311
  lib/poolparty/core/time.rb
198
312
  lib/poolparty/dependency_resolutions/base.rb
199
313
  lib/poolparty/dependency_resolutions/puppet.rb
314
+ lib/poolparty/exceptions/LoadRulesException.rb
200
315
  lib/poolparty/exceptions/MasterException.rb
201
316
  lib/poolparty/exceptions/RemoteException.rb
202
317
  lib/poolparty/exceptions/ResourceException.rb
@@ -267,8 +382,10 @@ lib/poolparty/templates/poolparty.monitor
267
382
  lib/poolparty/templates/puppet.conf
268
383
  lib/poolparty/templates/puppetcleaner
269
384
  lib/poolparty/templates/puppetrerun
385
+ lib/poolparty/templates/yaws.conf
270
386
  lib/poolparty/version.rb
271
387
  lib/poolpartycl.rb
388
+ log/pool.logs
272
389
  poolparty.gemspec
273
390
  script/destroy
274
391
  script/generate
data/bin/cloud-configure CHANGED
@@ -16,16 +16,16 @@ include Remote
16
16
 
17
17
  @clouds.each do |name, cloud|
18
18
 
19
- with_cloud(cloud, {:testing => o.testing, :location => @location, :provision_class => @provision_class}) do
19
+ with_cloud(cloud, {:testing => o.testing, :location => @location, :provision_class => @provision_class, :verbose => o.verbose}) do
20
20
 
21
- hide_output do
21
+ # hide_output do
22
22
  # if provision_class == "master" || provision_class == "all"
23
23
  Provisioner.configure_master(self, testing)
24
24
  # end
25
25
  # if provision_class == "slave" || provision_class == "all"
26
26
  # Provisioner.configure_slaves(self, testing)
27
27
  # end
28
- end
28
+ # end
29
29
  clear_base_directory unless testing
30
30
  end
31
31
  end
data/bin/cloud-expand CHANGED
@@ -12,11 +12,15 @@ load_pool(o.spec || Binary.get_existing_spec_location)
12
12
 
13
13
  include Remote
14
14
 
15
- @cloud = extract_cloud_from_options(o).first
15
+ @clouds = extract_cloud_from_options o
16
16
 
17
- with_cloud(@cloud, {:testing => @testing}) do
18
- puts header("Expanding cloud #{name}")
19
- puts "#{list_of_running_instances.size} running instances of #{maximum_instances} possible instances"
20
- puts testing ? "Not expanding (test mode)" : "Expanding the cloud"
21
- expand_cloud_if_necessary( !testing )
17
+ @clouds.each do |cloud|
18
+
19
+ with_cloud(cloud, {:testing => @testing, :verbose => o.verbose}) do
20
+ vputs header("Expanding cloud #{name}")
21
+ vputs "#{list_of_running_instances.size} running instances of #{maximum_instances} possible instances"
22
+ vputs testing ? "Not expanding (test mode)" : "Expanding the cloud"
23
+ expand_cloud_if_necessary( !testing )
24
+ end
25
+
22
26
  end
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
+ require "poolparty"
4
+ require "poolpartycl"
5
+ o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
6
+ opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
7
+ end
8
+ load_pool(o.spec || Binary.get_existing_spec_location)
9
+
10
+ @location = o.location ? o.location : "remote"
11
+
12
+ include Remote
13
+
14
+ @clouds = o.cloudname ? [cloud(o.cloudname.downcase.to_sym)] : clouds
15
+
16
+ @clouds.each do |name, cloud|
17
+
18
+ with_cloud(cloud, {:location => @location, :testing => o.testing, :verbose => o.verbose}) do
19
+ vputs header("Load handling cloud #{name}")
20
+ if should_expand_cloud?
21
+ vputs "Expanding cloud based on load"
22
+ logger.debug "Expanding cloud based on load"
23
+ logger.debug rules_values
24
+ expand_cloud_if_necessary
25
+ elsif should_contract_cloud?
26
+ vputs "Contracting cloud based on load"
27
+ logger.debug rules_values
28
+ contract_cloud_if_necessary
29
+ end
30
+ end
31
+
32
+ end
data/bin/cloud-maintain CHANGED
@@ -20,24 +20,18 @@ include Remote
20
20
 
21
21
  with_cloud(cloud, {:location => @location, :testing => o.testing, :verbose => o.verbose}) do
22
22
  vputs header("Maintaining cloud #{name}")
23
+ logger.warn "Maintaining cloud"
24
+ logger.warn rules_values
23
25
  if !minimum_number_of_instances_are_running?
24
26
  vputs "#{list_of_running_instances.size} running instances of between #{minimum_instances} and #{maximum_instances}"
25
27
  vputs "Launching new instance"
26
- expand_cloud_if_necessary( !testing )
28
+ launch_minimum_number_of_instances
27
29
  elsif !maximum_number_of_instances_are_not_running?
28
30
  vputs "#{list_of_running_instances.size} running instances of between #{minimum_instances} and #{maximum_instances}"
29
31
  vputs "Shutting down non-master instance"
30
32
  contract_cloud_if_necessary( !testing )
31
33
  end
32
34
  vputs "Cloud is maintained"
33
-
34
- if should_expand_cloud?
35
- vputs "Expanding cloud based on load"
36
- expand_cloud_if_necessary
37
- elsif should_contract_cloud?
38
- vputs "Contracting cloud based on load"
39
- contract_cloud_if_necessary
40
- end
41
35
  end
42
36
 
43
37
  end
data/bin/cloud-provision CHANGED
@@ -22,7 +22,7 @@ include Remote
22
22
  if instance_num
23
23
  @instance = get_instance_by_number( instance_num )
24
24
  vputs "Provisioning instance: #{@instance.name} (#{instance_num})"
25
- Provisioner.provision_slave(@instance, self, testing)
25
+ instance_num == 0 ? Provisioner.provision_master(self, testing) : Provisioner.provision_slave(@instance, self, testing)
26
26
  else
27
27
  if provision_slave
28
28
  vputs "Provisioning slaves"
data/bin/cloud-start CHANGED
@@ -17,7 +17,7 @@ load_pool(o.spec || Binary.get_existing_spec_location)
17
17
  with_cloud(cloud, {:testing => @testing, :verbose => (o.verbose || false)}) do
18
18
  puts header("Starting cloud")
19
19
  puts "#{list_of_running_instances.size} running instances (#{minimum_instances} - #{maximum_instances})"
20
- if list_of_running_instances.size != 1
20
+ if list_of_running_instances.size <= 1
21
21
  puts "Starting the master instance"
22
22
  if testing
23
23
  puts("\tNot launching while in testing mode")
@@ -28,6 +28,7 @@ load_pool(o.spec || Binary.get_existing_spec_location)
28
28
  provisioning_complete
29
29
  end
30
30
  end
31
+ puts open(::File.join(File.dirname(__FILE__), "..", "lib", "poolparty", "config", "postlaunchmessage.txt")).read ^ {:master_ip => master.ip.chomp}
31
32
  clear_base_directory unless testing
32
33
  end
33
34
 
@@ -16,6 +16,7 @@ include Remote
16
16
  @clouds.each do |cloud|
17
17
 
18
18
  with_cloud(cloud, {:testing => o.testing }) do
19
+ puts header("Stats")
19
20
  puts rules_values
20
21
  end
21
22
 
@@ -0,0 +1 @@
1
+ {"src/*", [debug_info, {outdir, "ebin"}, {i,"include"}]}.
@@ -1,5 +1,8 @@
1
1
  all:
2
2
  (cd src;$(MAKE))
3
3
 
4
+ mochi:
5
+ (cd deps/mochiweb/;$(MAKE))
6
+
4
7
  clean:
5
8
  (cd src;$(MAKE) clean)
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "rubygems"
4
+ require "sinatra"
5
+
6
+ cmd = "rm ebin/*; erl -pa ./ebin -run make all load -run app start"
7
+ Kernel.system cmd
8
+
9
+ get '/' do
10
+ "body"
11
+ end
12
+
13
+ get '/tail' do
14
+
15
+ end
@@ -40,6 +40,6 @@
40
40
  <hr>
41
41
 
42
42
  <div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
43
- <p><i>Generated by EDoc, Nov 2 2008, 01:52:49.</i></p>
43
+ <p><i>Generated by EDoc, Nov 3 2008, 14:25:08.</i></p>
44
44
  </body>
45
45
  </html>
@@ -0,0 +1,222 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html>
3
+ <head>
4
+ <title>Module string</title>
5
+ <link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
6
+ </head>
7
+ <body bgcolor="white">
8
+ <div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
9
+ <hr>
10
+
11
+ <h1>Module string</h1>
12
+ <ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
13
+
14
+
15
+ <h2><a name="index">Function Index</a></h2>
16
+ <table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#centre-2">centre/2</a></td><td></td></tr>
17
+ <tr><td valign="top"><a href="#centre-3">centre/3</a></td><td></td></tr>
18
+ <tr><td valign="top"><a href="#chars-2">chars/2</a></td><td></td></tr>
19
+ <tr><td valign="top"><a href="#chars-3">chars/3</a></td><td></td></tr>
20
+ <tr><td valign="top"><a href="#chr-2">chr/2</a></td><td></td></tr>
21
+ <tr><td valign="top"><a href="#concat-2">concat/2</a></td><td></td></tr>
22
+ <tr><td valign="top"><a href="#copies-2">copies/2</a></td><td></td></tr>
23
+ <tr><td valign="top"><a href="#cspan-2">cspan/2</a></td><td></td></tr>
24
+ <tr><td valign="top"><a href="#equal-2">equal/2</a></td><td></td></tr>
25
+ <tr><td valign="top"><a href="#join-2">join/2</a></td><td></td></tr>
26
+ <tr><td valign="top"><a href="#left-2">left/2</a></td><td></td></tr>
27
+ <tr><td valign="top"><a href="#left-3">left/3</a></td><td></td></tr>
28
+ <tr><td valign="top"><a href="#len-1">len/1</a></td><td></td></tr>
29
+ <tr><td valign="top"><a href="#rchr-2">rchr/2</a></td><td></td></tr>
30
+ <tr><td valign="top"><a href="#right-2">right/2</a></td><td></td></tr>
31
+ <tr><td valign="top"><a href="#right-3">right/3</a></td><td></td></tr>
32
+ <tr><td valign="top"><a href="#rstr-2">rstr/2</a></td><td></td></tr>
33
+ <tr><td valign="top"><a href="#span-2">span/2</a></td><td></td></tr>
34
+ <tr><td valign="top"><a href="#str-2">str/2</a></td><td></td></tr>
35
+ <tr><td valign="top"><a href="#strip-1">strip/1</a></td><td></td></tr>
36
+ <tr><td valign="top"><a href="#strip-2">strip/2</a></td><td></td></tr>
37
+ <tr><td valign="top"><a href="#strip-3">strip/3</a></td><td></td></tr>
38
+ <tr><td valign="top"><a href="#sub_string-2">sub_string/2</a></td><td></td></tr>
39
+ <tr><td valign="top"><a href="#sub_string-3">sub_string/3</a></td><td></td></tr>
40
+ <tr><td valign="top"><a href="#sub_word-2">sub_word/2</a></td><td></td></tr>
41
+ <tr><td valign="top"><a href="#sub_word-3">sub_word/3</a></td><td></td></tr>
42
+ <tr><td valign="top"><a href="#substr-2">substr/2</a></td><td></td></tr>
43
+ <tr><td valign="top"><a href="#substr-3">substr/3</a></td><td></td></tr>
44
+ <tr><td valign="top"><a href="#to_lower-1">to_lower/1</a></td><td></td></tr>
45
+ <tr><td valign="top"><a href="#to_upper-1">to_upper/1</a></td><td></td></tr>
46
+ <tr><td valign="top"><a href="#tokens-2">tokens/2</a></td><td></td></tr>
47
+ <tr><td valign="top"><a href="#words-1">words/1</a></td><td></td></tr>
48
+ <tr><td valign="top"><a href="#words-2">words/2</a></td><td></td></tr>
49
+ </table>
50
+
51
+ <h2><a name="functions">Function Details</a></h2>
52
+
53
+ <h3 class="function"><a name="centre-2">centre/2</a></h3>
54
+ <div class="spec">
55
+ <p><tt>centre() -&gt; term()</tt></p>
56
+ </div>
57
+
58
+ <h3 class="function"><a name="centre-3">centre/3</a></h3>
59
+ <div class="spec">
60
+ <p><tt>centre() -&gt; term()</tt></p>
61
+ </div>
62
+
63
+ <h3 class="function"><a name="chars-2">chars/2</a></h3>
64
+ <div class="spec">
65
+ <p><tt>chars() -&gt; term()</tt></p>
66
+ </div>
67
+
68
+ <h3 class="function"><a name="chars-3">chars/3</a></h3>
69
+ <div class="spec">
70
+ <p><tt>chars() -&gt; term()</tt></p>
71
+ </div>
72
+
73
+ <h3 class="function"><a name="chr-2">chr/2</a></h3>
74
+ <div class="spec">
75
+ <p><tt>chr() -&gt; term()</tt></p>
76
+ </div>
77
+
78
+ <h3 class="function"><a name="concat-2">concat/2</a></h3>
79
+ <div class="spec">
80
+ <p><tt>concat() -&gt; term()</tt></p>
81
+ </div>
82
+
83
+ <h3 class="function"><a name="copies-2">copies/2</a></h3>
84
+ <div class="spec">
85
+ <p><tt>copies() -&gt; term()</tt></p>
86
+ </div>
87
+
88
+ <h3 class="function"><a name="cspan-2">cspan/2</a></h3>
89
+ <div class="spec">
90
+ <p><tt>cspan() -&gt; term()</tt></p>
91
+ </div>
92
+
93
+ <h3 class="function"><a name="equal-2">equal/2</a></h3>
94
+ <div class="spec">
95
+ <p><tt>equal() -&gt; term()</tt></p>
96
+ </div>
97
+
98
+ <h3 class="function"><a name="join-2">join/2</a></h3>
99
+ <div class="spec">
100
+ <p><tt>join() -&gt; term()</tt></p>
101
+ </div>
102
+
103
+ <h3 class="function"><a name="left-2">left/2</a></h3>
104
+ <div class="spec">
105
+ <p><tt>left() -&gt; term()</tt></p>
106
+ </div>
107
+
108
+ <h3 class="function"><a name="left-3">left/3</a></h3>
109
+ <div class="spec">
110
+ <p><tt>left() -&gt; term()</tt></p>
111
+ </div>
112
+
113
+ <h3 class="function"><a name="len-1">len/1</a></h3>
114
+ <div class="spec">
115
+ <p><tt>len() -&gt; term()</tt></p>
116
+ </div>
117
+
118
+ <h3 class="function"><a name="rchr-2">rchr/2</a></h3>
119
+ <div class="spec">
120
+ <p><tt>rchr() -&gt; term()</tt></p>
121
+ </div>
122
+
123
+ <h3 class="function"><a name="right-2">right/2</a></h3>
124
+ <div class="spec">
125
+ <p><tt>right() -&gt; term()</tt></p>
126
+ </div>
127
+
128
+ <h3 class="function"><a name="right-3">right/3</a></h3>
129
+ <div class="spec">
130
+ <p><tt>right() -&gt; term()</tt></p>
131
+ </div>
132
+
133
+ <h3 class="function"><a name="rstr-2">rstr/2</a></h3>
134
+ <div class="spec">
135
+ <p><tt>rstr() -&gt; term()</tt></p>
136
+ </div>
137
+
138
+ <h3 class="function"><a name="span-2">span/2</a></h3>
139
+ <div class="spec">
140
+ <p><tt>span() -&gt; term()</tt></p>
141
+ </div>
142
+
143
+ <h3 class="function"><a name="str-2">str/2</a></h3>
144
+ <div class="spec">
145
+ <p><tt>str() -&gt; term()</tt></p>
146
+ </div>
147
+
148
+ <h3 class="function"><a name="strip-1">strip/1</a></h3>
149
+ <div class="spec">
150
+ <p><tt>strip() -&gt; term()</tt></p>
151
+ </div>
152
+
153
+ <h3 class="function"><a name="strip-2">strip/2</a></h3>
154
+ <div class="spec">
155
+ <p><tt>strip() -&gt; term()</tt></p>
156
+ </div>
157
+
158
+ <h3 class="function"><a name="strip-3">strip/3</a></h3>
159
+ <div class="spec">
160
+ <p><tt>strip() -&gt; term()</tt></p>
161
+ </div>
162
+
163
+ <h3 class="function"><a name="sub_string-2">sub_string/2</a></h3>
164
+ <div class="spec">
165
+ <p><tt>sub_string() -&gt; term()</tt></p>
166
+ </div>
167
+
168
+ <h3 class="function"><a name="sub_string-3">sub_string/3</a></h3>
169
+ <div class="spec">
170
+ <p><tt>sub_string() -&gt; term()</tt></p>
171
+ </div>
172
+
173
+ <h3 class="function"><a name="sub_word-2">sub_word/2</a></h3>
174
+ <div class="spec">
175
+ <p><tt>sub_word() -&gt; term()</tt></p>
176
+ </div>
177
+
178
+ <h3 class="function"><a name="sub_word-3">sub_word/3</a></h3>
179
+ <div class="spec">
180
+ <p><tt>sub_word() -&gt; term()</tt></p>
181
+ </div>
182
+
183
+ <h3 class="function"><a name="substr-2">substr/2</a></h3>
184
+ <div class="spec">
185
+ <p><tt>substr() -&gt; term()</tt></p>
186
+ </div>
187
+
188
+ <h3 class="function"><a name="substr-3">substr/3</a></h3>
189
+ <div class="spec">
190
+ <p><tt>substr() -&gt; term()</tt></p>
191
+ </div>
192
+
193
+ <h3 class="function"><a name="to_lower-1">to_lower/1</a></h3>
194
+ <div class="spec">
195
+ <p><tt>to_lower() -&gt; term()</tt></p>
196
+ </div>
197
+
198
+ <h3 class="function"><a name="to_upper-1">to_upper/1</a></h3>
199
+ <div class="spec">
200
+ <p><tt>to_upper() -&gt; term()</tt></p>
201
+ </div>
202
+
203
+ <h3 class="function"><a name="tokens-2">tokens/2</a></h3>
204
+ <div class="spec">
205
+ <p><tt>tokens() -&gt; term()</tt></p>
206
+ </div>
207
+
208
+ <h3 class="function"><a name="words-1">words/1</a></h3>
209
+ <div class="spec">
210
+ <p><tt>words() -&gt; term()</tt></p>
211
+ </div>
212
+
213
+ <h3 class="function"><a name="words-2">words/2</a></h3>
214
+ <div class="spec">
215
+ <p><tt>words() -&gt; term()</tt></p>
216
+ </div>
217
+ <hr>
218
+
219
+ <div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
220
+ <p><i>Generated by EDoc, Nov 3 2008, 14:25:18.</i></p>
221
+ </body>
222
+ </html>
@@ -2,7 +2,8 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>CloudPanel</title>
5
- <link href="stylesheets/application.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/classes.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/colors.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/nav.css" media="all" rel="stylesheet" type="text/css"/>
5
+ <link href="/stylesheets/application.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/classes.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/colors.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/nav.css" media="all" rel="stylesheet" type="text/css"/>
6
+ <script type="text/javascript" charset="utf-8" src="javascrites/jquery.js" /><script type="text/javascript" charset="utf-8" src="javascrites/site.js" />
6
7
  </head>
7
8
  <body>
8
9
  <div id='container'>
@@ -0,0 +1,2 @@
1
+ $(document).ready(function() {
2
+ });
@@ -0,0 +1 @@
1
+ INDEX!
@@ -0,0 +1 @@
1
+ Tail!
@@ -0,0 +1,3 @@
1
+ <h1>Error</h1>
2
+ Oops.
3
+ There was an error. We have been notified and are checking it out.
@@ -0,0 +1,6 @@
1
+ <div id='footer'>
2
+ Copyright - Ari Lerner - 2008 - CitrusByte Labs
3
+ </div>
4
+ </div>
5
+ </body>
6
+ </html>
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html>
3
+ <head>
4
+ <title>CloudPanel</title>
5
+ <link href="/stylesheets/application.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/classes.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/colors.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/nav.css" media="all" rel="stylesheet" type="text/css"/>
6
+ <script type="text/javascript" charset="utf-8" src="javascripts/jquery.js" /><script type="text/javascript" charset="utf-8" src="javascripts/site.js" />
7
+ </head>
8
+ <body>
9
+ <div id='container'>
10
+ <div id='top'>
11
+ <h1><span class="blue">Cloud</span><span class="dark">Panel</span></h1>
12
+ </div>
13
+ <div id='content'>