cfn-status 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07ec3f8ae0d33efb16085c69633571cf0ba71444f8e6f87b1a5c21d733e214a1
4
- data.tar.gz: da919f6cb29c2b3fd077c09a88ab67e2d4d25e76f17c37892d1f5b54e7346804
3
+ metadata.gz: b8d1438c2c6bb5426c57b656fa117bc93c178c2ac85ab0334b7dedba8e5330b4
4
+ data.tar.gz: 1b2896136526de36f3ea55f27d3313bf486c198c7f8d5ecb48fea47ff5f03ccd
5
5
  SHA512:
6
- metadata.gz: 57b17e65e9e445719190e30a3384ed5778faaf2a4479e67ac03eba755a73b334136fbfcc35b2a1c5044a9ff9213a3c9c0861936d8f0f06c9dfceda8e160cfbc3
7
- data.tar.gz: 11e8ae0dc322584ee2a7a5567802f870ae60b0699c8fab9ca160b671863a1af426b3e910280796526fcfec5f8ed4a80a31854249867528467ed646cc018af8f3
6
+ metadata.gz: 748fb35140200de97901e0f39bcc300fd4cf1f3261de7f3f406297aec210907b37f71e787bb9d7a69a7fde2b9d9f7bcdfd2f1fcd5d03bb4c03f61f180aa623a4
7
+ data.tar.gz: efb43467da800ac14fc4ede985011ff248a3cba4a174fe9f89e3358ee2acc03a615d340759f30220941467fc3186999b3ed8484acf8c048baae0a58281d27f6c
@@ -3,6 +3,9 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely* adheres to [Semantic Versioning](http://semver.org/), even before v1.0.
5
5
 
6
+ ## [0.4.0]
7
+ - #2 add handle_rollback! method
8
+
6
9
  ## [0.3.1]
7
10
  - allow use of different cfn client
8
11
 
@@ -243,4 +243,8 @@ class CfnStatus
243
243
  "#{minutes.to_i}m #{seconds.to_i}s"
244
244
  end
245
245
  end
246
+
247
+ def handle_rollback!
248
+ CfnStatus::RollbackStack.handle!(@stack_name, cfn: cfn)
249
+ end
246
250
  end
@@ -0,0 +1,42 @@
1
+ class CfnStatus
2
+ class RollbackStack
3
+ def self.handle!(stack_name, options={})
4
+ new(stack_name, options).run
5
+ end
6
+
7
+ attr_reader :status, :cfn
8
+ def initialize(stack_name, options={})
9
+ @stack_name = stack_name
10
+ @cfn = options[:cfn]
11
+ @status = CfnStatus.new(@stack_name, cfn: @cfn)
12
+ end
13
+
14
+ def run
15
+ @stack = find_stack(@stack_name)
16
+ if @stack && rollback_complete?(@stack)
17
+ puts "Existing stack in ROLLBACK_COMPLETE state. Deleting stack before continuing."
18
+ cfn.delete_stack(stack_name: @stack_name)
19
+ status.wait
20
+ status.reset
21
+ @stack = nil # at this point stack has been deleted
22
+ end
23
+ end
24
+
25
+ def rollback_complete?(stack)
26
+ stack.stack_status == 'ROLLBACK_COMPLETE'
27
+ end
28
+
29
+ def find_stack(stack_name)
30
+ return if ENV['CFN_STATUS_TEST']
31
+ resp = cfn.describe_stacks(stack_name: stack_name)
32
+ resp.stacks.first
33
+ rescue Aws::CloudFormation::Errors::ValidationError => e
34
+ # example: Stack with id demo-web does not exist
35
+ if e.message =~ /Stack with/ && e.message =~ /does not exist/
36
+ nil
37
+ else
38
+ raise
39
+ end
40
+ end
41
+ end
42
+ end
@@ -1,3 +1,3 @@
1
1
  class CfnStatus
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfn-status
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-22 00:00:00.000000000 Z
11
+ date: 2020-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-cloudformation
@@ -87,6 +87,7 @@ files:
87
87
  - lib/cfn-status.rb
88
88
  - lib/cfn_status.rb
89
89
  - lib/cfn_status/aws_service.rb
90
+ - lib/cfn_status/rollback_stack.rb
90
91
  - lib/cfn_status/version.rb
91
92
  homepage: https://github.com/tongueroo/cfn-status
92
93
  licenses: