MovableInkAWS 2.4.0 → 2.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1c9a86a0ab40e4e623c361481330fd62111efa6d6f62cb79e1959d2ef49c9824
4
- data.tar.gz: 0c792c6c2775ab5d6bc6d838713059a68313e1e5bac7e461757595e5b53ff166
3
+ metadata.gz: 363e1c1c55ce4788534ff1c245a354e862e9320d179770c9ccacc54fd335177c
4
+ data.tar.gz: d453d58d25b0ec69b236d0e5aa3392615099b526294eac9966cebd46bf068b2f
5
5
  SHA512:
6
- metadata.gz: 470d135f2a065395a53fa0a362f6075cc3755815a0bfd6e426e46427932dcf1eca04af944b50dad190a067a1a8202d8951d027e79949263935f579e93446450c
7
- data.tar.gz: 45fd5275c71dc36ad59295f660684018f3b5a386cca5d084fada593aaa02260dc4bb2751922462dc702bb8c59e5a0040b040d13a86b933c8414f643c24c143cd
6
+ metadata.gz: 2d305359f482dc45af20f878acf18f6569438356121fe63c9f8861277b5cb8a192d65e41c3de9f6dbbf47c0e368b235671f172749a08ad0dc61cbfb1d1c500a3
7
+ data.tar.gz: 3a2bc49178a06fae7316ed380f693ad86502db0e0df71be9e6144fd10bfe888a625c756e4e631d7b47ef24cb5efe3237b075cecda011c4087c32e82950818042
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- MovableInkAWS (2.4.0)
4
+ MovableInkAWS (2.5.2)
5
5
  aws-sdk-athena (~> 1)
6
6
  aws-sdk-autoscaling (~> 1)
7
7
  aws-sdk-cloudwatch (~> 1)
@@ -23,55 +23,55 @@ GEM
23
23
  specs:
24
24
  addressable (2.7.0)
25
25
  public_suffix (>= 2.0.2, < 5.0)
26
- aws-eventstream (1.1.1)
27
- aws-partitions (1.445.0)
28
- aws-sdk-athena (1.37.0)
29
- aws-sdk-core (~> 3, >= 3.112.0)
26
+ aws-eventstream (1.2.0)
27
+ aws-partitions (1.573.0)
28
+ aws-sdk-athena (1.52.0)
29
+ aws-sdk-core (~> 3, >= 3.127.0)
30
30
  aws-sigv4 (~> 1.1)
31
- aws-sdk-autoscaling (1.60.0)
32
- aws-sdk-core (~> 3, >= 3.112.0)
31
+ aws-sdk-autoscaling (1.78.0)
32
+ aws-sdk-core (~> 3, >= 3.127.0)
33
33
  aws-sigv4 (~> 1.1)
34
- aws-sdk-cloudwatch (1.51.0)
35
- aws-sdk-core (~> 3, >= 3.112.0)
34
+ aws-sdk-cloudwatch (1.62.0)
35
+ aws-sdk-core (~> 3, >= 3.127.0)
36
36
  aws-sigv4 (~> 1.1)
37
- aws-sdk-core (3.114.0)
37
+ aws-sdk-core (3.130.0)
38
38
  aws-eventstream (~> 1, >= 1.0.2)
39
- aws-partitions (~> 1, >= 1.239.0)
39
+ aws-partitions (~> 1, >= 1.525.0)
40
40
  aws-sigv4 (~> 1.1)
41
41
  jmespath (~> 1.0)
42
- aws-sdk-ec2 (1.234.0)
43
- aws-sdk-core (~> 3, >= 3.112.0)
42
+ aws-sdk-ec2 (1.305.0)
43
+ aws-sdk-core (~> 3, >= 3.127.0)
44
44
  aws-sigv4 (~> 1.1)
45
- aws-sdk-eks (1.51.0)
46
- aws-sdk-core (~> 3, >= 3.112.0)
45
+ aws-sdk-eks (1.74.0)
46
+ aws-sdk-core (~> 3, >= 3.127.0)
47
47
  aws-sigv4 (~> 1.1)
48
- aws-sdk-elasticache (1.55.0)
49
- aws-sdk-core (~> 3, >= 3.112.0)
48
+ aws-sdk-elasticache (1.76.0)
49
+ aws-sdk-core (~> 3, >= 3.127.0)
50
50
  aws-sigv4 (~> 1.1)
51
- aws-sdk-kms (1.43.0)
52
- aws-sdk-core (~> 3, >= 3.112.0)
51
+ aws-sdk-kms (1.55.0)
52
+ aws-sdk-core (~> 3, >= 3.127.0)
53
53
  aws-sigv4 (~> 1.1)
54
- aws-sdk-rds (1.118.0)
55
- aws-sdk-core (~> 3, >= 3.112.0)
54
+ aws-sdk-rds (1.142.0)
55
+ aws-sdk-core (~> 3, >= 3.127.0)
56
56
  aws-sigv4 (~> 1.1)
57
- aws-sdk-route53 (1.49.0)
58
- aws-sdk-core (~> 3, >= 3.112.0)
57
+ aws-sdk-route53 (1.62.0)
58
+ aws-sdk-core (~> 3, >= 3.127.0)
59
59
  aws-sigv4 (~> 1.1)
60
- aws-sdk-s3 (1.93.1)
61
- aws-sdk-core (~> 3, >= 3.112.0)
60
+ aws-sdk-s3 (1.113.0)
61
+ aws-sdk-core (~> 3, >= 3.127.0)
62
62
  aws-sdk-kms (~> 1)
63
+ aws-sigv4 (~> 1.4)
64
+ aws-sdk-sns (1.53.0)
65
+ aws-sdk-core (~> 3, >= 3.127.0)
63
66
  aws-sigv4 (~> 1.1)
64
- aws-sdk-sns (1.39.0)
65
- aws-sdk-core (~> 3, >= 3.112.0)
67
+ aws-sdk-ssm (1.134.0)
68
+ aws-sdk-core (~> 3, >= 3.127.0)
66
69
  aws-sigv4 (~> 1.1)
67
- aws-sdk-ssm (1.108.0)
68
- aws-sdk-core (~> 3, >= 3.112.0)
69
- aws-sigv4 (~> 1.1)
70
- aws-sigv4 (1.2.3)
70
+ aws-sigv4 (1.4.0)
71
71
  aws-eventstream (~> 1, >= 1.0.2)
72
72
  crack (0.4.3)
73
73
  safe_yaml (~> 1.0.0)
74
- deep_merge (1.2.1)
74
+ deep_merge (1.2.2)
75
75
  diff-lcs (1.3)
76
76
  diplomat (2.4.2)
77
77
  deep_merge (~> 1.0, >= 1.0.1)
@@ -82,10 +82,10 @@ GEM
82
82
  httparty (0.16.3)
83
83
  mime-types (~> 3.0)
84
84
  multi_xml (>= 0.5.2)
85
- jmespath (1.4.0)
86
- mime-types (3.3.1)
85
+ jmespath (1.6.1)
86
+ mime-types (3.4.1)
87
87
  mime-types-data (~> 3.2015)
88
- mime-types-data (3.2021.0225)
88
+ mime-types-data (3.2022.0105)
89
89
  multi_xml (0.6.0)
90
90
  multipart-post (2.1.1)
91
91
  public_suffix (4.0.5)
@@ -117,4 +117,4 @@ DEPENDENCIES
117
117
  webmock
118
118
 
119
119
  BUNDLED WITH
120
- 2.1.3
120
+ 2.1.4
@@ -1,4 +1,5 @@
1
1
  require 'net/http'
2
+ require 'json'
2
3
 
3
4
  module MovableInk
4
5
  class AWS
@@ -12,20 +13,34 @@ module MovableInk
12
13
  end
13
14
  end
14
15
 
15
- def retrieve_metadata(key, tries: 3)
16
+ def retrieve_data(url, tries: 3)
16
17
  tries.times do |num|
17
18
  num += 1
18
- request = Net::HTTP::Get.new("/latest/meta-data/#{key}")
19
+ request = Net::HTTP::Get.new(url)
19
20
  request['X-aws-ec2-metadata-token'] = imds_token
20
21
  response = http(timeout_seconds: num * 3).request(request)
21
22
  return response.body
22
- rescue Net::OpenTimeout, Net::ReadTimeout, Errno::EHOSTDOWN
23
+ rescue Net::OpenTimeout, Net::ReadTimeout, Errno::EHOSTDOWN, Errno::ECONNREFUSED
23
24
  sleep(num * 2)
24
25
  end
25
26
 
26
27
  raise MovableInk::AWS::Errors::MetadataTimeout
27
28
  end
28
29
 
30
+ def retrieve_metadata(key, tries: 3)
31
+ retrieve_data("/latest/meta-data/#{key}", tries: tries)
32
+ end
33
+
34
+ def retrieve_dynamicdata(key, tries: 3)
35
+ retrieve_data("/latest/dynamic/#{key}", tries: tries)
36
+ end
37
+
38
+ def instance_identity_document
39
+ @instance_identity_document ||= JSON.parse(retrieve_dynamicdata('instance-identity/document'))
40
+ rescue JSON::ParserError
41
+ return
42
+ end
43
+
29
44
  def availability_zone
30
45
  @availability_zone ||= retrieve_metadata('placement/availability-zone')
31
46
  end
@@ -34,7 +34,8 @@ module MovableInk
34
34
  'iad' => 'us-east-1',
35
35
  'rld' => 'us-west-2',
36
36
  'dub' => 'eu-west-1',
37
- 'ord' => 'us-east-2'
37
+ 'ord' => 'us-east-2',
38
+ 'fra' => 'eu-central-1'
38
39
  }
39
40
  end
40
41
  end
@@ -1,5 +1,5 @@
1
1
  module MovableInk
2
2
  class AWS
3
- VERSION = '2.4.0'
3
+ VERSION = '2.5.2'
4
4
  end
5
5
  end
@@ -15,6 +15,19 @@ describe MovableInk::AWS::Metadata do
15
15
  expect{ aws.availability_zone }.to raise_error(MovableInk::AWS::Errors::MetadataTimeout)
16
16
  end
17
17
 
18
+ it 'should raise an error if the metadata service times out on getting dynamic data' do
19
+ aws = MovableInk::AWS.new
20
+ # stub an error making a request to the metadata api
21
+ stub_request(:put, 'http://169.254.169.254/latest/api/token').to_raise(Net::OpenTimeout)
22
+ expect{ aws.instance_identity_document }.to raise_error(MovableInk::AWS::Errors::MetadataTimeout)
23
+ end
24
+
25
+ it 'should return nil if the metadata service returns unparseable dynamic data' do
26
+ aws = MovableInk::AWS.new
27
+ expect(aws).to receive(:retrieve_data).with('/latest/dynamic/instance-identity/document', {tries: 3}).and_return("something")
28
+ expect(aws.instance_identity_document).to eq(nil)
29
+ end
30
+
18
31
  it 'should raise an error if trying to load private_ipv4 outside of EC2' do
19
32
  aws = MovableInk::AWS.new
20
33
  # stub an error making a request to the metadata api
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.4.0
4
+ version: 2.5.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: 2022-02-01 00:00:00.000000000 Z
11
+ date: 2022-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core