auser-poolparty 0.2.15 → 0.2.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/Manifest.txt +28 -10
  2. data/bin/cloud +2 -2
  3. data/bin/cloud-provision +1 -1
  4. data/bin/cloud-run +19 -0
  5. data/bin/pool +2 -2
  6. data/bin/server-fire-cmd +16 -0
  7. data/bin/server-start-master +32 -0
  8. data/bin/server-start-node +32 -0
  9. data/lib/erlang/messenger/Rakefile +12 -0
  10. data/lib/erlang/messenger/ebin/master.app +19 -0
  11. data/lib/erlang/messenger/ebin/master_app.beam +0 -0
  12. data/lib/erlang/messenger/{lib/load_app.app → ebin/node.app} +6 -5
  13. data/lib/erlang/messenger/ebin/node_app.beam +0 -0
  14. data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
  15. data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
  16. data/lib/erlang/messenger/ebin/pm_event_handler.beam +0 -0
  17. data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
  18. data/lib/erlang/messenger/ebin/pm_master_rel-0.1.rel +7 -0
  19. data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
  20. data/lib/erlang/messenger/ebin/pm_node.beam +0 -0
  21. data/lib/erlang/messenger/ebin/pm_node_rel-0.1.rel +7 -0
  22. data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
  23. data/lib/erlang/messenger/ebin/utils.beam +0 -0
  24. data/lib/erlang/messenger/pm_master_rel-0.1.boot +0 -0
  25. data/lib/erlang/messenger/pm_master_rel-0.1.script +169 -0
  26. data/lib/erlang/messenger/pm_node_rel-0.1.boot +0 -0
  27. data/lib/erlang/messenger/pm_node_rel-0.1.script +169 -0
  28. data/lib/erlang/messenger/src/master_app.erl +39 -0
  29. data/lib/erlang/messenger/src/node_app.erl +39 -0
  30. data/lib/erlang/messenger/src/pm_client.erl +14 -0
  31. data/lib/erlang/messenger/src/pm_cluster.erl +4 -1
  32. data/lib/erlang/messenger/src/pm_event_handler.erl +21 -0
  33. data/lib/erlang/messenger/src/pm_master.erl +113 -21
  34. data/lib/erlang/messenger/src/pm_master_supervisor.erl +33 -1
  35. data/lib/erlang/messenger/src/pm_node.erl +111 -65
  36. data/lib/erlang/messenger/src/pm_node_supervisor.erl +22 -15
  37. data/lib/erlang/messenger/src/utils.erl +45 -0
  38. data/lib/poolparty/base_packages/ruby.rb +1 -1
  39. data/lib/poolparty/helpers/console.rb +3 -2
  40. data/lib/poolparty/helpers/optioner.rb +6 -2
  41. data/lib/poolparty/helpers/provisioner_base.rb +5 -3
  42. data/lib/poolparty/helpers/provisioners/slave.rb +3 -0
  43. data/lib/poolparty/modules/resourcing_dsl.rb +4 -0
  44. data/lib/poolparty/net/remote_instance.rb +1 -1
  45. data/lib/poolparty/net/remoter.rb +11 -4
  46. data/lib/poolparty/plugins/git.rb +6 -12
  47. data/lib/poolparty/version.rb +1 -1
  48. data/poolparty.gemspec +4 -4
  49. data/spec/poolparty/bin/console_spec.rb +1 -1
  50. data/spec/poolparty/helpers/optioner_spec.rb +2 -1
  51. data/spec/poolparty/helpers/provisioner_base_spec.rb +1 -1
  52. data/spec/poolparty/helpers/provisioners/master_spec.rb +1 -1
  53. data/spec/poolparty/net/remote_spec.rb +51 -42
  54. data/spec/poolparty/pool/resources/gem_spec.rb +0 -1
  55. data/website/index.html +1 -1
  56. metadata +34 -13
  57. data/bin/pool-start-monitor +0 -1
  58. data/lib/erlang/messenger/ebin/erl_crash.dump +0 -12138
  59. data/lib/erlang/messenger/ebin/load_app.beam +0 -0
  60. data/lib/erlang/messenger/src/load_app.erl +0 -26
@@ -1,33 +1,40 @@
1
- % Supervisor for the poolparty_messenger server
2
- %
3
- % Ari Lerner
4
- % CitrusByte
1
+ % This supervisor is responsible for monitoring the
2
+ % client service
5
3
 
6
4
  -module (pm_node_supervisor).
7
- -behaviour (supervisor).
5
+ -behaviour(supervisor).
6
+
7
+ -export([start/0, start_in_shell_for_testing/0, start_link/1, init/1]).
8
8
 
9
9
  -ifdef(EUNIT).
10
10
  -include_lib("eunit/include/eunit.hrl").
11
11
  -endif.
12
12
 
13
- -define (SERVER, ?MODULE).
13
+ start() ->
14
+ spawn(fun() ->
15
+ supervisor:start_link({local, ?MODULE}, ?MODULE, _Arg = [])
16
+ end).
14
17
 
15
- -export ([start_link/0, init/1]).
18
+ start_in_shell_for_testing() ->
19
+ {ok, Pid} = supervisor:start_link({local, ?MODULE}, ?MODULE, _Arg = []),
20
+ unlink(Pid).
16
21
 
17
- start_link() ->
18
- io:format("Starting load_supervisor...~n"),
19
- supervisor:start_link({local, ?SERVER}, ?MODULE, []).
22
+ start_link(Args) ->
23
+ supervisor:start_link({local, ?MODULE}, ?MODULE, Args).
20
24
 
21
25
  init([]) ->
22
26
  RestartStrategy = one_for_one,
23
27
  MaxRestarts = 3, % 1000
24
28
  MaxTimeBetRestarts = 30, % 3600
25
-
29
+
26
30
  SupFlags = {RestartStrategy, MaxRestarts, MaxTimeBetRestarts},
27
-
31
+
28
32
  LoadServers = [
29
- {load_server, {load_server, start_link, []}, permanent, 5000, worker, [load_server, load_client]}
33
+ {pm_node1,
34
+ {pm_node, start_link, []},
35
+ permanent, 5000, worker,
36
+ [pm_node]
37
+ }
30
38
  ],
31
-
39
+
32
40
  {ok, {SupFlags, LoadServers}}.
33
-
@@ -0,0 +1,45 @@
1
+ -module (utils).
2
+ -compile(export_all).
3
+
4
+ -ifdef(EUNIT).
5
+ -include_lib("eunit/include/eunit.hrl").
6
+ -endif.
7
+
8
+ % Turn a list from
9
+ % [{"0.66"}, {"0.32"}, []] -> [0.66, 0.32]
10
+ convert_responses_to_int_list(L) ->
11
+ Sum = lists:foldr( fun(Int, Sum) -> Int + Sum end, 0, [erlang:list_to_float(F) || {F} <- L] ),
12
+ average_for_list(Sum, L).
13
+
14
+ % Start a timer to fire off Fun after Time number of milliseconds
15
+ start_timer(Time, Fun) ->
16
+ register(clock, spawn(fun() -> tick_timer(Time, Fun) end)).
17
+
18
+ stop_timer() -> clock ! stop.
19
+
20
+ tick_timer(Time, Fun) ->
21
+ receive
22
+ stop ->
23
+ void
24
+ after Time ->
25
+ Fun(),
26
+ tick_timer(Time, Fun)
27
+ end.
28
+
29
+
30
+ % Private
31
+ % Get the average of the list
32
+ average_for_list(Num, L) ->
33
+ case length(L) of
34
+ 0 ->
35
+ 0;
36
+ _ ->
37
+ Num / length(L)
38
+ end.
39
+
40
+ % Recompiles the boot scripts
41
+ recompile_scripts(Vers) ->
42
+ systools:make_script("pm_node_rel-"++Vers, [local]),
43
+ systools:make_script("pm_master_rel-"++Vers, [local]).
44
+
45
+ % Tests
@@ -12,7 +12,7 @@ module PoolParty
12
12
  has_package(:name => "ruby1.8-dev")
13
13
  has_package(:name => "ruby1.8")
14
14
 
15
- has_line_in_file("export PATH=$PATH:/var/lib/gems/1.8/bin/", "/etc/profile")
15
+ has_line_in_file("export PATH=$PATH:/var/lib/gems/1.8/bin:/sbin", "/etc/profile")
16
16
 
17
17
  # exec(:name => "update-rubygems") do
18
18
  # command "gem update --system"
@@ -7,8 +7,9 @@ module PoolParty
7
7
 
8
8
  # Load a file that contains a pool into memory
9
9
  def load_pool(filename)
10
- unless filename && ::File.file?(filename)
11
- puts "Could not load pool"
10
+ filename = filename.chomp
11
+ unless filename && ::File.readable?(filename)
12
+ puts "Could not load pool: #{filename}"
12
13
  exit
13
14
  else
14
15
  PoolParty::Script.inflate(open(filename).read, File.dirname(filename))
@@ -9,7 +9,7 @@ module PoolParty
9
9
  include MethodMissingSugar
10
10
 
11
11
  def initialize(args=[], opts={}, &block)
12
- @arguments = args
12
+ @arguments = parse_args(args)
13
13
  @parse_options = opts[:parse_options] ? opts[:parse_options] : true
14
14
 
15
15
  set_default_options
@@ -17,6 +17,10 @@ module PoolParty
17
17
  self
18
18
  end
19
19
 
20
+ def parse_args(argv, safe=[])
21
+ argv
22
+ end
23
+
20
24
  def parent
21
25
  self
22
26
  end
@@ -47,7 +51,7 @@ module PoolParty
47
51
  exit
48
52
  end
49
53
 
50
- opts.parse!(@arguments)
54
+ opts.parse(@arguments.dup)
51
55
 
52
56
  process_options
53
57
  output_options if verbose
@@ -71,7 +71,7 @@ module PoolParty
71
71
  setup_runner(@cloud)
72
72
 
73
73
  unless testing
74
- logger.debug "Logging on to #{@instance.ip}"
74
+ puts "Logging on to #{@instance.ip}" if verbose
75
75
  @cloud.prepare_reconfiguration
76
76
  @cloud.rsync_storage_files_to(@instance)
77
77
 
@@ -95,6 +95,7 @@ module PoolParty
95
95
  setup_runner(@cloud)
96
96
 
97
97
  unless testing
98
+ puts "Logging on to #{@instance.ip}" if verbose
98
99
  @cloud.rsync_storage_files_to(@instance)
99
100
 
100
101
  cmd = "cd #{Base.remote_storage_path} && chmod +x configure_#{name}.sh && /bin/sh configure_#{name}.sh && rm configure_#{name}.sh"
@@ -181,7 +182,7 @@ module PoolParty
181
182
  # Package installers for general *nix operating systems
182
183
  def self.installers
183
184
  @installers ||= {
184
- :ubuntu => "apt-get install -y",
185
+ :ubuntu => "aptitude install -y",
185
186
  :fedora => "yum install",
186
187
  :gentoo => "emerge"
187
188
  }
@@ -230,7 +231,8 @@ module PoolParty
230
231
  "
231
232
  touch /etc/apt/sources.list
232
233
  echo 'deb http://mirrors.kernel.org/ubuntu hardy main universe' >> /etc/apt/sources.list
233
- apt-get update --fix-missing -y
234
+ aptitude update -y
235
+ aptitude autoclean
234
236
  "
235
237
  else
236
238
  "# No system upgrade needed"
@@ -19,6 +19,7 @@ module PoolParty
19
19
  <<-EOE
20
20
  if [ -z "$(grep -v '#' /etc/hosts | grep 'master')" ]; then echo "#{master_ip} puppet master" >> /etc/hosts; else echo "host already set"; fi
21
21
  cp #{Base.remote_storage_path}/namespaceauth.conf /etc/puppet/namespaceauth.conf
22
+ echo 'DAEMON_OPTS="-w 120 –fqdn #{@instance.name} –server master"' > /etc/default/puppet
22
23
  EOE
23
24
  end
24
25
 
@@ -32,7 +33,9 @@ module PoolParty
32
33
  # puppetd --listen --fqdn #{@instance.name}
33
34
  def start_puppet
34
35
  <<-EOS
36
+ ps aux | grep "puppetmasterd" | awk '{print $2}' | xargs kill
35
37
  rm -rf /etc/puppet/ssl*
38
+ puppetd --test 2>&1 &
36
39
  EOS
37
40
  end
38
41
 
@@ -42,6 +42,10 @@ module PoolParty
42
42
  end
43
43
  # Give us a template to work with on the resource
44
44
  # Make sure this template is moved to the tmp directory as well
45
+ #
46
+ # TODO: Change this method to store the template files for later
47
+ # copying to prevent unnecessary copying and tons of directories
48
+ # everywhere
45
49
  def template(file, opts={})
46
50
  raise TemplateNotFound.new("no template given") unless file
47
51
  raise TemplateNotFound.new("template cannot be found #{file}") unless ::File.file?(file)
@@ -66,7 +66,7 @@ module PoolParty
66
66
 
67
67
  # Commands for the servers
68
68
  def puppet_runner_command
69
- ". /etc/profile && puppetd --onetime --no-daemonize --logdest syslog --server master > /dev/null 2>&1"
69
+ ". /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master 2>&1"
70
70
  end
71
71
  end
72
72
 
@@ -152,7 +152,7 @@ module PoolParty
152
152
  request_launch_new_instances(1) if list_of_pending_instances.size.zero? && can_start_a_new_instance? && !is_master_running?
153
153
 
154
154
  when_no_pending_instances do
155
- wait "10.seconds"
155
+ wait "20.seconds"
156
156
  hide_output { Provisioner.provision_master(self, testing) }
157
157
  end
158
158
 
@@ -180,8 +180,10 @@ module PoolParty
180
180
 
181
181
  reset!
182
182
  when_no_pending_instances do
183
- @ri = list_of_running_instances.last
184
- PoolParty::Provisioner.provision_slave(@ri, self, !force)
183
+ wait "20.seconds" # Give some time for ssh to startup
184
+ PoolParty::Provisioner.provision_slaves(self)
185
+ PoolParty::Provisioner.configure_master(self, testing)
186
+ # prepare_reconfiguration
185
187
  end
186
188
  end
187
189
  end
@@ -216,11 +218,16 @@ module PoolParty
216
218
  ssh_into( get_instance_by_number( num || 0 ) )
217
219
  end
218
220
 
221
+ # Run command on the instance by the number
222
+ def run_command_on_instance_number(cmd="ls -l", num=0)
223
+ run_command_on(cmd, get_instance_by_number( num || 0 ) )
224
+ end
225
+
219
226
  # Prepare reconfiguration on the master
220
227
  # TODO: Fix the killall
221
228
  def prepare_reconfiguration
222
229
  unless @prepared
223
- cmd = "killall ruby && rm -rf /etc/puppet/ssl/*; puppetmasterd --verbose; puppetd --test"
230
+ cmd = "killall ruby && rm -rf /etc/puppet/ssl/*; puppetmasterd --verbose; puppetd --test --no-daemonize 2>&1 &"
224
231
  run_command_on(cmd, master)
225
232
  @prepared = true
226
233
  end
@@ -4,23 +4,17 @@ module PoolParty
4
4
  virtual_resource(:git) do
5
5
 
6
6
  def loaded(opts={}, parent=self)
7
- install_git
7
+ has_git_repos
8
8
  end
9
-
10
- def install_git
11
- has_package(:name => "git-core") do
12
- has_git_repos
13
- end
14
- end
15
-
9
+
16
10
  def has_git_repos
17
11
  exec({:name => "git-#{name}"}) do
18
- command @parent.user ? "git clone #{@parent.user}@#{@parent.source} #{@parent.path}" : "git clone #{@parent.source} #{@parent.to ? @parent.to : ""}"
19
- cwd "#{@parent.cwd if @parent.cwd}"
20
- creates "#{::File.join( (@parent.cwd ? @parent.cwd : cwd), ::File.basename(@parent.source, ::File.extname(@parent.source)) )}/.git"
12
+ command parent.user ? "git clone #{parent.user}@#{parent.source} #{parent.path}" : "git clone #{parent.source} #{parent.to ? parent.to : ""}"
13
+ cwd "#{parent.cwd if parent.cwd}"
14
+ creates "#{::File.join( (parent.cwd ? parent.cwd : cwd), ::File.basename(parent.source, ::File.extname(parent.source)) )}/.git"
21
15
 
22
16
  exec(:name => "update-#{name}") do
23
- cwd ::File.dirname(@parent.creates)
17
+ cwd ::File.dirname(parent.creates)
24
18
  command "git pull"
25
19
  end
26
20
 
@@ -2,7 +2,7 @@ module PoolParty
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 2
5
- TINY = 15
5
+ TINY = 18
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/poolparty.gemspec CHANGED
@@ -1,15 +1,15 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{poolparty}
3
- s.version = "0.2.15"
3
+ s.version = "0.2.16"
4
4
 
5
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
6
  s.authors = ["Ari Lerner"]
7
- s.date = %q{2008-10-20}
7
+ s.date = %q{2008-10-23}
8
8
  s.description = %q{Self-healing, auto-scaling cloud computing tool}
9
9
  s.email = ["ari.lerner@citrusbyte.com"]
10
- s.executables = ["cloud", "cloud-add-keypair", "cloud-configure", "cloud-contract", "cloud-expand", "cloud-list", "cloud-maintain", "cloud-osxcopy", "cloud-provision", "cloud-refresh", "cloud-ssh", "cloud-start", "cloud-terminate", "pool", "pool-console", "pool-describe", "pool-list", "pool-provision", "pool-spec", "pool-start", "pool-start-monitor", "server-get-load", "server-list-active", "server-rerun"]
10
+ s.executables = ["cloud", "cloud-add-keypair", "cloud-configure", "cloud-contract", "cloud-expand", "cloud-list", "cloud-maintain", "cloud-osxcopy", "cloud-provision", "cloud-refresh", "cloud-run", "cloud-ssh", "cloud-start", "cloud-terminate", "pool", "pool-console", "pool-describe", "pool-list", "pool-provision", "pool-spec", "pool-start", "server-fire-cmd", "server-get-load", "server-list-active", "server-rerun", "server-start-master", "server-start-node"]
11
11
  s.extra_rdoc_files = ["History.txt", "License.txt", "Manifest.txt", "PostInstall.txt", "README.txt", "website/index.txt"]
12
- s.files = ["History.txt", "License.txt", "Manifest.txt", "PostInstall.txt", "README.txt", "Rakefile", "bin/cloud", "bin/cloud-add-keypair", "bin/cloud-configure", "bin/cloud-contract", "bin/cloud-expand", "bin/cloud-list", "bin/cloud-maintain", "bin/cloud-osxcopy", "bin/cloud-provision", "bin/cloud-refresh", "bin/cloud-ssh", "bin/cloud-start", "bin/cloud-terminate", "bin/pool", "bin/pool-console", "bin/pool-describe", "bin/pool-list", "bin/pool-provision", "bin/pool-spec", "bin/pool-start", "bin/pool-start-monitor", "bin/server-get-load", "bin/server-list-active", "bin/server-rerun", "config/hoe.rb", "config/requirements.rb", "examples/basic.rb", "examples/plugin_without_plugin_directory.rb", "examples/poolparty.rb", "examples/with_apache_plugin.rb", "generators/poolspec/USAGE", "generators/poolspec/poolspec_generator.rb", "generators/poolspec/templates/pool_spec_template.erb", "lib/erlang/messenger/Makefile", "lib/erlang/messenger/README", "lib/erlang/messenger/Rakefile", "lib/erlang/messenger/control", "lib/erlang/messenger/ebin/erl_crash.dump", "lib/erlang/messenger/ebin/load_app.beam", "lib/erlang/messenger/ebin/pm_cluster.beam", "lib/erlang/messenger/ebin/pm_master.beam", "lib/erlang/messenger/ebin/pm_master_supervisor.beam", "lib/erlang/messenger/ebin/pm_node.beam", "lib/erlang/messenger/ebin/pm_node_supervisor.beam", "lib/erlang/messenger/ebin/tmp/templates/apache2.conf", "lib/erlang/messenger/ebin/tmp/templates/base.conf.erb", "lib/erlang/messenger/ebin/tmp/templates/browser_fixes.conf.erb", "lib/erlang/messenger/ebin/tmp/templates/mime-minimal.conf.erb", "lib/erlang/messenger/ebin/tmp/templates/virtual_host.conf.erb", "lib/erlang/messenger/lib/load_app.app", "lib/erlang/messenger/src/load_app.erl", "lib/erlang/messenger/src/pm_cluster.erl", "lib/erlang/messenger/src/pm_master.erl", "lib/erlang/messenger/src/pm_master_supervisor.erl", "lib/erlang/messenger/src/pm_node.erl", "lib/erlang/messenger/src/pm_node_supervisor.erl", "lib/poolparty.rb", "lib/poolparty/base_packages/haproxy.rb", "lib/poolparty/base_packages/heartbeat.rb", "lib/poolparty/base_packages/poolparty.rb", "lib/poolparty/base_packages/ruby.rb", "lib/poolparty/core/array.rb", "lib/poolparty/core/exception.rb", "lib/poolparty/core/float.rb", "lib/poolparty/core/hash.rb", "lib/poolparty/core/kernel.rb", "lib/poolparty/core/module.rb", "lib/poolparty/core/my_open_struct.rb", "lib/poolparty/core/object.rb", "lib/poolparty/core/proc.rb", "lib/poolparty/core/string.rb", "lib/poolparty/core/symbol.rb", "lib/poolparty/core/time.rb", "lib/poolparty/dependency_resolutions/base.rb", "lib/poolparty/dependency_resolutions/puppet.rb", "lib/poolparty/exceptions/RemoteException.rb", "lib/poolparty/exceptions/ResourceException.rb", "lib/poolparty/exceptions/RuntimeException.rb", "lib/poolparty/exceptions/SpecException.rb", "lib/poolparty/exceptions/TemplateNotFound.rb", "lib/poolparty/helpers/binary.rb", "lib/poolparty/helpers/console.rb", "lib/poolparty/helpers/display.rb", "lib/poolparty/helpers/optioner.rb", "lib/poolparty/helpers/provisioner_base.rb", "lib/poolparty/helpers/provisioners/master.rb", "lib/poolparty/helpers/provisioners/slave.rb", "lib/poolparty/modules/cloud_resourcer.rb", "lib/poolparty/modules/configurable.rb", "lib/poolparty/modules/definable_resource.rb", "lib/poolparty/modules/file_writer.rb", "lib/poolparty/modules/method_missing_sugar.rb", "lib/poolparty/modules/output.rb", "lib/poolparty/modules/pretty_printer.rb", "lib/poolparty/modules/resourcing_dsl.rb", "lib/poolparty/modules/s3_string.rb", "lib/poolparty/modules/safe_instance.rb", "lib/poolparty/monitors/base_monitor.rb", "lib/poolparty/monitors/monitors/cpu_monitor.rb", "lib/poolparty/monitors/monitors/memory_monitor.rb", "lib/poolparty/net/remote.rb", "lib/poolparty/net/remote_bases/ec2.rb", "lib/poolparty/net/remote_instance.rb", "lib/poolparty/net/remoter.rb", "lib/poolparty/net/remoter_base.rb", "lib/poolparty/plugins/git.rb", "lib/poolparty/plugins/line.rb", "lib/poolparty/plugins/svn.rb", "lib/poolparty/pool/base.rb", "lib/poolparty/pool/cloud.rb", "lib/poolparty/pool/custom_resource.rb", "lib/poolparty/pool/loggable.rb", "lib/poolparty/pool/plugin.rb", "lib/poolparty/pool/plugin_model.rb", "lib/poolparty/pool/pool.rb", "lib/poolparty/pool/resource.rb", "lib/poolparty/pool/resources/class_package.rb", "lib/poolparty/pool/resources/conditional.rb", "lib/poolparty/pool/resources/cron.rb", "lib/poolparty/pool/resources/directory.rb", "lib/poolparty/pool/resources/exec.rb", "lib/poolparty/pool/resources/file.rb", "lib/poolparty/pool/resources/gem.rb", "lib/poolparty/pool/resources/host.rb", "lib/poolparty/pool/resources/package.rb", "lib/poolparty/pool/resources/remote_file.rb", "lib/poolparty/pool/resources/service.rb", "lib/poolparty/pool/resources/sshkey.rb", "lib/poolparty/pool/resources/symlink.rb", "lib/poolparty/pool/resources/variable.rb", "lib/poolparty/pool/script.rb", "lib/poolparty/templates/authkeys", "lib/poolparty/templates/cib.xml", "lib/poolparty/templates/fileserver.conf", "lib/poolparty/templates/gem", "lib/poolparty/templates/ha.cf", "lib/poolparty/templates/haproxy.conf", "lib/poolparty/templates/haresources", "lib/poolparty/templates/namespaceauth.conf", "lib/poolparty/templates/poolparty.monitor", "lib/poolparty/templates/puppet.conf", "lib/poolparty/version.rb", "lib/poolpartycl.rb", "poolparty.gemspec", "script/destroy", "script/generate", "script/txt2html", "setup.rb", "spec/poolparty/base_packages/haproxy_spec.rb", "spec/poolparty/base_packages/heartbeat_spec.rb", "spec/poolparty/bin/console_spec.rb", "spec/poolparty/core/array_spec.rb", "spec/poolparty/core/float.rb", "spec/poolparty/core/hash_spec.rb", "spec/poolparty/core/kernel_spec.rb", "spec/poolparty/core/module_spec.rb", "spec/poolparty/core/object_spec.rb", "spec/poolparty/core/string_spec.rb", "spec/poolparty/core/time_spec.rb", "spec/poolparty/dependency_resolutions/base_spec.rb", "spec/poolparty/helpers/binary_spec.rb", "spec/poolparty/helpers/display_spec.rb", "spec/poolparty/helpers/optioner_spec.rb", "spec/poolparty/helpers/provisioner_base_spec.rb", "spec/poolparty/helpers/provisioners/master_spec.rb", "spec/poolparty/helpers/provisioners/slave_spec.rb", "spec/poolparty/modules/cloud_resourcer_spec.rb", "spec/poolparty/modules/configurable_spec.rb", "spec/poolparty/modules/definable_resource.rb", "spec/poolparty/modules/file_writer_spec.rb", "spec/poolparty/modules/s3_string_spec.rb", "spec/poolparty/monitors/base_monitor_spec.rb", "spec/poolparty/monitors/monitors/cpu_monitor_spec.rb", "spec/poolparty/net/remote_bases/ec2_spec.rb", "spec/poolparty/net/remote_instance_spec.rb", "spec/poolparty/net/remote_spec.rb", "spec/poolparty/net/remoter_base_spec.rb", "spec/poolparty/net/remoter_spec.rb", "spec/poolparty/plugins/git_spec.rb", "spec/poolparty/plugins/line_spec.rb", "spec/poolparty/plugins/svn_spec.rb", "spec/poolparty/pool/base_spec.rb", "spec/poolparty/pool/cloud_spec.rb", "spec/poolparty/pool/configurers/files/ruby_basic.rb", "spec/poolparty/pool/configurers/files/ruby_plugins.rb", "spec/poolparty/pool/configurers/ruby_spec.rb", "spec/poolparty/pool/custom_resource_spec.rb", "spec/poolparty/pool/example_spec.rb", "spec/poolparty/pool/plugin_model_spec.rb", "spec/poolparty/pool/plugin_spec.rb", "spec/poolparty/pool/pool_spec.rb", "spec/poolparty/pool/resource_spec.rb", "spec/poolparty/pool/resources/class_package_spec.rb", "spec/poolparty/pool/resources/conditional_spec.rb", "spec/poolparty/pool/resources/cron_spec.rb", "spec/poolparty/pool/resources/directory_spec.rb", "spec/poolparty/pool/resources/exec_spec.rb", "spec/poolparty/pool/resources/file_spec.rb", "spec/poolparty/pool/resources/gem_spec.rb", "spec/poolparty/pool/resources/host_spec.rb", "spec/poolparty/pool/resources/package_spec.rb", "spec/poolparty/pool/resources/remote_file_spec.rb", "spec/poolparty/pool/resources/service_spec.rb", "spec/poolparty/pool/resources/sshkey_spec.rb", "spec/poolparty/pool/resources/symlink_spec.rb", "spec/poolparty/pool/resources/variable_spec.rb", "spec/poolparty/pool/script_spec.rb", "spec/poolparty/pool/test_plugins/sshkey_test", "spec/poolparty/pool/test_plugins/virtual_host_template.erb", "spec/poolparty/pool/test_plugins/webserver.rb", "spec/poolparty/poolparty_spec.rb", "spec/poolparty/spec_helper.rb", "tasks/cloud.rake", "tasks/deployment.rake", "tasks/development.rake", "tasks/ec2.rake", "tasks/environment.rake", "tasks/instance.rake", "tasks/server.rake", "tasks/spec.rake", "tasks/website.rake", "test/test_generator_helper.rb", "test/test_helper.rb", "test/test_pool_spec_generator.rb", "test/test_poolparty.rb", "test_manifest.pp", "website/index.html", "website/index.txt", "website/javascripts/rounded_corners_lite.inc.js", "website/stylesheets/code.css", "website/stylesheets/screen.css", "website/template.html.erb"]
12
+ s.files = ["History.txt", "License.txt", "Manifest.txt", "PostInstall.txt", "README.txt", "Rakefile", "bin/cloud", "bin/cloud-add-keypair", "bin/cloud-configure", "bin/cloud-contract", "bin/cloud-expand", "bin/cloud-list", "bin/cloud-maintain", "bin/cloud-osxcopy", "bin/cloud-provision", "bin/cloud-refresh", "bin/cloud-run", "bin/cloud-ssh", "bin/cloud-start", "bin/cloud-terminate", "bin/pool", "bin/pool-console", "bin/pool-describe", "bin/pool-list", "bin/pool-provision", "bin/pool-spec", "bin/pool-start", "bin/server-fire-cmd", "bin/server-get-load", "bin/server-list-active", "bin/server-rerun", "bin/server-start-master", "bin/server-start-node", "config/hoe.rb", "config/requirements.rb", "examples/basic.rb", "examples/plugin_without_plugin_directory.rb", "examples/poolparty.rb", "examples/with_apache_plugin.rb", "generators/poolspec/USAGE", "generators/poolspec/poolspec_generator.rb", "generators/poolspec/templates/pool_spec_template.erb", "lib/erlang/messenger/Makefile", "lib/erlang/messenger/README", "lib/erlang/messenger/Rakefile", "lib/erlang/messenger/control", "lib/erlang/messenger/ebin/master.app", "lib/erlang/messenger/ebin/master_app.beam", "lib/erlang/messenger/ebin/node.app", "lib/erlang/messenger/ebin/node_app.beam", "lib/erlang/messenger/ebin/pm_client.beam", "lib/erlang/messenger/ebin/pm_cluster.beam", "lib/erlang/messenger/ebin/pm_event_handler.beam", "lib/erlang/messenger/ebin/pm_master.beam", "lib/erlang/messenger/ebin/pm_master_rel-0.1.rel", "lib/erlang/messenger/ebin/pm_master_supervisor.beam", "lib/erlang/messenger/ebin/pm_node.beam", "lib/erlang/messenger/ebin/pm_node_rel-0.1.rel", "lib/erlang/messenger/ebin/pm_node_supervisor.beam", "lib/erlang/messenger/ebin/utils.beam", "lib/erlang/messenger/logs/pool_log.log", "lib/erlang/messenger/pm_master_rel-0.1.boot", "lib/erlang/messenger/pm_master_rel-0.1.script", "lib/erlang/messenger/pm_node_rel-0.1.boot", "lib/erlang/messenger/pm_node_rel-0.1.script", "lib/erlang/messenger/src/master_app.erl", "lib/erlang/messenger/src/node_app.erl", "lib/erlang/messenger/src/pm_client.erl", "lib/erlang/messenger/src/pm_cluster.erl", "lib/erlang/messenger/src/pm_event_handler.erl", "lib/erlang/messenger/src/pm_master.erl", "lib/erlang/messenger/src/pm_master_supervisor.erl", "lib/erlang/messenger/src/pm_node.erl", "lib/erlang/messenger/src/pm_node_supervisor.erl", "lib/erlang/messenger/src/utils.erl", "lib/erlang/messenger/tmp/templates/apache2.conf", "lib/erlang/messenger/tmp/templates/base.conf.erb", "lib/erlang/messenger/tmp/templates/browser_fixes.conf.erb", "lib/erlang/messenger/tmp/templates/mime-minimal.conf.erb", "lib/erlang/messenger/tmp/templates/virtual_host.conf.erb", "lib/poolparty.rb", "lib/poolparty/base_packages/haproxy.rb", "lib/poolparty/base_packages/heartbeat.rb", "lib/poolparty/base_packages/poolparty.rb", "lib/poolparty/base_packages/ruby.rb", "lib/poolparty/core/array.rb", "lib/poolparty/core/exception.rb", "lib/poolparty/core/float.rb", "lib/poolparty/core/hash.rb", "lib/poolparty/core/kernel.rb", "lib/poolparty/core/module.rb", "lib/poolparty/core/my_open_struct.rb", "lib/poolparty/core/object.rb", "lib/poolparty/core/proc.rb", "lib/poolparty/core/string.rb", "lib/poolparty/core/symbol.rb", "lib/poolparty/core/time.rb", "lib/poolparty/dependency_resolutions/base.rb", "lib/poolparty/dependency_resolutions/puppet.rb", "lib/poolparty/exceptions/RemoteException.rb", "lib/poolparty/exceptions/ResourceException.rb", "lib/poolparty/exceptions/RuntimeException.rb", "lib/poolparty/exceptions/SpecException.rb", "lib/poolparty/exceptions/TemplateNotFound.rb", "lib/poolparty/helpers/binary.rb", "lib/poolparty/helpers/console.rb", "lib/poolparty/helpers/display.rb", "lib/poolparty/helpers/optioner.rb", "lib/poolparty/helpers/provisioner_base.rb", "lib/poolparty/helpers/provisioners/master.rb", "lib/poolparty/helpers/provisioners/slave.rb", "lib/poolparty/modules/cloud_resourcer.rb", "lib/poolparty/modules/configurable.rb", "lib/poolparty/modules/definable_resource.rb", "lib/poolparty/modules/file_writer.rb", "lib/poolparty/modules/method_missing_sugar.rb", "lib/poolparty/modules/output.rb", "lib/poolparty/modules/pretty_printer.rb", "lib/poolparty/modules/resourcing_dsl.rb", "lib/poolparty/modules/s3_string.rb", "lib/poolparty/modules/safe_instance.rb", "lib/poolparty/monitors/base_monitor.rb", "lib/poolparty/monitors/monitors/cpu_monitor.rb", "lib/poolparty/monitors/monitors/memory_monitor.rb", "lib/poolparty/net/remote.rb", "lib/poolparty/net/remote_bases/ec2.rb", "lib/poolparty/net/remote_instance.rb", "lib/poolparty/net/remoter.rb", "lib/poolparty/net/remoter_base.rb", "lib/poolparty/plugins/git.rb", "lib/poolparty/plugins/line.rb", "lib/poolparty/plugins/svn.rb", "lib/poolparty/pool/base.rb", "lib/poolparty/pool/cloud.rb", "lib/poolparty/pool/custom_resource.rb", "lib/poolparty/pool/loggable.rb", "lib/poolparty/pool/plugin.rb", "lib/poolparty/pool/plugin_model.rb", "lib/poolparty/pool/pool.rb", "lib/poolparty/pool/resource.rb", "lib/poolparty/pool/resources/class_package.rb", "lib/poolparty/pool/resources/conditional.rb", "lib/poolparty/pool/resources/cron.rb", "lib/poolparty/pool/resources/directory.rb", "lib/poolparty/pool/resources/exec.rb", "lib/poolparty/pool/resources/file.rb", "lib/poolparty/pool/resources/gem.rb", "lib/poolparty/pool/resources/host.rb", "lib/poolparty/pool/resources/package.rb", "lib/poolparty/pool/resources/remote_file.rb", "lib/poolparty/pool/resources/service.rb", "lib/poolparty/pool/resources/sshkey.rb", "lib/poolparty/pool/resources/symlink.rb", "lib/poolparty/pool/resources/variable.rb", "lib/poolparty/pool/script.rb", "lib/poolparty/templates/authkeys", "lib/poolparty/templates/cib.xml", "lib/poolparty/templates/fileserver.conf", "lib/poolparty/templates/gem", "lib/poolparty/templates/ha.cf", "lib/poolparty/templates/haproxy.conf", "lib/poolparty/templates/haresources", "lib/poolparty/templates/namespaceauth.conf", "lib/poolparty/templates/poolparty.monitor", "lib/poolparty/templates/puppet.conf", "lib/poolparty/version.rb", "lib/poolpartycl.rb", "poolparty.gemspec", "script/destroy", "script/generate", "script/txt2html", "setup.rb", "spec/poolparty/base_packages/haproxy_spec.rb", "spec/poolparty/base_packages/heartbeat_spec.rb", "spec/poolparty/bin/console_spec.rb", "spec/poolparty/core/array_spec.rb", "spec/poolparty/core/float.rb", "spec/poolparty/core/hash_spec.rb", "spec/poolparty/core/kernel_spec.rb", "spec/poolparty/core/module_spec.rb", "spec/poolparty/core/object_spec.rb", "spec/poolparty/core/string_spec.rb", "spec/poolparty/core/time_spec.rb", "spec/poolparty/dependency_resolutions/base_spec.rb", "spec/poolparty/helpers/binary_spec.rb", "spec/poolparty/helpers/display_spec.rb", "spec/poolparty/helpers/optioner_spec.rb", "spec/poolparty/helpers/provisioner_base_spec.rb", "spec/poolparty/helpers/provisioners/master_spec.rb", "spec/poolparty/helpers/provisioners/slave_spec.rb", "spec/poolparty/modules/cloud_resourcer_spec.rb", "spec/poolparty/modules/configurable_spec.rb", "spec/poolparty/modules/definable_resource.rb", "spec/poolparty/modules/file_writer_spec.rb", "spec/poolparty/modules/s3_string_spec.rb", "spec/poolparty/monitors/base_monitor_spec.rb", "spec/poolparty/monitors/monitors/cpu_monitor_spec.rb", "spec/poolparty/net/remote_bases/ec2_spec.rb", "spec/poolparty/net/remote_instance_spec.rb", "spec/poolparty/net/remote_spec.rb", "spec/poolparty/net/remoter_base_spec.rb", "spec/poolparty/net/remoter_spec.rb", "spec/poolparty/plugins/git_spec.rb", "spec/poolparty/plugins/line_spec.rb", "spec/poolparty/plugins/svn_spec.rb", "spec/poolparty/pool/base_spec.rb", "spec/poolparty/pool/cloud_spec.rb", "spec/poolparty/pool/configurers/files/ruby_basic.rb", "spec/poolparty/pool/configurers/files/ruby_plugins.rb", "spec/poolparty/pool/configurers/ruby_spec.rb", "spec/poolparty/pool/custom_resource_spec.rb", "spec/poolparty/pool/example_spec.rb", "spec/poolparty/pool/plugin_model_spec.rb", "spec/poolparty/pool/plugin_spec.rb", "spec/poolparty/pool/pool_spec.rb", "spec/poolparty/pool/resource_spec.rb", "spec/poolparty/pool/resources/class_package_spec.rb", "spec/poolparty/pool/resources/conditional_spec.rb", "spec/poolparty/pool/resources/cron_spec.rb", "spec/poolparty/pool/resources/directory_spec.rb", "spec/poolparty/pool/resources/exec_spec.rb", "spec/poolparty/pool/resources/file_spec.rb", "spec/poolparty/pool/resources/gem_spec.rb", "spec/poolparty/pool/resources/host_spec.rb", "spec/poolparty/pool/resources/package_spec.rb", "spec/poolparty/pool/resources/remote_file_spec.rb", "spec/poolparty/pool/resources/service_spec.rb", "spec/poolparty/pool/resources/sshkey_spec.rb", "spec/poolparty/pool/resources/symlink_spec.rb", "spec/poolparty/pool/resources/variable_spec.rb", "spec/poolparty/pool/script_spec.rb", "spec/poolparty/pool/test_plugins/sshkey_test", "spec/poolparty/pool/test_plugins/virtual_host_template.erb", "spec/poolparty/pool/test_plugins/webserver.rb", "spec/poolparty/poolparty_spec.rb", "spec/poolparty/spec_helper.rb", "tasks/cloud.rake", "tasks/deployment.rake", "tasks/development.rake", "tasks/ec2.rake", "tasks/environment.rake", "tasks/instance.rake", "tasks/server.rake", "tasks/spec.rake", "tasks/website.rake", "test/test_generator_helper.rb", "test/test_helper.rb", "test/test_pool_spec_generator.rb", "test/test_poolparty.rb", "test_manifest.pp", "website/index.html", "website/index.txt", "website/javascripts/rounded_corners_lite.inc.js", "website/stylesheets/code.css", "website/stylesheets/screen.css", "website/template.html.erb"]
13
13
  s.has_rdoc = true
14
14
  s.homepage = %q{http://poolparty.rubyforge.org}
15
15
  s.post_install_message = %q{Get ready to jump in the pool, you just installed poolpartyrb!
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + '/../../../lib/poolparty/helpers/console'
3
3
 
4
4
  describe "Console" do
5
5
  before(:each) do
6
- ::File.stub!(:file?).with("pop").and_return true
6
+ ::File.stub!(:readable?).with("pop").and_return true
7
7
  end
8
8
  describe "load_pool" do
9
9
  before(:each) do
@@ -31,8 +31,9 @@ describe "Option Parser" do
31
31
  end
32
32
  end
33
33
  it "should be able to take a block and set some options on the block" do
34
- o = PoolParty::Optioner.new(["-w"], {}) do |opts, optioner|
34
+ o = PoolParty::Optioner.new(["-w"]) do |opts, optioner|
35
35
  opts.on('-w', '--wee') { optioner.wee "wee" }
36
+ opts.on('-t t', '--teatime tea') { optioner.tea "time" }
36
37
  end
37
38
  o.wee.should == "wee"
38
39
  end
@@ -52,7 +52,7 @@ describe "ProvisionerBase" do
52
52
  ProvisionerBase.installers[:ubuntu].should_not be_nil
53
53
  end
54
54
  it "should be able to fetch the ubuntu installer with the helper method installer" do
55
- ProvisionerBase.new(@remote_instance,@cloud, "ubuntu").installer_for.should == "apt-get install -y "
55
+ ProvisionerBase.new(@remote_instance,@cloud, "ubuntu").installer_for.should == "aptitude install -y "
56
56
  end
57
57
  it "should be able to fetch the fedora installer with the helper method installer" do
58
58
  ProvisionerBase.new(@remote_instance,@cloud, "fedora").installer_for.should == "yum install "
@@ -37,7 +37,7 @@ describe "Master provisioner" do
37
37
  end
38
38
  end
39
39
  it "should return install_puppet_master as apt-get install puppet factor" do
40
- @master.install_puppet.should =~ /apt-get install -y puppet puppetmaster/
40
+ @master.install_puppet.should =~ /install -y puppet puppetmaster/
41
41
  end
42
42
  it "should return setup basic structure" do
43
43
  @master.setup_basic_structure.should =~ /puppetmasterd --mkusers/
@@ -190,51 +190,60 @@ describe "Remote" do
190
190
  end
191
191
  describe "should_contract_cloud?" do
192
192
  end
193
- describe "expand_cloud_if_necessary" do
193
+ describe "expansions" do
194
194
  before(:each) do
195
- stub_list_from_remote_for(@tc)
196
- @tc.stub!(:request_launch_new_instances).and_return true
197
- @tc.stub!(:can_start_a_new_instance).and_return true
198
- @tc.stub!(:list_of_pending_instances).and_return []
199
- @tc.stub!(:prepare_to_configuration).and_return true
200
- @tc.stub!(:build_and_store_new_config_file).and_return true
195
+ @tc.stub!(:copy_ssh_app).and_return true
196
+ @tc.stub!(:prepare_reconfiguration).and_return "full"
197
+ PoolParty::Provisioner.stub!(:configure_master).and_return true
198
+ @tc.stub!(:wait).and_return true
201
199
  end
202
- it "should receive can_start_a_new_instance?" do
203
- @tc.should_receive(:can_start_a_new_instance?).once
204
- end
205
- it "should see if we should expand the cloud" do
206
- @tc.should_receive(:should_expand_cloud?).once.and_return false
207
- end
208
- it "should call request_launch_new_instances if we should_expand_cloud?" do
209
- @tc.should_receive(:should_expand_cloud?).once.and_return true
210
- @tc.should_receive(:request_launch_new_instances).once.and_return [{:ip => "127.0.0.5", :name => "node2"}]
211
- end
212
- it "should call a new slave provisioner" do
213
- @tc.stub!(:should_expand_cloud?).once.and_return true
214
- @tc.stub!(:request_launch_new_instances).once.and_return [{:ip => "127.0.0.5", :name => "node2"}]
215
- PoolParty::Provisioner.should_receive(:provision_slave).and_return true
216
- end
217
- after(:each) do
218
- @tc.expand_cloud_if_necessary
219
- end
220
- end
221
- describe "contract_cloud_if_necessary" do
222
- before(:each) do
223
- @tc.stub!(:request_termination_of_non_master_instance).and_return true
224
- @tc.stub!(:can_shutdown_an_instance?).and_return true
225
- end
226
- it "should receive can_shutdown_an_instance?" do
227
- @tc.should_receive(:can_shutdown_an_instance?).once
228
- end
229
- it "should see if we should contract the cloud" do
230
- @tc.should_receive(:should_contract_cloud?).once.and_return false
231
- end
232
- it "should call request_termination_of_non_master_instance if we should_contract_cloud?" do
233
- @tc.should_receive(:should_contract_cloud?).once.and_return true
234
- @tc.should_receive(:request_termination_of_non_master_instance).once.and_return true
200
+ describe "expand_cloud_if_necessary" do
201
+ before(:each) do
202
+ stub_list_from_remote_for(@tc)
203
+ @tc.stub!(:request_launch_new_instances).and_return true
204
+ @tc.stub!(:can_start_a_new_instance).and_return true
205
+ @tc.stub!(:list_of_pending_instances).and_return []
206
+ @tc.stub!(:prepare_to_configuration).and_return true
207
+ @tc.stub!(:build_and_store_new_config_file).and_return true
208
+ PoolParty::Provisioner.stub!(:provision_slaves).and_return true
209
+ end
210
+ it "should receive can_start_a_new_instance?" do
211
+ @tc.should_receive(:can_start_a_new_instance?).once
212
+ end
213
+ it "should see if we should expand the cloud" do
214
+ @tc.should_receive(:should_expand_cloud?).once.and_return false
215
+ end
216
+ it "should call request_launch_new_instances if we should_expand_cloud?" do
217
+ @tc.should_receive(:should_expand_cloud?).once.and_return true
218
+ @tc.should_receive(:request_launch_new_instances).once.and_return [{:ip => "127.0.0.5", :name => "node2"}]
219
+ end
220
+ it "should call a new slave provisioner" do
221
+ @tc.stub!(:should_expand_cloud?).once.and_return true
222
+ PoolParty::Provisioner.should_receive(:provision_slaves).and_return true
223
+ end
224
+ after(:each) do
225
+ @tc.expand_cloud_if_necessary
226
+ end
235
227
  end
236
- after(:each) do
237
- @tc.contract_cloud_if_necessary
228
+ describe "contract_cloud_if_necessary" do
229
+ before(:each) do
230
+ @tc.stub!(:request_termination_of_non_master_instance).and_return true
231
+ @tc.stub!(:can_shutdown_an_instance?).and_return true
232
+ @tc.stub!(:wait).and_return true
233
+ end
234
+ it "should receive can_shutdown_an_instance?" do
235
+ @tc.should_receive(:can_shutdown_an_instance?).once
236
+ end
237
+ it "should see if we should contract the cloud" do
238
+ @tc.should_receive(:should_contract_cloud?).once.and_return false
239
+ end
240
+ it "should call request_termination_of_non_master_instance if we should_contract_cloud?" do
241
+ @tc.should_receive(:should_contract_cloud?).once.and_return true
242
+ @tc.should_receive(:request_termination_of_non_master_instance).once.and_return true
243
+ end
244
+ after(:each) do
245
+ @tc.contract_cloud_if_necessary
246
+ end
238
247
  end
239
248
  end
240
249
  describe "rsync_storage_files_to" do
@@ -36,7 +36,6 @@ describe "Gem" do
36
36
  @gem.version.should == "2.2.0"
37
37
  end
38
38
  it "should not take the version of the parent on the child" do
39
- puts @gem.to_string
40
39
  @gem2.version.should == nil
41
40
  end
42
41
  end
data/website/index.html CHANGED
@@ -34,7 +34,7 @@
34
34
  <h1>PoolParty</h1>
35
35
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/poolparty"; return false'>
36
36
  <p>Get Version</p>
37
- <a href="http://rubyforge.org/projects/poolparty" class="numbers">0.2.15</a>
37
+ <a href="http://rubyforge.org/projects/poolparty" class="numbers">0.2.16</a>
38
38
  </div>
39
39
  <h1>&#8216;Easy cloud computing&#8217;</h1>
40
40
  <h2>What</h2>