cfn-status 0.3.1 → 0.4.0

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
  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: