vaporware 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vaporware.rb +46 -6
  3. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8e81d9a7d38cde5c3cfab765747ee7d6a9c265a3
4
- data.tar.gz: 7811e2f2709e43c05f36688f734fc80f1295b076
3
+ metadata.gz: 721ea262349f65a49927d56873311fe2795d59de
4
+ data.tar.gz: 9347d188962d08be1d92985b894ce120b157636b
5
5
  SHA512:
6
- metadata.gz: 8820352bf7edb7dad6eec5c57b2032481243a29d242b0d96cf2f08503323b765b929612925fe31806869f69f7e299f70cca1bae7e7fe8a65d158941ccd1050ff
7
- data.tar.gz: dd66b66cdc3e116feec36fc3e685c9a876d4c8f6c3b320e5411056ff7fcd53230dc84f345f3555a4c4ce872ee1d890f6b9e3454c0d524c327322a8b66e6562bc
6
+ metadata.gz: 5099980aee34ea053350209c780c731f52dc8560accd7e5f206679eccb5250f508c8cf0448f8d10c71b32c2c2e6d57cada33dea6b584c6031e2f197e4ed30b5e
7
+ data.tar.gz: cc55c357c81aa2fae17a76f09c52836327eee086be6211e81f33ea7d2f71a99994526cff766fd20d0424712e743a2bff0ea7d4d4867a8cd3bc0c006fa9170944
data/lib/vaporware.rb CHANGED
@@ -23,18 +23,24 @@ class Vaporware
23
23
  end
24
24
 
25
25
  def create_stack
26
- @client.create_stack(stack_params)
27
- @client.wait_until(:stack_create_complete, stack_name: @stack_name)
26
+ with_progress "creation" do
27
+ @client.create_stack(stack_params)
28
+ @client.wait_until(:stack_create_complete, stack_name: @stack_name)
29
+ end
28
30
  end
29
31
 
30
32
  def update_stack
31
- @client.update_stack(stack_params)
32
- @client.wait_until(:stack_update_complete, stack_name: @stack_name)
33
+ with_progress "update" do
34
+ @client.update_stack(stack_params)
35
+ @client.wait_until(:stack_update_complete, stack_name: @stack_name)
36
+ end
33
37
  end
34
38
 
35
39
  def delete_stack
36
- @client.delete_stack({ stack_name: @stack_name })
37
- @client.wait_until(:stack_delete_complete, stack_name: @stack_name)
40
+ with_progress "deletion" do
41
+ @client.delete_stack({ stack_name: @stack_name })
42
+ @client.wait_until(:stack_delete_complete, stack_name: @stack_name)
43
+ end
38
44
  end
39
45
 
40
46
  private
@@ -67,4 +73,38 @@ class Vaporware
67
73
  end
68
74
  true
69
75
  end
76
+
77
+ def stack_events
78
+ events = []
79
+ begin
80
+ events = @client.describe_stack_events(stack_name: @stack_name).stack_events
81
+ rescue Aws::CloudFormation::Errors::ValidationError
82
+ end
83
+ events
84
+ end
85
+
86
+ def new_stack_events
87
+ new_events = stack_events[0..@old_events]
88
+ return [] if new_events.size == 0
89
+ @old_events = @old_events - new_events.size
90
+ new_events.reverse
91
+ end
92
+
93
+ def with_progress goal
94
+ @old_events = -1
95
+ new_stack_events
96
+ progress_thread = Thread.new do
97
+ loop do
98
+ puts "Waiting for stack #{goal}..."
99
+ sleep 5
100
+ new_events = new_stack_events
101
+ new_events.each do |event|
102
+ puts "[#{event.timestamp}] #{event.logical_resource_id} (#{event.resource_type}): #{event.resource_status}"
103
+ end
104
+ end
105
+ end
106
+ yield
107
+ progress_thread.exit
108
+ puts "Stack #{goal} complete!"
109
+ end
70
110
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vaporware
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Audrey Schwarz
@@ -59,7 +59,7 @@ extensions: []
59
59
  extra_rdoc_files: []
60
60
  files:
61
61
  - lib/vaporware.rb
62
- homepage: http://rubygems.org/gems/vaporware
62
+ homepage: https://github.com/audreyschwarz/vaporware
63
63
  licenses:
64
64
  - MIT
65
65
  metadata: {}
@@ -69,9 +69,9 @@ require_paths:
69
69
  - lib
70
70
  required_ruby_version: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ">="
72
+ - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0'
74
+ version: '2'
75
75
  required_rubygems_version: !ruby/object:Gem::Requirement
76
76
  requirements:
77
77
  - - ">="