MovableInkAWS 0.1.7 → 0.1.8

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: 70c7161f12a2166192760b49a13d6471cf932d6add3c4fa8000fd371968ad4ff
4
- data.tar.gz: eabe1300e40c7f0a495288c6c2aa7bacde4d94daeb0ae2f8c31bebe061630673
3
+ metadata.gz: 1017fd4533c1f9b954f1f1f4406c1ccd43577c699225b5c24efb60673cf7c77d
4
+ data.tar.gz: 8e6d6842f44ba620ae8471e1dfd914cfcdb9a4d579408f9bca06b0d504d8ef6a
5
5
  SHA512:
6
- metadata.gz: 9a459ba6e2dce6df83d950557d08f9dc5f8ee9eb81946ec2b213270019063d5f6a8bdf6329589af5f2e5c89dd598da016a2b380818ac07bbe479ed470f40a030
7
- data.tar.gz: d7599a25f9be94a0a89e9f6a19c5d88fa808757d8e7b87f7b2149086bec0c5cdae771593f4489ea2179d65da585fd21f1ca858a9efbaa7101d0913ae3c0b48a0
6
+ metadata.gz: 554ba89ad8f58564096c006702862ab7fed8b40568fdbc2295093596f3f4ff0fad5523b14ca588b2c45840e71a2dc62be702c82e7de582e36ff3bdf760f57679
7
+ data.tar.gz: 5bebb37a8deaa719bf5476039f17f21244c04729cbb296ac31fbc4130c85ffd6a886d6ed798f55a16b8b66e5d73e3491d3fac8355226f2e289b694e8f3d61d7a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- MovableInkAWS (0.1.7)
4
+ MovableInkAWS (0.1.8)
5
5
  aws-sdk (~> 2.11, >= 2.11.0)
6
6
 
7
7
  GEM
@@ -6,6 +6,8 @@ require_relative 'aws/sns'
6
6
  require_relative 'aws/autoscaling'
7
7
  require_relative 'aws/route53'
8
8
  require_relative 'aws/ssm'
9
+ require_relative 'aws/athena'
10
+ require_relative 'aws/s3'
9
11
 
10
12
  module MovableInk
11
13
  class AWS
@@ -14,6 +16,8 @@ module MovableInk
14
16
  include Autoscaling
15
17
  include Route53
16
18
  include SSM
19
+ include Athena
20
+ include S3
17
21
 
18
22
  class << self
19
23
  def regions
@@ -41,6 +45,7 @@ module MovableInk
41
45
  Aws::Route53::Errors::ThrottlingException,
42
46
  Aws::Route53::Errors::ServiceError,
43
47
  Aws::SSM::Errors::TooManyUpdates,
48
+ Aws::Athena::Errors::ThrottlingException,
44
49
  MovableInk::AWS::Errors::NoEnvironmentTagError
45
50
  sleep_time = (num+1)**2 + rand(10)
46
51
  if quiet
@@ -72,9 +77,5 @@ module MovableInk
72
77
  def datacenter(region: my_region)
73
78
  regions.key(region)
74
79
  end
75
-
76
- def s3
77
- @s3_client ||= Aws::S3::Client.new(region: 'us-east-1')
78
- end
79
80
  end
80
81
  end
@@ -0,0 +1,10 @@
1
+ module MovableInk
2
+ class AWS
3
+ module Athena
4
+ def athena(region: my_region)
5
+ @athena_client ||= {}
6
+ @athena_client[region] ||= Aws::Athena::Client.new(region: region)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ module MovableInk
2
+ class AWS
3
+ module S3
4
+ def s3
5
+ @s3_client ||= Aws::S3::Client.new(region: 'us-east-1')
6
+ end
7
+
8
+ def directory_exists?(bucket:, prefix:)
9
+ !run_with_backoff { s3.list_objects_v2(bucket: bucket, prefix: prefix, max_keys: 1).contents.empty? }
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  module MovableInk
2
2
  class AWS
3
- VERSION = '0.1.7'
3
+ VERSION = '0.1.8'
4
4
  end
5
5
  end
@@ -1,4 +1,3 @@
1
- require 'aws-sdk'
2
1
  require_relative '../lib/movable_ink/aws'
3
2
 
4
3
  describe MovableInk::AWS::Autoscaling do
data/spec/aws_spec.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'aws-sdk'
2
1
  require_relative '../lib/movable_ink/aws'
3
2
 
4
3
  describe MovableInk::AWS do
data/spec/ec2_spec.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'aws-sdk'
2
1
  require_relative '../lib/movable_ink/aws'
3
2
 
4
3
  describe MovableInk::AWS::EC2 do
data/spec/route53_spec.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'aws-sdk'
2
1
  require_relative '../lib/movable_ink/aws'
3
2
 
4
3
  describe MovableInk::AWS::Route53 do
data/spec/s3_spec.rb ADDED
@@ -0,0 +1,42 @@
1
+ require_relative '../lib/movable_ink/aws'
2
+
3
+ describe MovableInk::AWS::S3 do
4
+ let(:aws) { MovableInk::AWS.new }
5
+ let(:s3) { Aws::S3::Client.new(stub_responses: true) }
6
+
7
+ describe "#directory_exists?" do
8
+ let(:existing_folder) { s3.stub_data(:list_objects_v2,
9
+ contents: [{
10
+ key: "foo/file",
11
+ }],
12
+ name: "bucket",
13
+ prefix: "foo/",
14
+ delimiter: "/",
15
+ max_keys: 1,
16
+ )}
17
+ let(:nonexistant_folder) { s3.stub_data(:list_objects_v2,
18
+ contents: [],
19
+ name: "bucket",
20
+ prefix: "bar/",
21
+ delimiter: "/",
22
+ max_keys: 1,
23
+ )}
24
+
25
+ before(:each) do
26
+ allow(aws).to receive(:mi_env).and_return('test')
27
+ allow(aws).to receive(:s3).and_return(s3)
28
+ end
29
+
30
+ it "should return true if an S3 directory exists" do
31
+ s3.stub_responses(:list_objects_v2, existing_folder)
32
+
33
+ expect(aws.directory_exists?(bucket: "bucket", prefix: "foo/")).to eq(true)
34
+ end
35
+
36
+ it "should return false if an S3 directory doesn't exist" do
37
+ s3.stub_responses(:list_objects_v2, nonexistant_folder)
38
+
39
+ expect(aws.directory_exists?(bucket: "bucket", prefix: "bar/")).to eq(false)
40
+ end
41
+ end
42
+ end
data/spec/sns_spec.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'aws-sdk'
2
1
  require_relative '../lib/movable_ink/aws'
3
2
 
4
3
  describe MovableInk::AWS::SNS do
data/spec/ssm_spec.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'aws-sdk'
2
1
  require_relative '../lib/movable_ink/aws'
3
2
 
4
3
  describe MovableInk::AWS::SSM do
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: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Chesler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-31 00:00:00.000000000 Z
11
+ date: 2018-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -42,10 +42,12 @@ files:
42
42
  - MovableInkAWS.gemspec
43
43
  - README.md
44
44
  - lib/movable_ink/aws.rb
45
+ - lib/movable_ink/aws/athena.rb
45
46
  - lib/movable_ink/aws/autoscaling.rb
46
47
  - lib/movable_ink/aws/ec2.rb
47
48
  - lib/movable_ink/aws/errors.rb
48
49
  - lib/movable_ink/aws/route53.rb
50
+ - lib/movable_ink/aws/s3.rb
49
51
  - lib/movable_ink/aws/sns.rb
50
52
  - lib/movable_ink/aws/ssm.rb
51
53
  - lib/movable_ink/version.rb
@@ -53,6 +55,7 @@ files:
53
55
  - spec/aws_spec.rb
54
56
  - spec/ec2_spec.rb
55
57
  - spec/route53_spec.rb
58
+ - spec/s3_spec.rb
56
59
  - spec/sns_spec.rb
57
60
  - spec/ssm_spec.rb
58
61
  homepage: