eb_deployer 0.6.0.beta5 → 0.6.0.beta6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eec805f0a10e0171cbc6771d7a2b932da62a37de
4
- data.tar.gz: f4ce0d5924e2d8aca50c9bd7c617a00cf8c13f99
3
+ metadata.gz: efa2db8d5f05ab918bb9466b260d9f617d36ee7b
4
+ data.tar.gz: dd4301dc2e402e64609d0a898f153bd18b1703a6
5
5
  SHA512:
6
- metadata.gz: f926a2dac8d4380e77e5d8ffc9729de4a0d263449511b387dbd64f989e37b66040470636ff1ea183e17b7764737cf3e308a5c8a8dd028cdd1cd3d10001d63dcc
7
- data.tar.gz: 931f89470fd5137866772e651c1e67d530974d3d17f01cb238a8a6b2c82857bcdc4b4ffc7a480823b59fbc02e8a46d5cda9862720b717c029f8db6a287dd0864
6
+ metadata.gz: 9dfbdc52c6c5b943bad1470d61ac2547917f439579606b58285db9858b7879793ed855d47d830fb4ef8dd5058b0216115867f3487f5549d5825d62427ecceeb2
7
+ data.tar.gz: 7fe2d1e43f6bef25e2ebc4e10ea1fe65d144df7f25fbedef53997a8c70670446efda243f181390a0c1d4ec5622af5f81f599240016859dd6b86e3b0991b29a8c
data/CHANGELOG.md CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  * Use aws-sdk 2.0
5
5
  * Ruby 2.2 support
6
+ * Robust error handling on CloudFormation resource stack provisioning
6
7
 
7
8
  0.5.1
8
9
  =====
data/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # EbDeployer [![Build Status](https://snap-ci.com/ThoughtWorksStudios/eb_deployer/branch/master/build_image)](https://snap-ci.com/ThoughtWorksStudios/eb_deployer/branch/master) [![Build Status](https://travis-ci.org/ThoughtWorksStudios/eb_deployer.png?branch=master)](https://travis-ci.org/ThoughtWorksStudios/eb_deployer)
2
2
 
3
- [Built with :yellow_heart: and :coffee: in San Francisco](http://getmingle.io)
3
+ [Built with :yellow_heart: and :coffee: in San Francisco](http://www.thoughtworks.com/mingle/team/)
4
4
 
5
5
  Low friction deployments should be a breeze. Elastic Beanstalk provides a great foundation for performing Blue-Green deployments, and EbDeployer add a missing link to automate the whole flow out of box.
6
6
 
7
7
  EbDeployer thus allows you to do continuous delivery on AWS.
8
8
 
9
- [Introduction to EbDeployer](http://getmingle.io/scaling/2014/06/13/introduction-to-eb-deployer.html)
9
+ [Deploy Service by EbDeployer](http://www.thoughtworks.com/mingle/infrastructure/2015/06/01/deploy-service-by-ebdeployer.html)
10
10
 
11
11
  ## Installation
12
12
 
@@ -93,10 +93,20 @@ Take a look at code if you can not wait for the documentation.
93
93
 
94
94
  ## More
95
95
 
96
+ [Automated zero downtime deployment to AWS Elastic Beanstalk for Rails with EbDeployer](http://helabs.com/blog/2015/05/19/automated-zero-downtime-deployment-to-aws-elastic-beanstalk-for-rails-with-eb-deployer/?utm_content=buffer12098&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer)
97
+
98
+ [Deploy Service by EbDeployer](http://www.thoughtworks.com/mingle/infrastructure/2015/06/01/deploy-service-by-ebdeployer.html)
99
+
96
100
  [Rails 3/4 Support](https://github.com/ThoughtWorksStudios/eb_deployer/wiki/Rails-3-Support)
97
101
 
98
102
  [EbDeployer environment](https://github.com/ThoughtWorksStudios/eb_deployer/wiki/EbDeployer-environment)
99
103
 
104
+ [Introduction to EbDeployer](http://getmingle.io/scaling/2014/06/13/introduction-to-eb-deployer.html)
105
+
106
+ AWS re:Invent 2013: [slideshare](http://www.slideshare.net/AmazonWebServices/aws-elastic-beanstalk-under-the-hood-dmg301-aws-reinvent-2013-28428616) and [video (starting at 27:46)](http://www.youtube.com/watch?v=U06-QLd4FL4)
107
+
108
+ [Papertrail Solution for Rails Applications on ElasticBeanstalk
109
+ ](http://www.thoughtworks.com/mingle/infrastructure/2015/06/10/simple-solution-for-papertrail-on-elasticbeanstalk.html)
100
110
  ## Contributing
101
111
 
102
112
  1. Fork it
@@ -104,3 +114,7 @@ Take a look at code if you can not wait for the documentation.
104
114
  3. Commit your changes (`git commit -am 'Added some feature'`)
105
115
  4. Push to the branch (`git push origin my-new-feature`)
106
116
  5. Create new Pull Request
117
+
118
+
119
+ [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/ThoughtWorksStudios/eb_deployer/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
120
+
@@ -20,21 +20,9 @@ module EbDeployer
20
20
  end
21
21
 
22
22
  def update_stack(name, template, opts)
23
- begin
24
- @client.update_stack(opts.merge(:stack_name => name,
25
- :template_body => template,
26
- :parameters => convert_parameters(opts[:parameters])))
27
- rescue Aws::CloudFormation::Errors::ValidationError => e
28
- if e.message =~ /No updates are to be performed/
29
- log(e.message)
30
- else
31
- raise
32
- end
33
- end
34
- end
35
-
36
- def stack_status(name)
37
- describe_stack(name)[:stack_status].downcase.to_sym
23
+ @client.update_stack(opts.merge(:stack_name => name,
24
+ :template_body => template,
25
+ :parameters => convert_parameters(opts[:parameters])))
38
26
  end
39
27
 
40
28
  def query_output(name, key)
@@ -42,6 +30,11 @@ module EbDeployer
42
30
  output && output[:output_value]
43
31
  end
44
32
 
33
+ def fetch_events(name, options={})
34
+ response = @client.describe_stack_events(options.merge(:stack_name => name))
35
+ return response.stack_events, response.next_token
36
+ end
37
+
45
38
  private
46
39
 
47
40
  def describe_stack(name)
@@ -0,0 +1,26 @@
1
+ module EbDeployer
2
+ class CfEventSource
3
+ def initialize(stack_name, cf_driver)
4
+ @stack_name = stack_name
5
+ @cf_driver = cf_driver
6
+ end
7
+
8
+ def get_anchor
9
+ events, _ = @cf_driver.fetch_events(@stack_name)
10
+ events.first
11
+ end
12
+
13
+ def fetch_events(from_anchor, &block)
14
+ events, next_token = @cf_driver.fetch_events(@stack_name)
15
+ should_continue = yield(events)
16
+ fetch_next(next_token, &block) if next_token && should_continue
17
+ end
18
+
19
+ private
20
+ def fetch_next(next_token, &block)
21
+ events, next_token = @cf_driver.fetch_events(@stack_name, :next_token => next_token)
22
+ should_continue = yield(events)
23
+ fetch_next(next_token, &block) if next_token && should_continue
24
+ end
25
+ end
26
+ end
@@ -3,12 +3,13 @@ module EbDeployer
3
3
  end
4
4
 
5
5
  class CloudFormationProvisioner
6
- SUCCESS_STATS = [:create_complete, :update_complete, :update_rollback_complete]
7
- FAILED_STATS = [:create_failed, :update_failed]
6
+ SUCCESS_STATS = ["CREATE_COMPLETE", "UPDATE_COMPLETE"]
7
+ FAILED_STATS = ["CREATE_FAILED", "UPDATE_FAILED"]
8
8
 
9
9
  def initialize(stack_name, cf_driver)
10
10
  @stack_name = stack_name
11
11
  @cf_driver = cf_driver
12
+ @poller = EventPoller.new(CfEventSource.new(@stack_name, @cf_driver))
12
13
  end
13
14
 
14
15
  def provision(resources)
@@ -16,8 +17,24 @@ module EbDeployer
16
17
  template = File.read(resources[:template])
17
18
  capabilities = resources[:capabilities] || []
18
19
  params = resources[:inputs] || resources[:parameters] || {}
19
- stack_exists? ? update_stack(template, params, capabilities) : create_stack(template, params, capabilities)
20
- wait_for_stack_op_terminate
20
+ anchor = nil
21
+ begin
22
+ if stack_exists?
23
+ anchor = @poller.get_anchor
24
+ update_stack(template, params, capabilities)
25
+ else
26
+ create_stack(template, params, capabilities)
27
+ end
28
+ rescue Aws::CloudFormation::Errors::ValidationError => e
29
+ if e.message =~ /No updates are to be performed/
30
+ log(e.message)
31
+ return
32
+ else
33
+ raise
34
+ end
35
+ end
36
+ wait_for_stack_op_terminate(anchor)
37
+ log("Resource stack provisioned successfully")
21
38
  end
22
39
 
23
40
  def transform_outputs(resources)
@@ -65,10 +82,6 @@ module EbDeployer
65
82
  :parameters => params)
66
83
  end
67
84
 
68
- def stack_status
69
- @cf_driver.stack_status(@stack_name)
70
- end
71
-
72
85
  def transform_output_to_settings(transforms)
73
86
  (transforms || []).inject([]) do |settings, pair|
74
87
  key, transform = pair
@@ -77,16 +90,22 @@ module EbDeployer
77
90
  end.flatten
78
91
  end
79
92
 
80
- def wait_for_stack_op_terminate
81
- stats = stack_status
82
- while !SUCCESS_STATS.include?(stats)
83
- sleep 15
84
- stats = stack_status
85
- raise "Resource stack update failed!" if FAILED_STATS.include?(stats)
86
- log "current status: #{stack_status}"
93
+ def wait_for_stack_op_terminate(anchor)
94
+ @poller.poll(anchor) do |event|
95
+ log_event(event)
96
+ if FAILED_STATS.include?(event.resource_status)
97
+ raise "Resource stack update failed!"
98
+ end
99
+
100
+ break if event.logical_resource_id == @stack_name && SUCCESS_STATS.include?(event.resource_status)
87
101
  end
88
102
  end
89
103
 
104
+ def log_event(event)
105
+ puts "[#{event.timestamp}][cloud_formation_provisioner] #{event.resource_type}(#{event.logical_resource_id}) #{event.resource_status} \"#{event.resource_status_reason}\""
106
+ end
107
+
108
+
90
109
  def log(msg)
91
110
  puts "[#{Time.now.utc}][cloud_formation_provisioner] #{msg}"
92
111
  end
@@ -1,4 +1,4 @@
1
- # applicaiton name
1
+ # application name
2
2
  application: <%= app_name %>
3
3
 
4
4
  # common settings for all environments
@@ -1,8 +1,8 @@
1
1
  module EbDeployer
2
2
  module DeploymentStrategy
3
3
  class BlueGreen
4
- def initialize(env)
5
- @env = env
4
+ def initialize(component)
5
+ @component = component
6
6
  end
7
7
 
8
8
  def test_compatibility(env_create_options)
@@ -14,7 +14,7 @@ module EbDeployer
14
14
 
15
15
  def deploy(version_label, env_settings, inactive_settings=[])
16
16
  if !ebenvs.any?(&method(:active_ebenv?))
17
- ebenv('a', @env.cname_prefix).
17
+ ebenv('a', @component.cname_prefix).
18
18
  deploy(version_label, env_settings)
19
19
  return
20
20
  end
@@ -32,7 +32,7 @@ module EbDeployer
32
32
 
33
33
  private
34
34
  def active_ebenv?(ebenv)
35
- ebenv.cname_prefix == @env.cname_prefix
35
+ ebenv.cname_prefix == @component.cname_prefix
36
36
  end
37
37
 
38
38
  def ebenvs
@@ -40,11 +40,11 @@ module EbDeployer
40
40
  end
41
41
 
42
42
  def ebenv(suffix, cname_prefix=nil)
43
- @env.new_eb_env(suffix, cname_prefix || inactive_cname_prefix)
43
+ @component.new_eb_env(suffix, cname_prefix || inactive_cname_prefix)
44
44
  end
45
45
 
46
46
  def inactive_cname_prefix
47
- "#{@env.cname_prefix}-inactive"
47
+ "#{@component.cname_prefix}-inactive"
48
48
  end
49
49
  end
50
50
  end
@@ -1,8 +1,8 @@
1
1
  module EbDeployer
2
2
  module DeploymentStrategy
3
3
  class BlueOnly
4
- def initialize(env)
5
- @env = env
4
+ def initialize(component)
5
+ @component = component
6
6
  end
7
7
 
8
8
  def test_compatibility(env_create_options)
@@ -14,7 +14,7 @@ module EbDeployer
14
14
 
15
15
  def deploy(version_label, env_settings, inactive_settings=[])
16
16
  if !ebenvs.any?(&method(:active_ebenv?))
17
- ebenv('a', @env.cname_prefix).
17
+ ebenv('a', @component.cname_prefix).
18
18
  deploy(version_label, env_settings)
19
19
  return
20
20
  end
@@ -27,7 +27,7 @@ module EbDeployer
27
27
 
28
28
  private
29
29
  def active_ebenv?(ebenv)
30
- ebenv.cname_prefix == @env.cname_prefix
30
+ ebenv.cname_prefix == @component.cname_prefix
31
31
  end
32
32
 
33
33
  def ebenvs
@@ -35,11 +35,11 @@ module EbDeployer
35
35
  end
36
36
 
37
37
  def ebenv(suffix, cname_prefix=nil)
38
- @env.new_eb_env(suffix, cname_prefix || inactive_cname_prefix)
38
+ @component.new_eb_env(suffix, cname_prefix || inactive_cname_prefix)
39
39
  end
40
40
 
41
41
  def inactive_cname_prefix
42
- "#{@env.cname_prefix}-inactive"
42
+ "#{@component.cname_prefix}-inactive"
43
43
  end
44
44
  end
45
45
  end
@@ -1,15 +1,15 @@
1
1
  module EbDeployer
2
2
  module DeploymentStrategy
3
3
  class InplaceUpdate
4
- def initialize(env)
5
- @env = env
4
+ def initialize(component)
5
+ @component = component
6
6
  end
7
7
 
8
8
  def test_compatibility(env_create_opts)
9
9
  end
10
10
 
11
11
  def deploy(version_label, env_settings, inactive_settings)
12
- @env.new_eb_env.deploy(version_label, env_settings)
12
+ @component.new_eb_env.deploy(version_label, env_settings)
13
13
  end
14
14
  end
15
15
  end
@@ -4,14 +4,14 @@ require 'eb_deployer/deployment_strategy/blue_only'
4
4
 
5
5
  module EbDeployer
6
6
  module DeploymentStrategy
7
- def self.create(env, strategy_name)
7
+ def self.create(component, strategy_name)
8
8
  case strategy_name.to_s
9
9
  when 'inplace_update', 'inplace-update'
10
- InplaceUpdate.new(env)
10
+ InplaceUpdate.new(component)
11
11
  when 'blue_green', 'blue-green'
12
- BlueGreen.new(env)
12
+ BlueGreen.new(component)
13
13
  when 'blue_only', 'blue-only'
14
- BlueOnly.new(env)
14
+ BlueOnly.new(component)
15
15
  else
16
16
  raise 'strategy_name: ' + strategy_name.to_s + ' not supported'
17
17
  end
@@ -155,7 +155,7 @@ module EbDeployer
155
155
  end
156
156
 
157
157
  def event_poller
158
- @event_poller || EventPoller.new(@app, @name, @bs)
158
+ @event_poller || EventPoller.new(EbEventSource.new(@app, @name, @bs))
159
159
  end
160
160
 
161
161
  def default_create_options
@@ -0,0 +1,35 @@
1
+ module EbDeployer
2
+ class EbEventSource
3
+ def initialize(app, env, eb_driver)
4
+ @app, @env, @eb_driver = app, env, eb_driver
5
+ end
6
+
7
+ def get_anchor
8
+ events, _ = fetch_events_from_eb(:max_records => 1)
9
+ events.first
10
+ end
11
+
12
+ def fetch_events(from_anchor, &block)
13
+ options = {}
14
+ if from_anchor && from_anchor[:event_date]
15
+ options[:start_time] = from_anchor[:event_date].iso8601
16
+ end
17
+ events, next_token = fetch_events_from_eb(options)
18
+ should_continue = yield(events)
19
+ fetch_next(next_token, &block) if next_token && should_continue
20
+ end
21
+
22
+ private
23
+
24
+ def fetch_next(next_token, &block)
25
+ events, next_token = fetch_events_from_eb(:next_token => next_token)
26
+ should_continue = yield(events)
27
+ fetch_next(next_token, &block) if next_token && should_continue
28
+ end
29
+
30
+ def fetch_events_from_eb(options)
31
+ @eb_driver.fetch_events(@app, @env, options)
32
+ end
33
+
34
+ end
35
+ end
@@ -1,21 +1,21 @@
1
1
  module EbDeployer
2
2
  class EventPoller
3
3
  include Utils
4
+ POLL_INTERVAL = 15
4
5
 
5
- def initialize(app, env, eb_driver)
6
- @app, @env, @eb_driver = app, env, eb_driver
6
+ def initialize(event_source)
7
+ @event_source = event_source
7
8
  end
8
9
 
9
10
  def get_anchor
10
- events, _ = fetch_events_from_eb(:max_records => 1)
11
- events.first
11
+ @event_source.get_anchor
12
12
  end
13
13
 
14
14
  def poll(from_anchor, &block)
15
15
  handled = Set.new
16
16
  loop do
17
- fetch_events(from_anchor) do |events|
18
- # events from api is latest first order
17
+ @event_source.fetch_events(from_anchor) do |events|
18
+ # events from event source is latest first order
19
19
  to_be_handled = []
20
20
  reached_anchor = false
21
21
 
@@ -36,7 +36,7 @@ module EbDeployer
36
36
 
37
37
  !reached_anchor
38
38
  end
39
- sleep 15
39
+ sleep POLL_INTERVAL
40
40
  end
41
41
  end
42
42
 
@@ -47,25 +47,5 @@ module EbDeployer
47
47
  event = event.to_h if event.respond_to?(:to_h)
48
48
  JSON.dump(event)
49
49
  end
50
-
51
- def fetch_events(from_anchor, &block)
52
- options = {}
53
- if from_anchor && from_anchor[:event_date]
54
- options[:start_time] = from_anchor[:event_date].iso8601
55
- end
56
- events, next_token = fetch_events_from_eb(options)
57
- should_continue = yield(events)
58
- fetch_next(next_token, &block) if next_token && should_continue
59
- end
60
-
61
- def fetch_next(next_token, &block)
62
- events, next_token = fetch_events_from_eb(:next_token => next_token)
63
- should_continue = yield(events)
64
- fetch_next(next_token, &block) if next_token && should_continue
65
- end
66
-
67
- def fetch_events_from_eb(options)
68
- @eb_driver.fetch_events(@app, @env, options)
69
- end
70
50
  end
71
51
  end
@@ -1,3 +1,3 @@
1
1
  module EbDeployer
2
- VERSION = "0.6.0.beta5"
2
+ VERSION = "0.6.0.beta6"
3
3
  end
data/lib/eb_deployer.rb CHANGED
@@ -20,6 +20,8 @@ require 'eb_deployer/eb_environment'
20
20
  require 'eb_deployer/environment'
21
21
  require 'eb_deployer/default_component'
22
22
  require 'eb_deployer/component'
23
+ require 'eb_deployer/eb_event_source'
24
+ require 'eb_deployer/cf_event_source'
23
25
  require 'eb_deployer/event_poller'
24
26
  require 'eb_deployer/package'
25
27
  require 'eb_deployer/config_loader'
@@ -40,7 +42,9 @@ module EbDeployer
40
42
  #
41
43
  def self.query_resource_output(key, opts)
42
44
  if region = opts[:region]
43
- AWS.config(:region => region)
45
+ Aws.config.update({
46
+ region: region
47
+ })
44
48
  end
45
49
  app = opts[:application]
46
50
  env_name = opts[:environment]
@@ -215,7 +219,7 @@ module EbDeployer
215
219
 
216
220
  def self.destroy(opts)
217
221
  if region = opts[:region]
218
- AWS.config(:region => region)
222
+ Aws.config.update(:region => region)
219
223
  end
220
224
 
221
225
  app = opts[:application]
@@ -295,9 +299,10 @@ module EbDeployer
295
299
 
296
300
  opts.on("--debug", "Output AWS debug log") do |d|
297
301
  require 'logger'
302
+ require 'aws-sdk'
298
303
  logger = Logger.new($stdout)
299
304
  logger.level = Logger::DEBUG
300
- AWS.config(:logger => logger)
305
+ Aws.config[:logger] = logger
301
306
  end
302
307
 
303
308
  opts.on("-h", "--help", "help") do
@@ -1,4 +1,4 @@
1
- # applicaiton name
1
+ # application name
2
2
  application: <%= app_name %>
3
3
 
4
4
  # common settings for all environments
@@ -271,6 +271,8 @@ end
271
271
  class CFStub
272
272
  def initialize
273
273
  @stacks = {}
274
+ @events = {}
275
+ @event_fetch_counter = 0;
274
276
  end
275
277
 
276
278
  def create_stack(name, template, opts)
@@ -297,4 +299,36 @@ class CFStub
297
299
  def stack_config(name)
298
300
  @stacks[name][:opts]
299
301
  end
302
+
303
+ def set_events(name, *messages)
304
+ events_seq = []
305
+ messages.each do |messages_for_call_seq|
306
+ if old_events = events_seq.last
307
+ events_seq << generate_event_from_messages(name, messages_for_call_seq) + old_events
308
+ else
309
+ events_seq << generate_event_from_messages(name, messages_for_call_seq)
310
+ end
311
+ end
312
+ @events[name] = events_seq
313
+ end
314
+
315
+ def fetch_events(name, opts={})
316
+ @event_fetch_counter += 1
317
+ if es = @events[name]
318
+ return es[@event_fetch_counter - 1], nil
319
+ else
320
+ return generate_event_from_messages(name, ["UPDATE_COMPLETE"]), nil
321
+ end
322
+ end
323
+
324
+ private
325
+
326
+ def generate_event_from_messages(stack, messages)
327
+ messages.map do |message|
328
+ event = OpenStruct.new(timestamp: Time.now,
329
+ resource_type: 'AWS::CloudFormation::Stack',
330
+ logical_resource_id: stack,
331
+ resource_status: message)
332
+ end.reverse
333
+ end
300
334
  end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ class CfEventPollerTest < Test::Unit::TestCase
4
+ def setup
5
+ @cf = CFStub.new
6
+ @poller = EbDeployer::EventPoller.new(EbDeployer::CfEventSource.new("mystack", @cf))
7
+ end
8
+
9
+ def test_run_handle_block_through_all_events_when_there_is_no_from_anchor
10
+ messages_handled = []
11
+ @cf.set_events('mystack', ['a', 'b', nil])
12
+ @poller.poll(nil) do |event|
13
+ break if event.resource_status.nil?
14
+ messages_handled << event.resource_status
15
+ end
16
+
17
+ assert_equal ['a', 'b'], messages_handled
18
+ end
19
+
20
+
21
+ def test_can_poll_all_events_after_an_anchor
22
+ @cf.set_events('mystack', ['a', 'b'], ['c', 'd', nil])
23
+ anchor = @poller.get_anchor
24
+ messages_handled = []
25
+ @poller.poll(anchor) do |event|
26
+ break if event.resource_status.nil?
27
+ messages_handled << event.resource_status
28
+ end
29
+
30
+ assert_equal ['c', 'd'], messages_handled
31
+ end
32
+ end
@@ -1,9 +1,9 @@
1
1
  require 'test_helper'
2
2
 
3
- class EventPollerTest < Test::Unit::TestCase
3
+ class EbEventPollerTest < Test::Unit::TestCase
4
4
  def setup
5
5
  @eb = EBStub.new
6
- @poller = EbDeployer::EventPoller.new("myapp", "test", @eb)
6
+ @poller = EbDeployer::EventPoller.new(EbDeployer::EbEventSource.new("myapp", "test", @eb))
7
7
  end
8
8
 
9
9
  def test_run_handle_block_through_all_events_when_there_is_no_from_anchor
data/test/test_helper.rb CHANGED
@@ -13,6 +13,7 @@ ensure
13
13
  end
14
14
 
15
15
  silence_warnings { EbDeployer::Utils::BACKOFF_INITIAL_SLEEP = 0 }
16
+ silence_warnings { EbDeployer::EventPoller::POLL_INTERVAL = 0 }
16
17
 
17
18
  class ErrorRaisingWrapper < SimpleDelegator
18
19
  def initialize(stub)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eb_deployer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0.beta5
4
+ version: 0.6.0.beta6
5
5
  platform: ruby
6
6
  authors:
7
7
  - wpc
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-27 00:00:00.000000000 Z
12
+ date: 2015-07-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk
@@ -59,6 +59,7 @@ files:
59
59
  - lib/eb_deployer/aws_driver/beanstalk.rb
60
60
  - lib/eb_deployer/aws_driver/cloud_formation_driver.rb
61
61
  - lib/eb_deployer/aws_driver/s3_driver.rb
62
+ - lib/eb_deployer/cf_event_source.rb
62
63
  - lib/eb_deployer/cloud_formation_provisioner.rb
63
64
  - lib/eb_deployer/component.rb
64
65
  - lib/eb_deployer/config_loader.rb
@@ -70,6 +71,7 @@ files:
70
71
  - lib/eb_deployer/deployment_strategy/blue_only.rb
71
72
  - lib/eb_deployer/deployment_strategy/inplace_update.rb
72
73
  - lib/eb_deployer/eb_environment.rb
74
+ - lib/eb_deployer/eb_event_source.rb
73
75
  - lib/eb_deployer/environment.rb
74
76
  - lib/eb_deployer/event_poller.rb
75
77
  - lib/eb_deployer/package.rb
@@ -88,11 +90,12 @@ files:
88
90
  - test/aws_driver_stubs.rb
89
91
  - test/blue_green_deploy_test.rb
90
92
  - test/blue_only_deploy_test.rb
93
+ - test/cf_event_poller_test.rb
91
94
  - test/cloud_formation_provisioner_test.rb
92
95
  - test/config_loader_test.rb
93
96
  - test/deploy_test.rb
94
97
  - test/eb_environment_test.rb
95
- - test/event_poller_test.rb
98
+ - test/eb_event_poller_test.rb
96
99
  - test/inplace_update_deploy_test.rb
97
100
  - test/multi_components_deploy_test.rb
98
101
  - test/rails_generators_test.rb
@@ -131,11 +134,12 @@ test_files:
131
134
  - test/aws_driver_stubs.rb
132
135
  - test/blue_green_deploy_test.rb
133
136
  - test/blue_only_deploy_test.rb
137
+ - test/cf_event_poller_test.rb
134
138
  - test/cloud_formation_provisioner_test.rb
135
139
  - test/config_loader_test.rb
136
140
  - test/deploy_test.rb
137
141
  - test/eb_environment_test.rb
138
- - test/event_poller_test.rb
142
+ - test/eb_event_poller_test.rb
139
143
  - test/inplace_update_deploy_test.rb
140
144
  - test/multi_components_deploy_test.rb
141
145
  - test/rails_generators_test.rb