MovableInkAWS 1.2.0 → 1.3.2
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 +28 -28
- data/lib/movable_ink/aws.rb +2 -0
- data/lib/movable_ink/aws/ec2.rb +3 -3
- data/lib/movable_ink/aws/eks.rb +5 -3
- data/lib/movable_ink/aws/sns.rb +11 -12
- data/lib/movable_ink/version.rb +1 -1
- data/spec/ec2_spec.rb +2 -14
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a4961e67a3f5c3a9a238aaf116e475902b00fe56215ee6ed3349bcab8793fc6
|
4
|
+
data.tar.gz: fcacae59b6af460b0c746c588eeefd3b8281ff5af7a989b5382bb777a142e5ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09d7bb52636d4255f7a0eb168f0dca79446b02b9410c9b8f8490ea031d5f3d367d0be24e01b9824718618f9110999a86fb0ff8bca1fb9aefbf652f06386ccc42'
|
7
|
+
data.tar.gz: 2ebea47434376fbf2e187b2f72b6da14c620c19dd91837fad282abc096881a85d48ee95c78fb324594cfec76e78567247727549f69e1d4e146f52b3b6b3eb4ea
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
MovableInkAWS (1.2
|
4
|
+
MovableInkAWS (1.3.2)
|
5
5
|
aws-sdk-athena (~> 1)
|
6
6
|
aws-sdk-autoscaling (~> 1)
|
7
7
|
aws-sdk-cloudwatch (~> 1)
|
@@ -21,50 +21,50 @@ GEM
|
|
21
21
|
remote: https://rubygems.org/
|
22
22
|
specs:
|
23
23
|
aws-eventstream (1.1.0)
|
24
|
-
aws-partitions (1.
|
25
|
-
aws-sdk-athena (1.
|
26
|
-
aws-sdk-core (~> 3, >= 3.
|
24
|
+
aws-partitions (1.383.0)
|
25
|
+
aws-sdk-athena (1.33.0)
|
26
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
27
27
|
aws-sigv4 (~> 1.1)
|
28
|
-
aws-sdk-autoscaling (1.
|
29
|
-
aws-sdk-core (~> 3, >= 3.
|
28
|
+
aws-sdk-autoscaling (1.47.0)
|
29
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
30
30
|
aws-sigv4 (~> 1.1)
|
31
|
-
aws-sdk-cloudwatch (1.
|
32
|
-
aws-sdk-core (~> 3, >= 3.
|
31
|
+
aws-sdk-cloudwatch (1.45.0)
|
32
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
33
33
|
aws-sigv4 (~> 1.1)
|
34
|
-
aws-sdk-core (3.
|
34
|
+
aws-sdk-core (3.109.1)
|
35
35
|
aws-eventstream (~> 1, >= 1.0.2)
|
36
36
|
aws-partitions (~> 1, >= 1.239.0)
|
37
37
|
aws-sigv4 (~> 1.1)
|
38
38
|
jmespath (~> 1.0)
|
39
|
-
aws-sdk-ec2 (1.
|
40
|
-
aws-sdk-core (~> 3, >= 3.
|
39
|
+
aws-sdk-ec2 (1.200.0)
|
40
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
41
41
|
aws-sigv4 (~> 1.1)
|
42
|
-
aws-sdk-eks (1.
|
43
|
-
aws-sdk-core (~> 3, >= 3.
|
42
|
+
aws-sdk-eks (1.45.0)
|
43
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
44
44
|
aws-sigv4 (~> 1.1)
|
45
|
-
aws-sdk-elasticache (1.
|
46
|
-
aws-sdk-core (~> 3, >= 3.
|
45
|
+
aws-sdk-elasticache (1.44.0)
|
46
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
47
47
|
aws-sigv4 (~> 1.1)
|
48
|
-
aws-sdk-kms (1.
|
49
|
-
aws-sdk-core (~> 3, >= 3.
|
48
|
+
aws-sdk-kms (1.39.0)
|
49
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
50
50
|
aws-sigv4 (~> 1.1)
|
51
|
-
aws-sdk-rds (1.
|
52
|
-
aws-sdk-core (~> 3, >= 3.
|
51
|
+
aws-sdk-rds (1.104.0)
|
52
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
53
53
|
aws-sigv4 (~> 1.1)
|
54
|
-
aws-sdk-route53 (1.
|
55
|
-
aws-sdk-core (~> 3, >= 3.
|
54
|
+
aws-sdk-route53 (1.44.0)
|
55
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
56
56
|
aws-sigv4 (~> 1.1)
|
57
|
-
aws-sdk-s3 (1.
|
58
|
-
aws-sdk-core (~> 3, >= 3.
|
57
|
+
aws-sdk-s3 (1.83.1)
|
58
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
59
59
|
aws-sdk-kms (~> 1)
|
60
60
|
aws-sigv4 (~> 1.1)
|
61
|
-
aws-sdk-sns (1.
|
62
|
-
aws-sdk-core (~> 3, >= 3.
|
61
|
+
aws-sdk-sns (1.33.0)
|
62
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
63
63
|
aws-sigv4 (~> 1.1)
|
64
|
-
aws-sdk-ssm (1.
|
65
|
-
aws-sdk-core (~> 3, >= 3.
|
64
|
+
aws-sdk-ssm (1.95.0)
|
65
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
66
66
|
aws-sigv4 (~> 1.1)
|
67
|
-
aws-sigv4 (1.2.
|
67
|
+
aws-sigv4 (1.2.2)
|
68
68
|
aws-eventstream (~> 1, >= 1.0.2)
|
69
69
|
diff-lcs (1.3)
|
70
70
|
httparty (0.16.3)
|
data/lib/movable_ink/aws.rb
CHANGED
@@ -64,7 +64,9 @@ module MovableInk
|
|
64
64
|
rescue Aws::EC2::Errors::RequestLimitExceeded,
|
65
65
|
Aws::EC2::Errors::ResourceAlreadyAssociated,
|
66
66
|
Aws::EC2::Errors::Unavailable,
|
67
|
+
Aws::EKS::Errors::TooManyRequestsException,
|
67
68
|
Aws::SNS::Errors::ThrottledException,
|
69
|
+
Aws::SNS::Errors::Throttling,
|
68
70
|
Aws::AutoScaling::Errors::Throttling,
|
69
71
|
Aws::AutoScaling::Errors::ThrottledException,
|
70
72
|
Aws::S3::Errors::SlowDown,
|
data/lib/movable_ink/aws/ec2.rb
CHANGED
@@ -9,13 +9,13 @@ module MovableInk
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def mi_env_cache_file_path
|
12
|
-
'/etc/movableink/
|
12
|
+
'/etc/movableink/environments.json'
|
13
13
|
end
|
14
14
|
|
15
15
|
def mi_env
|
16
16
|
@mi_env ||= if File.exist?(mi_env_cache_file_path)
|
17
|
-
|
18
|
-
|
17
|
+
environments = JSON.parse(File.read(mi_env_cache_file_path))
|
18
|
+
environments[my_region] || load_mi_env
|
19
19
|
else
|
20
20
|
load_mi_env
|
21
21
|
end
|
data/lib/movable_ink/aws/eks.rb
CHANGED
@@ -13,9 +13,11 @@ module MovableInk
|
|
13
13
|
client = eks(region: region)
|
14
14
|
|
15
15
|
resp = run_with_backoff do
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
begin
|
17
|
+
client.describe_cluster({ name: cluster_name })
|
18
|
+
rescue Aws::EKS::Errors::ResourceNotFoundException
|
19
|
+
return nil
|
20
|
+
end
|
19
21
|
end
|
20
22
|
|
21
23
|
cluster_arn = resp.cluster.arn
|
data/lib/movable_ink/aws/sns.rb
CHANGED
@@ -11,29 +11,28 @@ module MovableInk
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def sns_slack_topic_arn
|
14
|
-
run_with_backoff do
|
15
|
-
|
16
|
-
|
17
|
-
return topic.topic_arn if topic.topic_arn.include? "slack-aws-alerts"
|
18
|
-
end
|
14
|
+
@sns_slack_topic_arn ||= run_with_backoff do
|
15
|
+
sns_topics.each do |topic|
|
16
|
+
return topic.topic_arn if topic.topic_arn.include? "slack-aws-alerts"
|
19
17
|
end
|
20
18
|
end
|
21
19
|
end
|
22
20
|
|
23
21
|
def sns_pagerduty_topic_arn
|
24
|
-
run_with_backoff do
|
25
|
-
|
26
|
-
|
27
|
-
return topic.topic_arn if topic.topic_arn.include? "pagerduty-custom-alerts"
|
28
|
-
end
|
22
|
+
@sns_pagerduty_topic_arn ||= run_with_backoff do
|
23
|
+
sns_topics.each do |topic|
|
24
|
+
return topic.topic_arn if topic.topic_arn.include? "pagerduty-custom-alerts"
|
29
25
|
end
|
30
26
|
end
|
31
27
|
end
|
32
28
|
|
29
|
+
def sns_topics
|
30
|
+
@sns_topics ||= run_with_backoff { sns.list_topics.flat_map(&:topics) }
|
31
|
+
end
|
32
|
+
|
33
33
|
def notify_and_sleep(seconds, error_class)
|
34
34
|
message = "Throttled by AWS. Sleeping #{seconds} seconds, (#{error_class})"
|
35
|
-
notify_slack(subject: 'API Throttled',
|
36
|
-
message: message)
|
35
|
+
notify_slack(subject: 'API Throttled', message: message)
|
37
36
|
puts message
|
38
37
|
sleep seconds
|
39
38
|
end
|
data/lib/movable_ink/version.rb
CHANGED
data/spec/ec2_spec.rb
CHANGED
@@ -32,26 +32,14 @@ describe MovableInk::AWS::EC2 do
|
|
32
32
|
}
|
33
33
|
|
34
34
|
it 'will read mi_env from disk when the cache file exists' do
|
35
|
+
allow(aws).to receive(:my_region).and_return('us-east-2')
|
35
36
|
f = Tempfile.new('cache')
|
36
|
-
f.write(
|
37
|
+
f.write(JSON.generate({ "us-east-1": "production", "us-west-2": "production", "us-east-2": "staging" }))
|
37
38
|
f.close
|
38
39
|
allow(aws).to receive(:mi_env_cache_file_path).and_return(f.path)
|
39
40
|
expect(aws.mi_env).to eq('staging')
|
40
41
|
end
|
41
42
|
|
42
|
-
it 'will read tag data if the cache file is empty' do
|
43
|
-
ec2.stub_responses(:describe_tags, tag_data)
|
44
|
-
allow(aws).to receive(:my_region).and_return('us-east-1')
|
45
|
-
allow(aws).to receive(:instance_id).and_return('i-12345')
|
46
|
-
allow(aws).to receive(:ec2).and_return(ec2)
|
47
|
-
|
48
|
-
f = Tempfile.new('cache')
|
49
|
-
f.write('')
|
50
|
-
f.close
|
51
|
-
allow(aws).to receive(:mi_env_cache_file_path).and_return(f.path)
|
52
|
-
expect(aws.mi_env).to eq('test')
|
53
|
-
end
|
54
|
-
|
55
43
|
it "should find the environment from the current instance's tags" do
|
56
44
|
ec2.stub_responses(:describe_tags, tag_data)
|
57
45
|
allow(aws).to receive(:my_region).and_return('us-east-1')
|
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: 1.2
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Chesler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-core
|