MovableInkAWS 1.1.5 → 1.3.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: 135c3f868d20fde5a59ac85a4e899cbd008fdcf6e4adb52e87ce0ce890305c6a
4
- data.tar.gz: e5c2db50def4842fd9d70278603aec613d2bb3e13874740ba4d2dc8cb088819f
3
+ metadata.gz: 7021c3e1d0f994fe76adec836d62f1fa50454389c9dc9d07c0e754a1f05f9ac5
4
+ data.tar.gz: 47fa2194267bb7f8e163ae1e815d708588832789cd1857184d581c5725570d04
5
5
  SHA512:
6
- metadata.gz: 31b99276587e8b25f7cfd3af5f7852542d969c675ce168236b1d2a1c33f683844151897e946eb6edebc4f1a3c70900e7c6d0aef204b389702b031b5652f7f3bd
7
- data.tar.gz: 22d3b8dfb489a985f10b70f615be7055759882f52ca818c345d546f9f64291cd787b341430d1df72636df73ffb51ef370d85b66be883a45d2d081cc2739e95c0
6
+ metadata.gz: 8c1c045dbc080b60e3101796494ed88cc6dd4e3f4ae697342a41771dc194c9c4c3526ea4fefd1f4c70ce0647bf3593e8c13d0832c057974d8f60221a3e3cc2f7
7
+ data.tar.gz: 9b553f0f33f02d1456eafb8e06ee1ff65b60adc02f6fc1b0f17f6c94eae56b9774fdbcb547619474fa4773f3b2d8c36af344cb27a3bf91168284a970183ca53c
@@ -1,12 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- MovableInkAWS (1.1.5)
4
+ MovableInkAWS (1.3.0)
5
5
  aws-sdk-athena (~> 1)
6
6
  aws-sdk-autoscaling (~> 1)
7
7
  aws-sdk-cloudwatch (~> 1)
8
8
  aws-sdk-core (~> 3)
9
9
  aws-sdk-ec2 (~> 1)
10
+ aws-sdk-eks (~> 1)
10
11
  aws-sdk-elasticache (~> 1)
11
12
  aws-sdk-rds (~> 1)
12
13
  aws-sdk-route53 (~> 1)
@@ -20,48 +21,51 @@ GEM
20
21
  remote: https://rubygems.org/
21
22
  specs:
22
23
  aws-eventstream (1.1.0)
23
- aws-partitions (1.325.0)
24
- aws-sdk-athena (1.27.0)
25
- aws-sdk-core (~> 3, >= 3.71.0)
24
+ aws-partitions (1.364.0)
25
+ aws-sdk-athena (1.31.0)
26
+ aws-sdk-core (~> 3, >= 3.99.0)
26
27
  aws-sigv4 (~> 1.1)
27
- aws-sdk-autoscaling (1.37.0)
28
- aws-sdk-core (~> 3, >= 3.71.0)
28
+ aws-sdk-autoscaling (1.45.0)
29
+ aws-sdk-core (~> 3, >= 3.99.0)
29
30
  aws-sigv4 (~> 1.1)
30
- aws-sdk-cloudwatch (1.38.0)
31
- aws-sdk-core (~> 3, >= 3.71.0)
31
+ aws-sdk-cloudwatch (1.43.0)
32
+ aws-sdk-core (~> 3, >= 3.99.0)
32
33
  aws-sigv4 (~> 1.1)
33
- aws-sdk-core (3.97.1)
34
+ aws-sdk-core (3.105.0)
34
35
  aws-eventstream (~> 1, >= 1.0.2)
35
36
  aws-partitions (~> 1, >= 1.239.0)
36
37
  aws-sigv4 (~> 1.1)
37
38
  jmespath (~> 1.0)
38
- aws-sdk-ec2 (1.165.0)
39
- aws-sdk-core (~> 3, >= 3.71.0)
39
+ aws-sdk-ec2 (1.193.0)
40
+ aws-sdk-core (~> 3, >= 3.99.0)
40
41
  aws-sigv4 (~> 1.1)
41
- aws-sdk-elasticache (1.36.0)
42
- aws-sdk-core (~> 3, >= 3.71.0)
42
+ aws-sdk-eks (1.41.0)
43
+ aws-sdk-core (~> 3, >= 3.99.0)
43
44
  aws-sigv4 (~> 1.1)
44
- aws-sdk-kms (1.33.0)
45
- aws-sdk-core (~> 3, >= 3.71.0)
45
+ aws-sdk-elasticache (1.41.0)
46
+ aws-sdk-core (~> 3, >= 3.99.0)
46
47
  aws-sigv4 (~> 1.1)
47
- aws-sdk-rds (1.85.0)
48
- aws-sdk-core (~> 3, >= 3.71.0)
48
+ aws-sdk-kms (1.37.0)
49
+ aws-sdk-core (~> 3, >= 3.99.0)
49
50
  aws-sigv4 (~> 1.1)
50
- aws-sdk-route53 (1.35.0)
51
- aws-sdk-core (~> 3, >= 3.71.0)
51
+ aws-sdk-rds (1.97.0)
52
+ aws-sdk-core (~> 3, >= 3.99.0)
52
53
  aws-sigv4 (~> 1.1)
53
- aws-sdk-s3 (1.67.1)
54
- aws-sdk-core (~> 3, >= 3.96.1)
54
+ aws-sdk-route53 (1.42.0)
55
+ aws-sdk-core (~> 3, >= 3.99.0)
56
+ aws-sigv4 (~> 1.1)
57
+ aws-sdk-s3 (1.79.1)
58
+ aws-sdk-core (~> 3, >= 3.104.3)
55
59
  aws-sdk-kms (~> 1)
56
60
  aws-sigv4 (~> 1.1)
57
- aws-sdk-sns (1.24.0)
58
- aws-sdk-core (~> 3, >= 3.71.0)
61
+ aws-sdk-sns (1.30.0)
62
+ aws-sdk-core (~> 3, >= 3.99.0)
59
63
  aws-sigv4 (~> 1.1)
60
- aws-sdk-ssm (1.80.0)
61
- aws-sdk-core (~> 3, >= 3.71.0)
64
+ aws-sdk-ssm (1.88.0)
65
+ aws-sdk-core (~> 3, >= 3.99.0)
62
66
  aws-sigv4 (~> 1.1)
63
- aws-sigv4 (1.1.4)
64
- aws-eventstream (~> 1.0, >= 1.0.2)
67
+ aws-sigv4 (1.2.2)
68
+ aws-eventstream (~> 1, >= 1.0.2)
65
69
  diff-lcs (1.3)
66
70
  httparty (0.16.3)
67
71
  mime-types (~> 3.0)
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
14
14
  s.add_runtime_dependency 'aws-sdk-autoscaling', '~> 1'
15
15
  s.add_runtime_dependency 'aws-sdk-cloudwatch', '~> 1'
16
16
  s.add_runtime_dependency 'aws-sdk-ec2', '~> 1'
17
+ s.add_runtime_dependency 'aws-sdk-eks', '~> 1'
17
18
  s.add_runtime_dependency 'aws-sdk-elasticache', '~> 1'
18
19
  s.add_runtime_dependency 'aws-sdk-rds', '~> 1'
19
20
  s.add_runtime_dependency 'aws-sdk-route53', '~> 1'
@@ -7,6 +7,7 @@ require_relative 'aws/route53'
7
7
  require_relative 'aws/ssm'
8
8
  require_relative 'aws/athena'
9
9
  require_relative 'aws/s3'
10
+ require_relative 'aws/eks'
10
11
  require_relative 'aws/elasticache'
11
12
  require_relative 'aws/api_gateway'
12
13
  require 'aws-sdk-cloudwatch'
@@ -24,6 +25,7 @@ module MovableInk
24
25
  include S3
25
26
  include ElastiCache
26
27
  include ApiGateway
28
+ include EKS
27
29
 
28
30
  class << self
29
31
  def regions
@@ -62,6 +64,7 @@ module MovableInk
62
64
  rescue Aws::EC2::Errors::RequestLimitExceeded,
63
65
  Aws::EC2::Errors::ResourceAlreadyAssociated,
64
66
  Aws::EC2::Errors::Unavailable,
67
+ Aws::EKS::Errors::TooManyRequestsException,
65
68
  Aws::SNS::Errors::ThrottledException,
66
69
  Aws::AutoScaling::Errors::Throttling,
67
70
  Aws::AutoScaling::Errors::ThrottledException,
@@ -71,6 +74,7 @@ module MovableInk
71
74
  Aws::Route53::Errors::PriorRequestNotComplete,
72
75
  Aws::Route53::Errors::ServiceUnavailable,
73
76
  Aws::SSM::Errors::TooManyUpdates,
77
+ Aws::SSM::Errors::ThrottlingException,
74
78
  Aws::Athena::Errors::ThrottlingException,
75
79
  MovableInk::AWS::Errors::NoEnvironmentTagError
76
80
  sleep_time = (num+1)**2 + rand(10)
@@ -9,13 +9,13 @@ module MovableInk
9
9
  end
10
10
 
11
11
  def mi_env_cache_file_path
12
- '/etc/movableink/mi_env'
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
- value = File.read(mi_env_cache_file_path)
18
- value.empty? ? load_mi_env : value
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
@@ -0,0 +1,60 @@
1
+ require 'aws-sdk-eks'
2
+ require 'yaml'
3
+
4
+ module MovableInk
5
+ class AWS
6
+ module EKS
7
+ def eks(region: my_region)
8
+ @eks_client ||= {}
9
+ @eks_client[region] ||= Aws::EKS::Client.new(region: region)
10
+ end
11
+
12
+ def generate_kubeconfig(region: my_region, cluster_name:)
13
+ client = eks(region: region)
14
+
15
+ resp = run_with_backoff do
16
+ begin
17
+ client.describe_cluster({ name: cluster_name })
18
+ rescue Aws::EKS::Errors::ResourceNotFoundException
19
+ return nil
20
+ end
21
+ end
22
+
23
+ cluster_arn = resp.cluster.arn
24
+ cluster_server_address = resp.cluster.endpoint
25
+ cluster_certificate_authority_data = resp.cluster.certificate_authority.data
26
+
27
+ {
28
+ 'apiVersion' => 'v1',
29
+ 'clusters' => [{
30
+ 'cluster' => {
31
+ 'certificate-authority-data' => cluster_certificate_authority_data,
32
+ 'server' => cluster_server_address,
33
+ },
34
+ 'name' => cluster_arn
35
+ }],
36
+ 'contexts' => [{
37
+ 'context' => {
38
+ 'cluster' => cluster_arn,
39
+ 'user' => cluster_arn,
40
+ },
41
+ 'name' => cluster_arn,
42
+ }],
43
+ 'current-context' => cluster_arn,
44
+ 'kind' => 'Config',
45
+ 'preferences' => {},
46
+ 'users' => [{
47
+ 'name' => cluster_arn,
48
+ 'user' => {
49
+ 'exec' => {
50
+ 'apiVersion' => 'client.authentication.k8s.io/v1alpha1',
51
+ 'args' => ['--region', region, 'eks', 'get-token', '--cluster-name', cluster_name],
52
+ 'command' => 'aws',
53
+ }
54
+ }
55
+ }]
56
+ }.to_yaml
57
+ end
58
+ end
59
+ end
60
+ end
@@ -1,5 +1,5 @@
1
1
  module MovableInk
2
2
  class AWS
3
- VERSION = '1.1.5'
3
+ VERSION = '1.3.0'
4
4
  end
5
5
  end
@@ -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('staging')
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.1.5
4
+ version: 1.3.0
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-08-04 00:00:00.000000000 Z
11
+ date: 2020-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: aws-sdk-eks
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: aws-sdk-elasticache
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -210,6 +224,7 @@ files:
210
224
  - lib/movable_ink/aws/athena.rb
211
225
  - lib/movable_ink/aws/autoscaling.rb
212
226
  - lib/movable_ink/aws/ec2.rb
227
+ - lib/movable_ink/aws/eks.rb
213
228
  - lib/movable_ink/aws/elasticache.rb
214
229
  - lib/movable_ink/aws/errors.rb
215
230
  - lib/movable_ink/aws/metadata.rb