fog-aws 1.3.0 → 1.4.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 +4 -4
- data/CHANGELOG.md +23 -1
- data/lib/fog-aws.rb +1 -0
- data/lib/fog/aws/compute.rb +20 -5
- data/lib/fog/aws/credential_fetcher.rb +4 -6
- data/lib/fog/aws/models/compute/flavors.rb +30 -0
- data/lib/fog/aws/models/storage/file.rb +5 -0
- data/lib/fog/aws/parsers/storage/get_bucket.rb +1 -1
- data/lib/fog/aws/version.rb +1 -1
- data/tests/models/storage/file_tests.rb +12 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6337216d400d2563de64b38f700c73f5c35c1b9d
|
4
|
+
data.tar.gz: 014d339b4064fe6d22b6114817225778c3b131ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52648d0ea0a5f618477d8db41edf397064796c475871b857a916650c1b7d3f295dd094f286a7b5cdc7c816e57379b4d1e3545e8b2b26bd8a67561e6d4275932e
|
7
|
+
data.tar.gz: 36a0947508b7d40a7ff78b20763a84ece69d7b7b439fcc2e15d34743f99d934ed4f761d2d3971e08131f2b4e334071332096034915a197a01458895d0a7fad66
|
data/CHANGELOG.md
CHANGED
@@ -2,7 +2,29 @@
|
|
2
2
|
|
3
3
|
## [Unreleased](https://github.com/fog/fog-aws/tree/HEAD)
|
4
4
|
|
5
|
-
[Full Changelog](https://github.com/fog/fog-aws/compare/v1.
|
5
|
+
[Full Changelog](https://github.com/fog/fog-aws/compare/v1.3.0...HEAD)
|
6
|
+
|
7
|
+
**Closed issues:**
|
8
|
+
|
9
|
+
- Support REST Bucket Get v2 [\#369](https://github.com/fog/fog-aws/issues/369)
|
10
|
+
- Fog::AWS::IAM::Error: InvalidAction =\> Could not find operation "ReplaceIamInstanceProfileAssociation" for version 2010-05-08 [\#368](https://github.com/fog/fog-aws/issues/368)
|
11
|
+
- Multipart upload fails on empty files [\#364](https://github.com/fog/fog-aws/issues/364)
|
12
|
+
- The action `ModifyVolume` is not valid for this web service. [\#363](https://github.com/fog/fog-aws/issues/363)
|
13
|
+
- Tag instances upon creation of new instance [\#359](https://github.com/fog/fog-aws/issues/359)
|
14
|
+
- Cache/read local amazon data [\#354](https://github.com/fog/fog-aws/issues/354)
|
15
|
+
|
16
|
+
**Merged pull requests:**
|
17
|
+
|
18
|
+
- add NextContinuationToken support to GetBucket operation [\#370](https://github.com/fog/fog-aws/pull/370) ([khoan](https://github.com/khoan))
|
19
|
+
- Add a top-level require that matches the gem name [\#367](https://github.com/fog/fog-aws/pull/367) ([lanej](https://github.com/lanej))
|
20
|
+
- Fixed credential refresh when instance metadata host is inaccessible [\#366](https://github.com/fog/fog-aws/pull/366) ([ankane](https://github.com/ankane))
|
21
|
+
- Handle multipart upload of empty files [\#365](https://github.com/fog/fog-aws/pull/365) ([fcheung](https://github.com/fcheung))
|
22
|
+
- Add p2 instance types [\#362](https://github.com/fog/fog-aws/pull/362) ([Caged](https://github.com/Caged))
|
23
|
+
- Exponential backoff [\#361](https://github.com/fog/fog-aws/pull/361) ([VVMichaelSawyer](https://github.com/VVMichaelSawyer))
|
24
|
+
- Skip call to instance metadata host if region is specified [\#360](https://github.com/fog/fog-aws/pull/360) ([ankane](https://github.com/ankane))
|
25
|
+
|
26
|
+
## [v1.3.0](https://github.com/fog/fog-aws/tree/v1.3.0) (2017-03-29)
|
27
|
+
[Full Changelog](https://github.com/fog/fog-aws/compare/v1.2.1...v1.3.0)
|
6
28
|
|
7
29
|
**Closed issues:**
|
8
30
|
|
data/lib/fog-aws.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'fog/aws'
|
data/lib/fog/aws/compute.rb
CHANGED
@@ -3,6 +3,8 @@ module Fog
|
|
3
3
|
class AWS < Fog::Service
|
4
4
|
extend Fog::AWS::CredentialFetcher::ServiceMethods
|
5
5
|
|
6
|
+
class RequestLimitExceeded < Fog::Errors::Error; end
|
7
|
+
|
6
8
|
requires :aws_access_key_id, :aws_secret_access_key
|
7
9
|
recognizes :endpoint, :region, :host, :path, :port, :scheme, :persistent, :aws_session_token, :use_iam_profile, :aws_credentials_expire_at, :instrumentor, :instrumentor_name, :version
|
8
10
|
|
@@ -537,7 +539,11 @@ module Fog
|
|
537
539
|
end
|
538
540
|
end
|
539
541
|
|
540
|
-
def _request(body, headers, idempotent, parser)
|
542
|
+
def _request(body, headers, idempotent, parser, retries = 0)
|
543
|
+
|
544
|
+
max_retries = 10
|
545
|
+
|
546
|
+
begin
|
541
547
|
@connection.request({
|
542
548
|
:body => body,
|
543
549
|
:expects => 200,
|
@@ -546,15 +552,24 @@ module Fog
|
|
546
552
|
:method => 'POST',
|
547
553
|
:parser => parser
|
548
554
|
})
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
555
|
+
rescue Excon::Errors::HTTPStatusError => error
|
556
|
+
match = Fog::AWS::Errors.match_error(error)
|
557
|
+
raise if match.empty?
|
558
|
+
raise case match[:code]
|
553
559
|
when 'NotFound', 'Unknown'
|
554
560
|
Fog::Compute::AWS::NotFound.slurp(error, match[:message])
|
561
|
+
when 'RequestLimitExceeded'
|
562
|
+
if retries < max_retries
|
563
|
+
sleep (2.0 ** (1.0 + retries) * 100) / 1000.0
|
564
|
+
retries += 1
|
565
|
+
retry
|
566
|
+
else
|
567
|
+
Fog::Compute::AWS::RequestLimitExceeded.slurp(error, "Max retries exceeded (#{max_retries}) #{match[:code]} => #{match[:message]}")
|
568
|
+
end
|
555
569
|
else
|
556
570
|
Fog::Compute::AWS::Error.slurp(error, "#{match[:code]} => #{match[:message]}")
|
557
571
|
end
|
572
|
+
end
|
558
573
|
end
|
559
574
|
end
|
560
575
|
end
|
@@ -16,7 +16,7 @@ module Fog
|
|
16
16
|
if options[:use_iam_profile]
|
17
17
|
begin
|
18
18
|
role_data = nil
|
19
|
-
|
19
|
+
region = options[:region]
|
20
20
|
|
21
21
|
if ENV["AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"]
|
22
22
|
connection = options[:connection] || Excon.new(CONTAINER_CREDENTIALS_HOST)
|
@@ -24,16 +24,14 @@ module Fog
|
|
24
24
|
role_data = connection.get(:path => credential_path, :idempotent => true, :expects => 200).body
|
25
25
|
|
26
26
|
connection = options[:metadata_connection] || Excon.new(INSTANCE_METADATA_HOST)
|
27
|
-
|
27
|
+
region ||= connection.get(:path => INSTANCE_METADATA_AZ, :idempotent => true, :expects => 200).body[0..-2]
|
28
28
|
else
|
29
29
|
connection = options[:connection] || Excon.new(INSTANCE_METADATA_HOST)
|
30
30
|
role_name = connection.get(:path => INSTANCE_METADATA_PATH, :idempotent => true, :expects => 200).body
|
31
31
|
role_data = connection.get(:path => INSTANCE_METADATA_PATH+role_name, :idempotent => true, :expects => 200).body
|
32
|
-
|
32
|
+
region ||= connection.get(:path => INSTANCE_METADATA_AZ, :idempotent => true, :expects => 200).body[0..-2]
|
33
33
|
end
|
34
34
|
|
35
|
-
region = az_data[0..-2] # get region from az
|
36
|
-
|
37
35
|
session = Fog::JSON.decode(role_data)
|
38
36
|
credentials = {}
|
39
37
|
credentials[:aws_access_key_id] = session['AccessKeyId']
|
@@ -70,7 +68,7 @@ module Fog
|
|
70
68
|
|
71
69
|
def refresh_credentials
|
72
70
|
if @use_iam_profile
|
73
|
-
new_credentials = service.fetch_credentials :use_iam_profile => @use_iam_profile
|
71
|
+
new_credentials = service.fetch_credentials :use_iam_profile => @use_iam_profile, :region => @region
|
74
72
|
if new_credentials.any?
|
75
73
|
setup_credentials new_credentials
|
76
74
|
return true
|
@@ -683,6 +683,36 @@ module Fog
|
|
683
683
|
:disk => 0,
|
684
684
|
:ebs_optimized_available => true,
|
685
685
|
:instance_store_volumes => 0
|
686
|
+
},
|
687
|
+
{
|
688
|
+
:id => "p2.xlarge",
|
689
|
+
:name => "General Purpose GPU Extra Large",
|
690
|
+
:bits => 64,
|
691
|
+
:cores => 2496,
|
692
|
+
:ram => 65498,
|
693
|
+
:disk => 0,
|
694
|
+
:ebs_optimized_available => true,
|
695
|
+
:instance_store_volumes => 0
|
696
|
+
},
|
697
|
+
{
|
698
|
+
:id => "p2.8xlarge",
|
699
|
+
:name => "General Purpose GPU Eight Extra Large",
|
700
|
+
:bits => 64,
|
701
|
+
:cores => 19968,
|
702
|
+
:ram => 523986,
|
703
|
+
:disk => 0,
|
704
|
+
:ebs_optimized_available => true,
|
705
|
+
:instance_store_volumes => 0
|
706
|
+
},
|
707
|
+
{
|
708
|
+
:id => "p2.16xlarge",
|
709
|
+
:name => "General Purpose GPU Sixteen Extra Large",
|
710
|
+
:bits => 64,
|
711
|
+
:cores => 39936,
|
712
|
+
:ram => 785979,
|
713
|
+
:disk => 0,
|
714
|
+
:ebs_optimized_available => true,
|
715
|
+
:instance_store_volumes => 0
|
686
716
|
}
|
687
717
|
]
|
688
718
|
|
@@ -276,6 +276,11 @@ module Fog
|
|
276
276
|
part_tags << part_upload.headers["ETag"]
|
277
277
|
end
|
278
278
|
|
279
|
+
if part_tags.empty? #it is an error to have a multipart upload with no parts
|
280
|
+
part_upload = service.upload_part(directory.key, key, upload_id, 1, '', part_headers('', options))
|
281
|
+
part_tags << part_upload.headers["ETag"]
|
282
|
+
end
|
283
|
+
|
279
284
|
rescue
|
280
285
|
# Abort the upload & reraise
|
281
286
|
service.abort_multipart_upload(directory.key, key, upload_id) if upload_id
|
data/lib/fog/aws/version.rb
CHANGED
@@ -74,6 +74,18 @@ Shindo.tests("Storage[:aws] | file", ["aws"]) do
|
|
74
74
|
|
75
75
|
end
|
76
76
|
|
77
|
+
tests("multipart upload with empty file") do
|
78
|
+
pending if Fog.mocking?
|
79
|
+
|
80
|
+
@empty_file = Tempfile.new("fog-test-aws-s3-multipart-empty")
|
81
|
+
|
82
|
+
tests("#save(:multipart_chunk_size => 5242880)").succeeds do
|
83
|
+
@directory.files.create(:key => 'empty-multipart-upload', :body => @empty_file, :multipart_chunk_size => 5242880)
|
84
|
+
end
|
85
|
+
|
86
|
+
@empty_file.close
|
87
|
+
end
|
88
|
+
|
77
89
|
tests("multipart upload with customer encryption").returns(true) do
|
78
90
|
pending if Fog.mocking?
|
79
91
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fog-aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Lane
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-06-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -147,6 +147,7 @@ files:
|
|
147
147
|
- gemfiles/Gemfile-ruby-1.8.7
|
148
148
|
- gemfiles/Gemfile-ruby-1.9
|
149
149
|
- gemfiles/Gemfile-ruby-2.0
|
150
|
+
- lib/fog-aws.rb
|
150
151
|
- lib/fog/aws.rb
|
151
152
|
- lib/fog/aws/auto_scaling.rb
|
152
153
|
- lib/fog/aws/beanstalk.rb
|
@@ -1698,7 +1699,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1698
1699
|
version: '0'
|
1699
1700
|
requirements: []
|
1700
1701
|
rubyforge_project:
|
1701
|
-
rubygems_version: 2.
|
1702
|
+
rubygems_version: 2.6.12
|
1702
1703
|
signing_key:
|
1703
1704
|
specification_version: 4
|
1704
1705
|
summary: Module for the 'fog' gem to support Amazon Web Services.
|