engineyard-serverside 1.3.2 → 1.3.3

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.
@@ -158,6 +158,41 @@ module EY
158
158
  EY::Deploy.new(config).cached_deploy
159
159
  end
160
160
 
161
+ method_option :app, :type => :string,
162
+ :required => true,
163
+ :desc => "Application to deploy",
164
+ :aliases => ["-a"]
165
+
166
+ method_option :stack, :type => :string,
167
+ :desc => "Web stack (so we can restart it correctly)"
168
+
169
+ method_option :instances, :type => :array,
170
+ :desc => "Hostnames of instances to deploy to, e.g. --instances localhost app1 app2"
171
+
172
+ method_option :instance_roles, :type => :hash,
173
+ :default => {},
174
+ :desc => "Roles of instances, keyed on hostname, comma-separated. e.g. instance1:app_master,etc instance2:db,memcached ..."
175
+
176
+ method_option :instance_names, :type => :hash,
177
+ :default => {},
178
+ :desc => "Instance names, keyed on hostname. e.g. instance1:name1 instance2:name2"
179
+
180
+ method_option :verbose, :type => :boolean,
181
+ :default => false,
182
+ :desc => "Verbose output",
183
+ :aliases => ["-v"]
184
+ desc "restart", "Restart app servers, conditionally enabling maintenance page"
185
+ def restart
186
+ EY::LoggedOutput.verbose = options[:verbose]
187
+ EY::LoggedOutput.logfile = File.join(ENV['HOME'], "#{options[:app]}-restart.log")
188
+
189
+ config = EY::Deploy::Configuration.new(options)
190
+ EY::Server.load_all_from_array(assemble_instance_hashes(config))
191
+
192
+ invoke :propagate
193
+
194
+ EY::Deploy.new(config).restart_with_maintenance_page
195
+ end
161
196
 
162
197
  desc "install_bundler [VERSION]", "Make sure VERSION of bundler is installed (in system ruby)"
163
198
  def install_bundler(version)
@@ -44,6 +44,13 @@ module EY
44
44
  raise
45
45
  end
46
46
 
47
+ def restart_with_maintenance_page
48
+ require_custom_tasks
49
+ conditionally_enable_maintenance_page
50
+ restart
51
+ disable_maintenance_page
52
+ end
53
+
47
54
  def enable_maintenance_page
48
55
  maintenance_page_candidates = [
49
56
  "public/maintenance.html.custom",
@@ -1,3 +1,3 @@
1
1
  module EY
2
- VERSION = '1.3.2'
2
+ VERSION = '1.3.3'
3
3
  end
@@ -0,0 +1,28 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "EY::Deploy#restart_with_maintenance_page" do
4
+
5
+ class TestRestartWithMaintenancePage < EY::Deploy
6
+ attr_reader :call_order
7
+ def initialize(*a)
8
+ super
9
+ @call_order = []
10
+ end
11
+
12
+ def require_custom_tasks() @call_order << 'require_custom_tasks' end
13
+ def restart() @call_order << 'restart' end
14
+ def conditionally_enable_maintenance_page() @call_order << 'conditionally_enable_maintenance_page' end
15
+ def disable_maintenance_page() @call_order << 'disable_maintenance_page' end
16
+ end
17
+
18
+ it "puts up the maintenance page if necessary, restarts, and takes down the maintenance page" do
19
+ deployer = TestRestartWithMaintenancePage.new(EY::Deploy::Configuration.new)
20
+ deployer.restart_with_maintenance_page
21
+ deployer.call_order.should == %w(
22
+ require_custom_tasks
23
+ conditionally_enable_maintenance_page
24
+ restart
25
+ disable_maintenance_page
26
+ )
27
+ end
28
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engineyard-serverside
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 3
9
- - 2
10
- version: 1.3.2
9
+ - 3
10
+ version: 1.3.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - EY Cloud Team
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-15 00:00:00 -07:00
18
+ date: 2010-09-16 00:00:00 -07:00
19
19
  default_executable: engineyard-serverside
20
20
  dependencies: []
21
21
 
@@ -235,7 +235,6 @@ files:
235
235
  - LICENSE
236
236
  - spec/custom_deploy_spec.rb
237
237
  - spec/deploy_hook_spec.rb
238
- - spec/fixtures/gitrepo/bar
239
238
  - spec/fixtures/gitrepo/foo
240
239
  - spec/fixtures/gitrepo.tar.gz
241
240
  - spec/fixtures/invalid_hook.rb
@@ -243,6 +242,7 @@ files:
243
242
  - spec/git_strategy_spec.rb
244
243
  - spec/lockfile_parser_spec.rb
245
244
  - spec/real_deploy_spec.rb
245
+ - spec/restart_spec.rb
246
246
  - spec/server_spec.rb
247
247
  - spec/spec_helper.rb
248
248
  - spec/support/lockfiles/0.9-no-bundler
@@ -287,7 +287,6 @@ summary: A gem that deploys ruby applications on EY Cloud instances
287
287
  test_files:
288
288
  - spec/custom_deploy_spec.rb
289
289
  - spec/deploy_hook_spec.rb
290
- - spec/fixtures/gitrepo/bar
291
290
  - spec/fixtures/gitrepo/foo
292
291
  - spec/fixtures/gitrepo.tar.gz
293
292
  - spec/fixtures/invalid_hook.rb
@@ -295,6 +294,7 @@ test_files:
295
294
  - spec/git_strategy_spec.rb
296
295
  - spec/lockfile_parser_spec.rb
297
296
  - spec/real_deploy_spec.rb
297
+ - spec/restart_spec.rb
298
298
  - spec/server_spec.rb
299
299
  - spec/spec_helper.rb
300
300
  - spec/support/lockfiles/0.9-no-bundler
File without changes