MovableInkAWS 2.7.0 → 2.7.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +10 -10
- data/MovableInkAWS.gemspec +2 -2
- data/lib/movable_ink/aws/errors.rb +15 -0
- data/lib/movable_ink/aws/route53.rb +2 -2
- data/lib/movable_ink/aws.rb +8 -2
- data/lib/movable_ink/version.rb +1 -1
- data/spec/errors_spec.rb +21 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e63c5966f197e0bce1048cd51aae3a310fea5f76bc25e3d116b6a08e5113c25d
|
4
|
+
data.tar.gz: b72b5c3f38e8344217e7d999c2cd086bc9328fcf196f476f70c12b2f7bd58543
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3bd418547afcad6e528d987863eacf8e2c85b48f04ec3cbc990c0ab6fde12fc33699bc8469bed92d3e4dabcb0de833b95991fc2387ee6bb229389d4d87983742
|
7
|
+
data.tar.gz: fd7eee67d42e52e1677eb79e9d2a2be393bbd8a74c7fd511e3aad0bfd3f9a3fb52224cf79e03916760bc343b9d4028f4417091b5298f2239327bb2370d29ea34
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
MovableInkAWS (2.7.
|
4
|
+
MovableInkAWS (2.7.3)
|
5
5
|
aws-sdk-athena (~> 1)
|
6
6
|
aws-sdk-autoscaling (~> 1)
|
7
7
|
aws-sdk-cloudwatch (~> 1)
|
@@ -22,7 +22,7 @@ PATH
|
|
22
22
|
GEM
|
23
23
|
remote: https://rubygems.org/
|
24
24
|
specs:
|
25
|
-
addressable (2.
|
25
|
+
addressable (2.8.0)
|
26
26
|
public_suffix (>= 2.0.2, < 5.0)
|
27
27
|
aws-eventstream (1.2.0)
|
28
28
|
aws-partitions (1.605.0)
|
@@ -73,8 +73,8 @@ GEM
|
|
73
73
|
aws-sigv4 (~> 1.1)
|
74
74
|
aws-sigv4 (1.5.0)
|
75
75
|
aws-eventstream (~> 1, >= 1.0.2)
|
76
|
-
crack (0.4.
|
77
|
-
|
76
|
+
crack (0.4.5)
|
77
|
+
rexml
|
78
78
|
deep_merge (1.2.2)
|
79
79
|
diff-lcs (1.3)
|
80
80
|
diplomat (2.4.2)
|
@@ -82,7 +82,7 @@ GEM
|
|
82
82
|
faraday (>= 0.9, < 1.1.0)
|
83
83
|
faraday (1.0.1)
|
84
84
|
multipart-post (>= 1.2, < 3)
|
85
|
-
hashdiff (1.0.
|
85
|
+
hashdiff (1.0.1)
|
86
86
|
httparty (0.16.3)
|
87
87
|
mime-types (~> 3.0)
|
88
88
|
multi_xml (>= 0.5.2)
|
@@ -92,7 +92,8 @@ GEM
|
|
92
92
|
mime-types-data (3.2022.0105)
|
93
93
|
multi_xml (0.6.0)
|
94
94
|
multipart-post (2.2.3)
|
95
|
-
public_suffix (4.0.
|
95
|
+
public_suffix (4.0.7)
|
96
|
+
rexml (3.2.5)
|
96
97
|
rspec (3.9.0)
|
97
98
|
rspec-core (~> 3.9.0)
|
98
99
|
rspec-expectations (~> 3.9.0)
|
@@ -106,9 +107,8 @@ GEM
|
|
106
107
|
diff-lcs (>= 1.2.0, < 2.0)
|
107
108
|
rspec-support (~> 3.9.0)
|
108
109
|
rspec-support (3.9.3)
|
109
|
-
|
110
|
-
|
111
|
-
addressable (>= 2.3.6)
|
110
|
+
webmock (3.17.1)
|
111
|
+
addressable (>= 2.8.0)
|
112
112
|
crack (>= 0.3.2)
|
113
113
|
hashdiff (>= 0.4.0, < 2.0.0)
|
114
114
|
|
@@ -121,4 +121,4 @@ DEPENDENCIES
|
|
121
121
|
webmock
|
122
122
|
|
123
123
|
BUNDLED WITH
|
124
|
-
2.3.
|
124
|
+
2.3.11
|
data/MovableInkAWS.gemspec
CHANGED
@@ -6,8 +6,8 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.version = MovableInk::AWS::VERSION
|
7
7
|
s.summary = 'AWS Utility methods for MovableInk'
|
8
8
|
s.description = 'AWS Utility methods for MovableInk'
|
9
|
-
s.authors = ['
|
10
|
-
s.email = '
|
9
|
+
s.authors = ['MI SRE']
|
10
|
+
s.email = 'devops@movableink.com'
|
11
11
|
|
12
12
|
s.add_runtime_dependency 'aws-sdk-core', '~> 3'
|
13
13
|
s.add_runtime_dependency 'aws-sdk-athena', '~> 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
|
data/lib/movable_ink/aws.rb
CHANGED
@@ -61,7 +61,8 @@ module MovableInk
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
|
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,10 +98,11 @@ 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
|
103
|
-
raise MovableInk::AWS::Errors::ServiceError
|
105
|
+
raise MovableInk::AWS::Errors::ServiceError.new("#{e.class}: #{e.message}")
|
104
106
|
end
|
105
107
|
end
|
106
108
|
message = "From: #{$0}\n```\n#{Thread.current.backtrace.first(3).join("\n").gsub("`","'")}\n```"
|
@@ -113,6 +115,10 @@ module MovableInk
|
|
113
115
|
self.class.regions
|
114
116
|
end
|
115
117
|
|
118
|
+
def my_aws_account_id
|
119
|
+
@my_aws_account_id ||= instance_identity_document['accountId'].to_i
|
120
|
+
end
|
121
|
+
|
116
122
|
def my_region
|
117
123
|
@my_region ||= if ENV['AWS_REGION'].nil?
|
118
124
|
availability_zone.chop
|
data/lib/movable_ink/version.rb
CHANGED
data/spec/errors_spec.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative '../lib/movable_ink/aws'
|
2
|
+
require 'webmock/rspec'
|
3
|
+
|
4
|
+
describe MovableInk::AWS::Errors do
|
5
|
+
context 'ExpectedError' do
|
6
|
+
it 'matches exception by class name and pattern' do
|
7
|
+
expected = MovableInk::AWS::Errors::ExpectedError.new(Aws::Errors::ServiceError, [/something failed/])
|
8
|
+
expect(expected.match?(Aws::Errors::ServiceError.new(nil, 'There\'s something failed.'))).to eq(true)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'matches exception by class name only' do
|
12
|
+
expected = MovableInk::AWS::Errors::ExpectedError.new(Aws::Errors::ServiceError)
|
13
|
+
expect(expected.match?(Aws::Errors::ServiceError.new(nil, 'There\'s something failed.'))).to eq(true)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'matches exception by class name only - negative match' do
|
17
|
+
expected = MovableInk::AWS::Errors::ExpectedError.new(Aws::IAM::Errors::Throttling)
|
18
|
+
expect(expected.match?(Aws::Errors::ServiceError.new(nil, 'There\'s something failed.'))).to eq(false)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
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.
|
4
|
+
version: 2.7.3
|
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-
|
11
|
+
date: 2022-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-core
|
@@ -235,7 +235,7 @@ dependencies:
|
|
235
235
|
- !ruby/object:Gem::Version
|
236
236
|
version: 2.4.2
|
237
237
|
description: AWS Utility methods for MovableInk
|
238
|
-
email:
|
238
|
+
email: devops@movableink.com
|
239
239
|
executables: []
|
240
240
|
extensions: []
|
241
241
|
extra_rdoc_files: []
|
@@ -268,6 +268,7 @@ files:
|
|
268
268
|
- spec/consul_spec.rb
|
269
269
|
- spec/ec2_spec.rb
|
270
270
|
- spec/elasticache_spec.rb
|
271
|
+
- spec/errors_spec.rb
|
271
272
|
- spec/iam_spec.rb
|
272
273
|
- spec/metadata_spec.rb
|
273
274
|
- spec/route53_spec.rb
|