fog-aws 3.7.0 → 3.8.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/.travis.yml +57 -0
- data/CHANGELOG.md +19 -4
- data/lib/fog/aws/models/storage/file.rb +3 -2
- data/lib/fog/aws/requests/storage/shared_mock_methods.rb +1 -0
- data/lib/fog/aws/requests/storage/upload_part_copy.rb +27 -0
- data/lib/fog/aws/version.rb +1 -1
- data/tests/requests/storage/multipart_copy_tests.rb +14 -1
- data/tests/requests/storage/object_tests.rb +7 -0
- 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: b7361a3fa82cc86bf32908aa54819a2efb8485e6639cbe9cd62a0e3bedb8e422
|
4
|
+
data.tar.gz: d0b4dea28aecb3a18b887ce40437baa868f38ebd83fa69e13ecf912d0aba3df8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d7602d22a1abab86581a0b4500c00b545af1264e46fac5648d70d0a2fc9dd157ffa37bf289b87aaa08836aa12d7f2cd67ea4437e2732796c7e089811ca2b029
|
7
|
+
data.tar.gz: 9e90b2ae4aeeb8170630825f49fa2500f56b45bcaa38dade2b72b7019a1db5d93d9634645301aa0706f1df25e118d03fe5b9e6a11e2a9f47e78e82dd9790cb7d
|
data/.travis.yml
CHANGED
@@ -29,6 +29,41 @@ matrix:
|
|
29
29
|
gemfile: gemfiles/Gemfile-edge
|
30
30
|
- rvm: jruby-head
|
31
31
|
gemfile: Gemfile
|
32
|
+
# ppc64le specific changes
|
33
|
+
- rvm: 2.3.0
|
34
|
+
gemfile: Gemfile
|
35
|
+
arch: ppc64le
|
36
|
+
- rvm: 2.3.0
|
37
|
+
arch: ppc64le
|
38
|
+
gemfile: gemfiles/Gemfile-edge
|
39
|
+
- rvm: 2.4.0
|
40
|
+
arch: ppc64le
|
41
|
+
gemfile: Gemfile
|
42
|
+
- rvm: 2.4.0
|
43
|
+
arch: ppc64le
|
44
|
+
gemfile: gemfiles/Gemfile-edge
|
45
|
+
- rvm: 2.5.0
|
46
|
+
arch: ppc64le
|
47
|
+
gemfile: Gemfile
|
48
|
+
- rvm: 2.5.0
|
49
|
+
arch: ppc64le
|
50
|
+
gemfile: gemfiles/Gemfile-edge
|
51
|
+
- rvm: 2.6.6
|
52
|
+
arch: ppc64le
|
53
|
+
gemfile: Gemfile
|
54
|
+
- rvm: 2.6.6
|
55
|
+
arch: ppc64le
|
56
|
+
gemfile: gemfiles/Gemfile-edge
|
57
|
+
- rvm: 2.7.2
|
58
|
+
arch: ppc64le
|
59
|
+
gemfile: Gemfile
|
60
|
+
- rvm: 2.7.2
|
61
|
+
arch: ppc64le
|
62
|
+
gemfile: gemfiles/Gemfile-edge
|
63
|
+
- rvm: jruby-head
|
64
|
+
arch: ppc64le
|
65
|
+
gemfile: Gemfile
|
66
|
+
|
32
67
|
allow_failures:
|
33
68
|
- rvm: jruby-head
|
34
69
|
gemfile: Gemfile
|
@@ -44,6 +79,28 @@ matrix:
|
|
44
79
|
gemfile: gemfiles/Gemfile-edge
|
45
80
|
- rvm: 2.7.2
|
46
81
|
gemfile: gemfiles/Gemfile-edge
|
82
|
+
# ppc64le specific changes
|
83
|
+
- rvm: jruby-head
|
84
|
+
arch: ppc64le
|
85
|
+
gemfile: Gemfile
|
86
|
+
- rvm: 2.2.0
|
87
|
+
arch: ppc64le
|
88
|
+
gemfile: gemfiles/Gemfile-edge
|
89
|
+
- rvm: 2.3.0
|
90
|
+
arch: ppc64le
|
91
|
+
gemfile: gemfiles/Gemfile-edge
|
92
|
+
- rvm: 2.4.0
|
93
|
+
arch: ppc64le
|
94
|
+
gemfile: gemfiles/Gemfile-edge
|
95
|
+
- rvm: 2.5.0
|
96
|
+
arch: ppc64le
|
97
|
+
gemfile: gemfiles/Gemfile-edge
|
98
|
+
- rvm: 2.6.6
|
99
|
+
arch: ppc64le
|
100
|
+
gemfile: gemfiles/Gemfile-edge
|
101
|
+
- rvm: 2.7.2
|
102
|
+
arch: ppc64le
|
103
|
+
gemfile: gemfiles/Gemfile-edge
|
47
104
|
notifications:
|
48
105
|
email: false
|
49
106
|
irc:
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,22 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [v3.8.0](https://github.com/fog/fog-aws/tree/v3.8.0)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/fog/fog-aws/compare/v3.7.0...v3.8.0)
|
6
|
+
|
7
|
+
**Closed issues:**
|
8
|
+
|
9
|
+
- Getting Auth failure Exception for non enabled AWS regions in AWS account. [\#585](https://github.com/fog/fog-aws/issues/585)
|
10
|
+
|
11
|
+
**Merged pull requests:**
|
12
|
+
|
13
|
+
- Filter unknown UploadPartCopy paramaters [\#589](https://github.com/fog/fog-aws/pull/589) ([stanhu](https://github.com/stanhu))
|
14
|
+
- Fix NameError in multipart copy [\#588](https://github.com/fog/fog-aws/pull/588) ([stanhu](https://github.com/stanhu))
|
15
|
+
- Rewind pointer if file is eof on put\_object mock [\#587](https://github.com/fog/fog-aws/pull/587) ([ekulz](https://github.com/ekulz))
|
16
|
+
- Update .travis.yml [\#584](https://github.com/fog/fog-aws/pull/584) ([nageshlop](https://github.com/nageshlop))
|
17
|
+
|
3
18
|
## [v3.7.0](https://github.com/fog/fog-aws/tree/v3.7.0) (2020-12-01)
|
4
|
-
[Full Changelog](https://github.com/fog/fog-aws/compare/v3.7.0
|
19
|
+
[Full Changelog](https://github.com/fog/fog-aws/compare/v3.6.7...v3.7.0)
|
5
20
|
|
6
21
|
**Closed issues:**
|
7
22
|
|
@@ -34,7 +49,6 @@
|
|
34
49
|
**Merged pull requests:**
|
35
50
|
|
36
51
|
- added missing region EU South \(Milan\) [\#570](https://github.com/fog/fog-aws/pull/570) ([saldan](https://github.com/saldan))
|
37
|
-
- hibernation option to compute [\#569](https://github.com/fog/fog-aws/pull/569) ([taniahagan](https://github.com/taniahagan))
|
38
52
|
- Fix VPC model is\_default requires [\#567](https://github.com/fog/fog-aws/pull/567) ([biinari](https://github.com/biinari))
|
39
53
|
|
40
54
|
## [v3.6.5](https://github.com/fog/fog-aws/tree/v3.6.5) (2020-05-22)
|
@@ -83,6 +97,7 @@
|
|
83
97
|
|
84
98
|
**Merged pull requests:**
|
85
99
|
|
100
|
+
- hibernation option to compute [\#569](https://github.com/fog/fog-aws/pull/569) ([taniahagan](https://github.com/taniahagan))
|
86
101
|
- Adding two missing regions to Fog::AWS.regions [\#552](https://github.com/fog/fog-aws/pull/552) ([lvangool](https://github.com/lvangool))
|
87
102
|
- Adds missing param WebIdentityToken for the request to the AWS api [\#550](https://github.com/fog/fog-aws/pull/550) ([dgoradia](https://github.com/dgoradia))
|
88
103
|
- Fixes type in class name for STS assume\_role\_with\_web\_identity parser [\#549](https://github.com/fog/fog-aws/pull/549) ([dgoradia](https://github.com/dgoradia))
|
@@ -363,6 +378,7 @@
|
|
363
378
|
- Fog mock accuracy, fixes \#341 [\#344](https://github.com/fog/fog-aws/pull/344) ([easkay](https://github.com/easkay))
|
364
379
|
- Subnet [\#343](https://github.com/fog/fog-aws/pull/343) ([ehowe](https://github.com/ehowe))
|
365
380
|
- Fix multipart upload [\#340](https://github.com/fog/fog-aws/pull/340) ([nobmurakita](https://github.com/nobmurakita))
|
381
|
+
- credential\_fetcher: Mark AWS metadata calls as idempotent [\#329](https://github.com/fog/fog-aws/pull/329) ([mtekel](https://github.com/mtekel))
|
366
382
|
|
367
383
|
## [v1.2.0](https://github.com/fog/fog-aws/tree/v1.2.0) (2017-01-20)
|
368
384
|
[Full Changelog](https://github.com/fog/fog-aws/compare/v1.1.0...v1.2.0)
|
@@ -390,14 +406,13 @@
|
|
390
406
|
- Canada and London regions [\#333](https://github.com/fog/fog-aws/pull/333) ([mattheworiordan](https://github.com/mattheworiordan))
|
391
407
|
- Updated ELB Dual Stack hosted zone DNS records [\#332](https://github.com/fog/fog-aws/pull/332) ([mattheworiordan](https://github.com/mattheworiordan))
|
392
408
|
- Added support for attaching auto scaling groups to target groups [\#330](https://github.com/fog/fog-aws/pull/330) ([maf23](https://github.com/maf23))
|
393
|
-
-
|
409
|
+
- fix host header with another port on s3 [\#327](https://github.com/fog/fog-aws/pull/327) ([rodrigoapereira](https://github.com/rodrigoapereira))
|
394
410
|
|
395
411
|
## [v1.0.0](https://github.com/fog/fog-aws/tree/v1.0.0) (2016-12-12)
|
396
412
|
[Full Changelog](https://github.com/fog/fog-aws/compare/v0.13.0...v1.0.0)
|
397
413
|
|
398
414
|
**Merged pull requests:**
|
399
415
|
|
400
|
-
- fix host header with another port on s3 [\#327](https://github.com/fog/fog-aws/pull/327) ([rodrigoapereira](https://github.com/rodrigoapereira))
|
401
416
|
- Add new t2.xlarge, t2.2xlarge and r4 class instances. [\#326](https://github.com/fog/fog-aws/pull/326) ([rogersd](https://github.com/rogersd))
|
402
417
|
- Fix the bug that can't create fifo queue in SQS. [\#323](https://github.com/fog/fog-aws/pull/323) ([ebihara99999](https://github.com/ebihara99999))
|
403
418
|
- data pipeline mocks [\#318](https://github.com/fog/fog-aws/pull/318) ([ehowe](https://github.com/ehowe))
|
@@ -148,7 +148,8 @@ module Fog
|
|
148
148
|
self.multipart_chunk_size = MIN_MULTIPART_CHUNK_SIZE * 2 if !multipart_chunk_size && self.content_length.to_i > MAX_SINGLE_PUT_SIZE
|
149
149
|
|
150
150
|
if multipart_chunk_size && self.content_length.to_i >= multipart_chunk_size
|
151
|
-
upload_part_options = options.
|
151
|
+
upload_part_options = options.select { |key, _| ALLOWED_UPLOAD_PART_OPTIONS.include?(key.to_sym) }
|
152
|
+
upload_part_options = upload_part_options.merge({ 'x-amz-copy-source' => "#{directory.key}/#{key}" })
|
152
153
|
multipart_copy(options, upload_part_options, target_directory_key, target_file_key)
|
153
154
|
else
|
154
155
|
service.copy_object(directory.key, key, target_directory_key, target_file_key, options)
|
@@ -360,7 +361,7 @@ module Fog
|
|
360
361
|
completed = PartList.new
|
361
362
|
errors = upload_in_threads(target_directory_key, target_file_key, upload_id, pending, completed, thread_count)
|
362
363
|
|
363
|
-
raise
|
364
|
+
raise errors.first if errors.any?
|
364
365
|
|
365
366
|
part_tags = completed.to_a.sort_by { |part| part.part_number }.map(&:etag)
|
366
367
|
rescue => e
|
@@ -1,6 +1,25 @@
|
|
1
1
|
module Fog
|
2
2
|
module AWS
|
3
3
|
class Storage
|
4
|
+
# From https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
|
5
|
+
ALLOWED_UPLOAD_PART_OPTIONS = %i(
|
6
|
+
x-amz-copy-source
|
7
|
+
x-amz-copy-source-if-match
|
8
|
+
x-amz-copy-source-if-modified-since
|
9
|
+
x-amz-copy-source-if-none-match
|
10
|
+
x-amz-copy-source-if-unmodified-since
|
11
|
+
x-amz-copy-source-range
|
12
|
+
x-amz-copy-source-server-side-encryption-customer-algorithm
|
13
|
+
x-amz-copy-source-server-side-encryption-customer-key
|
14
|
+
x-amz-copy-source-server-side-encryption-customer-key-MD5
|
15
|
+
x-amz-expected-bucket-owner
|
16
|
+
x-amz-request-payer
|
17
|
+
x-amz-server-side-encryption-customer-algorithm
|
18
|
+
x-amz-server-side-encryption-customer-key
|
19
|
+
x-amz-server-side-encryption-customer-key-MD5
|
20
|
+
x-amz-source-expected-bucket-owner
|
21
|
+
).freeze
|
22
|
+
|
4
23
|
class Real
|
5
24
|
require 'fog/aws/parsers/storage/upload_part_copy_object'
|
6
25
|
|
@@ -45,6 +64,8 @@ module Fog
|
|
45
64
|
include Fog::AWS::Storage::SharedMockMethods
|
46
65
|
|
47
66
|
def upload_part_copy(target_bucket_name, target_object_name, upload_id, part_number, options = {})
|
67
|
+
validate_options!(options)
|
68
|
+
|
48
69
|
copy_source = options['x-amz-copy-source']
|
49
70
|
copy_range = options['x-amz-copy-source-range']
|
50
71
|
|
@@ -86,6 +107,12 @@ module Fog
|
|
86
107
|
|
87
108
|
[matches[1].to_i, end_pos]
|
88
109
|
end
|
110
|
+
|
111
|
+
def validate_options!(options)
|
112
|
+
options.keys.each do |key|
|
113
|
+
raise "Invalid UploadPart option: #{key}" unless ::Fog::AWS::Storage::ALLOWED_UPLOAD_PART_OPTIONS.include?(key.to_sym)
|
114
|
+
end
|
115
|
+
end
|
89
116
|
end # Mock
|
90
117
|
end # Storage
|
91
118
|
end # AWS
|
data/lib/fog/aws/version.rb
CHANGED
@@ -3,7 +3,7 @@ require 'securerandom'
|
|
3
3
|
Shindo.tests('Fog::Storage[:aws] | copy requests', ["aws"]) do
|
4
4
|
|
5
5
|
@directory = Fog::Storage[:aws].directories.create(:key => uniq_id('fogmultipartcopytests'))
|
6
|
-
@large_data = SecureRandom.hex *
|
6
|
+
@large_data = SecureRandom.hex * 600000
|
7
7
|
@large_blob = Fog::Storage[:aws].put_object(@directory.identity, 'large_object', @large_data)
|
8
8
|
|
9
9
|
tests('copies an empty object') do
|
@@ -77,4 +77,17 @@ Shindo.tests('Fog::Storage[:aws] | copy requests', ["aws"]) do
|
|
77
77
|
|
78
78
|
test("copied is the same") { copied.body == file.body }
|
79
79
|
end
|
80
|
+
|
81
|
+
tests('copies an object with unknown headers') do
|
82
|
+
file = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('large_object')
|
83
|
+
file.multipart_chunk_size = Fog::AWS::Storage::File::MIN_MULTIPART_CHUNK_SIZE
|
84
|
+
file.concurrency = 10
|
85
|
+
|
86
|
+
tests("#copy_object('#{@directory.identity}', 'copied_object'").succeeds do
|
87
|
+
file.copy(@directory.identity, 'copied_object', { unknown: 1 } )
|
88
|
+
end
|
89
|
+
|
90
|
+
copied = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('copied_object')
|
91
|
+
test("copied is the same") { copied.body == file.body }
|
92
|
+
end
|
80
93
|
end
|
@@ -18,6 +18,13 @@ Shindo.tests('AWS::Storage | object requests', ['aws']) do
|
|
18
18
|
Fog::Storage[:aws].put_object(@directory.identity, 'fog_object', lorem_file)
|
19
19
|
end
|
20
20
|
|
21
|
+
tests("#put_object('#{@directory.identity}', 'fog_object', lorem_file at EOF)").returns(lorem_file.read) do
|
22
|
+
file = lorem_file
|
23
|
+
file.read
|
24
|
+
Fog::Storage[:aws].put_object(@directory.identity, 'fog_object', file)
|
25
|
+
Fog::Storage[:aws].get_object(@directory.identity, 'fog_object').body
|
26
|
+
end
|
27
|
+
|
21
28
|
tests("#copy_object('#{@directory.identity}', 'fog_object', '#{@directory.identity}', 'fog_other_object')").succeeds do
|
22
29
|
Fog::Storage[:aws].copy_object(@directory.identity, 'fog_object', @directory.identity, 'fog_other_object')
|
23
30
|
end
|
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: 3.
|
4
|
+
version: 3.8.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:
|
12
|
+
date: 2021-01-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|