vaporware 0.0.2 → 0.0.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.
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
  - - ">="