MovableInkAWS 2.7.1 → 2.7.2

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: 4bb30965f9a405275bbe54e8119bdc243bb4def14fb23af716488429639c6593
4
- data.tar.gz: 9d31d8cde5eac0c2ae5be1673f167c2f550b2648a5593d3bc68213ce437c075d
3
+ metadata.gz: 062a7d89881a8deb80193260cee046fd05bc2f354614b4184c9b4f219e6bbfb5
4
+ data.tar.gz: 2f539ce1e8ffe789ac796f13eb0626eeb7beed534bb2487dd2962341eadfffe3
5
5
  SHA512:
6
- metadata.gz: 94c2a5c1b1028585739c75c57e1a83ce5c9629539ad5c8dbb977e9b38a3abc0d9f81d47883c37a252cfe6c4dd2ee241c30349bdbf97ce0bfc37f732a8de0c6cc
7
- data.tar.gz: a7e9c6001f0f659178b1be1f50527d7d1e7495f4220dfefb1e8d8d2df3b297a3d94af39603161205b719e62053548c3ae397300ed0998b88b9f998c984ad15af
6
+ metadata.gz: 5a8aaca866b301926dd14e435dc811d1b20d99e78f5e3a91a40a3d6e0258c07df66d15e74d69123e2548272fb89ce64763d2a5eac010b8a137556fd44c69511f
7
+ data.tar.gz: e9b2eac205025b400cea11b4692be05ec2e5e6ceca621187d0e8151fbab6996351b2ca2d4bfa4ccbcd7b65ec2fd564a6ecdd54cbe9daf78cfd57c59feff0a319
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- MovableInkAWS (2.7.1)
4
+ MovableInkAWS (2.7.2)
5
5
  aws-sdk-athena (~> 1)
6
6
  aws-sdk-autoscaling (~> 1)
7
7
  aws-sdk-cloudwatch (~> 1)
@@ -8,6 +8,21 @@ module MovableInk
8
8
  class InvalidDiscoveryTypeError < StandardError; end
9
9
  class RoleNameRequiredError < StandardError; end
10
10
  class RoleNameInvalidError < StandardError; end
11
+
12
+ class ExpectedError
13
+ def initialize(error_class, message_patterns = [])
14
+ @error_class = error_class
15
+ message_patterns.each { |pattern| raise StandardError.new("Invalid message pattern provided #{pattern.inspect}") unless pattern.class == Regexp }
16
+ @message_patterns = message_patterns
17
+ end
18
+
19
+ def match?(exception)
20
+ return false unless exception.class == @error_class
21
+ return true if @message_patterns.length == 0
22
+ @message_patterns.each {|pattern| return true if exception.message.match(pattern) }
23
+ false
24
+ end
25
+ end
11
26
  end
12
27
  end
13
28
  end
@@ -16,7 +16,7 @@ module MovableInk
16
16
  resource_record_sets(zone, client).select{|rrs| rrs.set_identifier == instance_name}.map(&:to_h)
17
17
  end
18
18
 
19
- def delete_resource_record_sets(zone, instance_name, client = nil)
19
+ def delete_resource_record_sets(zone, instance_name, client = nil, expected_errors = [])
20
20
  resource_record_sets = get_resource_record_sets_by_instance_name(zone, instance_name, client)
21
21
  return if resource_record_sets.empty?
22
22
 
@@ -29,7 +29,7 @@ module MovableInk
29
29
  }
30
30
  }
31
31
 
32
- run_with_backoff do
32
+ run_with_backoff(expected_errors: expected_errors) do
33
33
  route53(client).change_resource_record_sets({change_batch: change_batch, hosted_zone_id: zone})
34
34
  end
35
35
  end
@@ -61,7 +61,8 @@ module MovableInk
61
61
  end
62
62
  end
63
63
 
64
- def run_with_backoff(quiet: false, tries: 9)
64
+ # exected_errors[0].class == MovableInk::AWS::ExpectedError
65
+ def run_with_backoff(quiet: false, tries: 9, expected_errors: [])
65
66
  tries.times do |num|
66
67
  begin
67
68
  return yield
@@ -97,6 +98,7 @@ module MovableInk
97
98
  notify_and_sleep(sleep_time, $!.class)
98
99
  end
99
100
  rescue Aws::Errors::ServiceError => e
101
+ expected_errors.each {|expected_error| return if expected_error.match?(e) }
100
102
  message = "#{e.class}: #{e.message}\nFrom #{$0}\n```\n#{e.backtrace.first(3).join("\n").gsub("`","'")}\n```"
101
103
  notify_slack(subject: 'Unhandled AWS API Error', message: message)
102
104
  puts message
@@ -1,5 +1,5 @@
1
1
  module MovableInk
2
2
  class AWS
3
- VERSION = '2.7.1'
3
+ VERSION = '2.7.2'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: MovableInkAWS
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.1
4
+ version: 2.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - MI SRE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-20 00:00:00.000000000 Z
11
+ date: 2022-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core