fog-aws 3.6.3 → 3.7.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: 9dea4e752400d125510799d22baef7ef0070ec79ca82ca0a69b486c9c70ad101
4
- data.tar.gz: a114a750ceae8289eca40561c0f9ff287b22da510d1aad328e9691f5245b7a9d
3
+ metadata.gz: 9ac0628bad4edf849a2b1395bd829d18ae77bff352841e68fbc7ecdb475ef82b
4
+ data.tar.gz: 5a545b7e8ad44c321273fac7b87b11b79be3a9af1c2d038b2790ea95c529df30
5
5
  SHA512:
6
- metadata.gz: 83ea3407d7642e2dec7ac3263be136bb573f6e5b9d7f41a57ea3f223a8037eebd7a8f41aaf310d4523ae814af4c20ec1069a40629df92870a245033730cb98c2
7
- data.tar.gz: 48580b9cb5e5668ef9e7b8356b6efa58aa3391936222148a4cabbc5f45b08bf77334669877d57435b765cbf8a84218a79a01eac657cda73beda06b3382cafb33
6
+ metadata.gz: 06156a44eec55618672a3d5beed5d35c0e7195ba07a3a515e944db462edbd6b4e56f6ff693bd5dd0013090c2083f395cf9f310013a164d3a3163c7ea82f96b9e
7
+ data.tar.gz: ebf606599061ed26cf2f1995e91690aebb7b409b15fe1d6ee465ef3e36a87b9c714e376e9bf6fee9c276a45a994972d94a24ef49d27f92e8b64ee6a47a9ae082
@@ -19,6 +19,14 @@ matrix:
19
19
  gemfile: Gemfile
20
20
  - rvm: 2.5.0
21
21
  gemfile: gemfiles/Gemfile-edge
22
+ - rvm: 2.6.6
23
+ gemfile: Gemfile
24
+ - rvm: 2.6.6
25
+ gemfile: gemfiles/Gemfile-edge
26
+ - rvm: 2.7.2
27
+ gemfile: Gemfile
28
+ - rvm: 2.7.2
29
+ gemfile: gemfiles/Gemfile-edge
22
30
  - rvm: jruby-head
23
31
  gemfile: Gemfile
24
32
  allow_failures:
@@ -32,6 +40,10 @@ matrix:
32
40
  gemfile: gemfiles/Gemfile-edge
33
41
  - rvm: 2.5.0
34
42
  gemfile: gemfiles/Gemfile-edge
43
+ - rvm: 2.6.6
44
+ gemfile: gemfiles/Gemfile-edge
45
+ - rvm: 2.7.2
46
+ gemfile: gemfiles/Gemfile-edge
35
47
  notifications:
36
48
  email: false
37
49
  irc:
@@ -1,5 +1,77 @@
1
1
  # Change Log
2
2
 
3
+ ## [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...HEAD)
5
+
6
+ **Closed issues:**
7
+
8
+ - File\#copy does not support files above 5 GB [\#577](https://github.com/fog/fog-aws/issues/577)
9
+ - fog-aws: AWS extended length resource ID issues \(8-\>18\) [\#517](https://github.com/fog/fog-aws/issues/517)
10
+
11
+ **Merged pull requests:**
12
+
13
+ - Add all m6gd, r6g, r6gd, c6g, and c6gd instance classes [\#582](https://github.com/fog/fog-aws/pull/582) ([calebwoofenden](https://github.com/calebwoofenden))
14
+ - Test Ruby v2.6.6 and v2.7.2 in CI [\#581](https://github.com/fog/fog-aws/pull/581) ([stanhu](https://github.com/stanhu))
15
+ - Add multi-threaded support for File\#copy [\#579](https://github.com/fog/fog-aws/pull/579) ([stanhu](https://github.com/stanhu))
16
+ - Add support for multipart Fog::AWS::Storage::File\#copy [\#578](https://github.com/fog/fog-aws/pull/578) ([stanhu](https://github.com/stanhu))
17
+ - Add AssumeRoleWithWebIdentity to fetch\_credentials [\#576](https://github.com/fog/fog-aws/pull/576) ([jpac-run](https://github.com/jpac-run))
18
+
19
+ ## [v3.6.7](https://github.com/fog/fog-aws/tree/v3.6.7) (2020-08-26)
20
+ [Full Changelog](https://github.com/fog/fog-aws/compare/v3.6.6...v3.6.7)
21
+
22
+ **Merged pull requests:**
23
+
24
+ - S3 dot Region endpoint structure applied [\#574](https://github.com/fog/fog-aws/pull/574) ([gharutyunyan-vineti](https://github.com/gharutyunyan-vineti))
25
+
26
+ ## [v3.6.6](https://github.com/fog/fog-aws/tree/v3.6.6) (2020-06-23)
27
+ [Full Changelog](https://github.com/fog/fog-aws/compare/v3.6.5...v3.6.6)
28
+
29
+ **Closed issues:**
30
+
31
+ - max\_keys param in storage.directories.get.... what am I missing? [\#568](https://github.com/fog/fog-aws/issues/568)
32
+ - Fog Logs? [\#561](https://github.com/fog/fog-aws/issues/561)
33
+
34
+ **Merged pull requests:**
35
+
36
+ - 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
+ - Fix VPC model is\_default requires [\#567](https://github.com/fog/fog-aws/pull/567) ([biinari](https://github.com/biinari))
39
+
40
+ ## [v3.6.5](https://github.com/fog/fog-aws/tree/v3.6.5) (2020-05-22)
41
+ [Full Changelog](https://github.com/fog/fog-aws/compare/v3.6.4...v3.6.5)
42
+
43
+ **Closed issues:**
44
+
45
+ - Fog::Compute::AWS is deprecated, please use Fog::AWS::Compute warning [\#565](https://github.com/fog/fog-aws/issues/565)
46
+ - Duplicate compute flavours [\#563](https://github.com/fog/fog-aws/issues/563)
47
+ - 3.6.4 does not fetch iam credentials using IMDSv2 when running from inside containers with IMDSv2 Defaults [\#560](https://github.com/fog/fog-aws/issues/560)
48
+
49
+ **Merged pull requests:**
50
+
51
+ - Fix naming of various AWS compute flavors [\#564](https://github.com/fog/fog-aws/pull/564) ([abrom](https://github.com/abrom))
52
+ - Gracefully handle failure of IMDSv2 and allow fallback to IMDSv1 [\#562](https://github.com/fog/fog-aws/pull/562) ([atyndall](https://github.com/atyndall))
53
+
54
+ ## [v3.6.4](https://github.com/fog/fog-aws/tree/v3.6.4) (2020-05-14)
55
+ [Full Changelog](https://github.com/fog/fog-aws/compare/v3.6.3...v3.6.4)
56
+
57
+ **Closed issues:**
58
+
59
+ - Is fog-aws compatible with AWS Trust Services? [\#558](https://github.com/fog/fog-aws/issues/558)
60
+
61
+ **Merged pull requests:**
62
+
63
+ - Add support for IMDSv2 in CredentialFetcher [\#559](https://github.com/fog/fog-aws/pull/559) ([atyndall](https://github.com/atyndall))
64
+ - Don’t install development scripts [\#557](https://github.com/fog/fog-aws/pull/557) ([amarshall](https://github.com/amarshall))
65
+
66
+ ## [v3.6.3](https://github.com/fog/fog-aws/tree/v3.6.3) (2020-04-22)
67
+ [Full Changelog](https://github.com/fog/fog-aws/compare/v3.6.2...v3.6.3)
68
+
69
+ **Merged pull requests:**
70
+
71
+ - Add South Africa \(Cape Town\) Region [\#556](https://github.com/fog/fog-aws/pull/556) ([lvangool](https://github.com/lvangool))
72
+ - Adds Instance Type r5.16xlarge and r5.8xlarge [\#555](https://github.com/fog/fog-aws/pull/555) ([rupikakapoor](https://github.com/rupikakapoor))
73
+ - Update kinesis.rb [\#553](https://github.com/fog/fog-aws/pull/553) ([ioquatix](https://github.com/ioquatix))
74
+
3
75
  ## [v3.6.2](https://github.com/fog/fog-aws/tree/v3.6.2) (2020-03-24)
4
76
  [Full Changelog](https://github.com/fog/fog-aws/compare/v3.5.2...v3.6.2)
5
77
 
@@ -524,7 +596,7 @@
524
596
  - make net/ssh require optional [\#197](https://github.com/fog/fog-aws/pull/197) ([geemus](https://github.com/geemus))
525
597
  - Cache cluster security group parser [\#190](https://github.com/fog/fog-aws/pull/190) ([eherot](https://github.com/eherot))
526
598
  - Allow region to be set for STS [\#189](https://github.com/fog/fog-aws/pull/189) ([fcheung](https://github.com/fcheung))
527
- - add cn support for s3 [\#187](https://github.com/fog/fog-aws/pull/187) ([ming-relax](https://github.com/ming-relax))
599
+ - add cn support for s3 [\#187](https://github.com/fog/fog-aws/pull/187) ([ming535](https://github.com/ming535))
528
600
  - mock instance stop and start properly [\#184](https://github.com/fog/fog-aws/pull/184) ([ehowe](https://github.com/ehowe))
529
601
  - Disable idempotent option when block is passed to get\_object [\#183](https://github.com/fog/fog-aws/pull/183) ([ghost](https://github.com/ghost))
530
602
  - Yield arguments to Mock\#get\_object block more similar to Excon [\#182](https://github.com/fog/fog-aws/pull/182) ([tdg5](https://github.com/tdg5))
@@ -848,4 +920,4 @@
848
920
  ## [fog-brightbox_v0.0.1](https://github.com/fog/fog-aws/tree/fog-brightbox_v0.0.1) (2014-02-19)
849
921
 
850
922
 
851
- \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
923
+ \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
data/Gemfile CHANGED
@@ -11,4 +11,4 @@ end
11
11
  group :test do
12
12
  gem "simplecov"
13
13
  gem "codeclimate-test-reporter", "~> 1.0.0"
14
- end
14
+ end
data/README.md CHANGED
@@ -105,6 +105,26 @@ directory.files
105
105
  directory.files.new(key: 'user/1/Gemfile').url(Time.now + 60)
106
106
  ```
107
107
 
108
+ #### Copying a file
109
+
110
+ ```ruby
111
+ directory = s3.directories.new(key: 'gaudi-portal-dev')
112
+ file = directory.files.get('user/1/Gemfile')
113
+ file.copy("target-bucket", "user/2/Gemfile.copy")
114
+ ```
115
+
116
+ To speed transfers of large files, the `concurrency` option can be used
117
+ to spawn multiple threads. Note that the file must be at least 5 MB for
118
+ multipart uploads to work. For example:
119
+
120
+ ```ruby
121
+ directory = s3.directories.new(key: 'gaudi-portal-dev')
122
+ file = directory.files.get('user/1/Gemfile')
123
+ file.multipart_chunk_size = 10 * 1024 * 1024
124
+ file.concurrency = 10
125
+ file.copy("target-bucket", "user/2/Gemfile.copy")
126
+ ```
127
+
108
128
  ## Documentation
109
129
 
110
130
  See the [online documentation](http://www.rubydoc.info/github/fog/fog-aws) for a complete API reference.
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.license = "MIT"
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0")
18
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ["lib"]
21
21
 
@@ -230,7 +230,7 @@ module Fog
230
230
  'cn-northwest-1',
231
231
  'eu-central-1',
232
232
  'eu-north-1',
233
- 'eu-west-1', 'eu-west-2', 'eu-west-3',
233
+ 'eu-west-1', 'eu-west-2', 'eu-west-3', 'eu-south-1',
234
234
  'me-south-1',
235
235
  'us-east-1', 'us-east-2',
236
236
  'us-west-1', 'us-west-2',
@@ -1,13 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Fog
2
4
  module AWS
3
5
  module CredentialFetcher
4
6
 
5
7
  INSTANCE_METADATA_HOST = "http://169.254.169.254"
8
+ INSTANCE_METADATA_TOKEN = "/latest/api/token"
6
9
  INSTANCE_METADATA_PATH = "/latest/meta-data/iam/security-credentials/"
7
10
  INSTANCE_METADATA_AZ = "/latest/meta-data/placement/availability-zone/"
8
11
 
9
12
  CONTAINER_CREDENTIALS_HOST = "http://169.254.170.2"
10
13
 
14
+ STS_GLOBAL_ENDPOINT = "https://sts.amazonaws.com"
15
+
11
16
  module ServiceMethods
12
17
  def fetch_credentials(options)
13
18
  if options[:use_iam_profile] && Fog.mocking?
@@ -22,25 +27,52 @@ module Fog
22
27
  connection = options[:connection] || Excon.new(CONTAINER_CREDENTIALS_HOST)
23
28
  credential_path = options[:credential_path] || ENV["AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"]
24
29
  role_data = connection.get(:path => credential_path, :idempotent => true, :expects => 200).body
30
+ session = Fog::JSON.decode(role_data)
31
+
32
+ if region.nil?
33
+ connection = options[:metadata_connection] || Excon.new(INSTANCE_METADATA_HOST)
34
+ token_header = fetch_credentials_token_header(connection, options[:disable_imds_v2])
35
+ region = connection.get(:path => INSTANCE_METADATA_AZ, :idempotent => true, :expects => 200, :headers => token_header).body[0..-2]
36
+ end
37
+ elsif ENV["AWS_WEB_IDENTITY_TOKEN_FILE"]
38
+ params = {
39
+ :Action => "AssumeRoleWithWebIdentity",
40
+ :RoleArn => options[:role_arn] || ENV.fetch("AWS_ROLE_ARN"),
41
+ :RoleSessionName => options[:role_session_name] || ENV.fetch("AWS_ROLE_SESSION_NAME"),
42
+ :WebIdentityToken => File.read(options[:aws_web_identity_token_file] || ENV.fetch("AWS_WEB_IDENTITY_TOKEN_FILE")),
43
+ :Version => "2011-06-15",
44
+ }
45
+ connection = options[:connection] || Excon.new(STS_GLOBAL_ENDPOINT, :query => params)
46
+ document = Nokogiri::XML(connection.get(:idempotent => true, :expects => 200).body)
47
+
48
+ session = {
49
+ "AccessKeyId" => document.css("AccessKeyId").children.text,
50
+ "SecretAccessKey" => document.css("SecretAccessKey").children.text,
51
+ "Token" => document.css("SessionToken").children.text,
52
+ "Expiration" => document.css("Expiration").children.text,
53
+ }
25
54
 
26
55
  if region.nil?
27
56
  connection = options[:metadata_connection] || Excon.new(INSTANCE_METADATA_HOST)
28
- region = connection.get(:path => INSTANCE_METADATA_AZ, :idempotent => true, :expects => 200).body[0..-2]
57
+ token_header = fetch_credentials_token_header(connection, options[:disable_imds_v2])
58
+ region = connection.get(:path => INSTANCE_METADATA_AZ, :idempotent => true, :expects => 200, :headers => token_header).body[0..-2]
29
59
  end
30
60
  else
31
61
  connection = options[:connection] || Excon.new(INSTANCE_METADATA_HOST)
32
- role_name = connection.get(:path => INSTANCE_METADATA_PATH, :idempotent => true, :expects => 200).body
33
- role_data = connection.get(:path => INSTANCE_METADATA_PATH+role_name, :idempotent => true, :expects => 200).body
34
- region ||= connection.get(:path => INSTANCE_METADATA_AZ, :idempotent => true, :expects => 200).body[0..-2]
62
+ token_header = fetch_credentials_token_header(connection, options[:disable_imds_v2])
63
+ role_name = connection.get(:path => INSTANCE_METADATA_PATH, :idempotent => true, :expects => 200, :headers => token_header).body
64
+ role_data = connection.get(:path => INSTANCE_METADATA_PATH+role_name, :idempotent => true, :expects => 200, :headers => token_header).body
65
+ session = Fog::JSON.decode(role_data)
66
+
67
+ region ||= connection.get(:path => INSTANCE_METADATA_AZ, :idempotent => true, :expects => 200, :headers => token_header).body[0..-2]
35
68
  end
36
-
37
- session = Fog::JSON.decode(role_data)
69
+
38
70
  credentials = {}
39
71
  credentials[:aws_access_key_id] = session['AccessKeyId']
40
72
  credentials[:aws_secret_access_key] = session['SecretAccessKey']
41
73
  credentials[:aws_session_token] = session['Token']
42
74
  credentials[:aws_credentials_expire_at] = Time.xmlschema session['Expiration']
43
-
75
+
44
76
  # set region by default to the one the instance is in.
45
77
  credentials[:region] = region
46
78
  #these indicate the metadata service is unavailable or has no profile setup
@@ -53,6 +85,26 @@ module Fog
53
85
  super
54
86
  end
55
87
  end
88
+
89
+ def fetch_credentials_token_header(connection, disable_imds_v2)
90
+ return nil if disable_imds_v2
91
+
92
+ token = connection.put(
93
+ :path => INSTANCE_METADATA_TOKEN,
94
+ :idempotent => true,
95
+ :expects => 200,
96
+ :retry_interval => 1,
97
+ :retry_limit => 3,
98
+ :read_timeout => 1,
99
+ :write_timeout => 1,
100
+ :connect_timeout => 1,
101
+ :headers => { "X-aws-ec2-metadata-token-ttl-seconds" => "300" }
102
+ ).body
103
+
104
+ { "X-aws-ec2-metadata-token" => token }
105
+ rescue Excon::Error
106
+ nil
107
+ end
56
108
  end
57
109
 
58
110
  module ConnectionMethods
@@ -68,7 +68,7 @@ module Fog
68
68
  },
69
69
  {
70
70
  :id => 't1.micro',
71
- :name => 'Micro Instance',
71
+ :name => 'T1 Micro Instance',
72
72
  :bits => 32,
73
73
  :cores => 1,
74
74
  :disk => 0,
@@ -88,7 +88,7 @@ module Fog
88
88
  },
89
89
  {
90
90
  :id => 't2.micro',
91
- :name => 'Micro Instance',
91
+ :name => 'T2 Micro Instance',
92
92
  :bits => 64,
93
93
  :cores => 1,
94
94
  :disk => 0,
@@ -98,7 +98,7 @@ module Fog
98
98
  },
99
99
  {
100
100
  :id => 't2.small',
101
- :name => 'Small Instance',
101
+ :name => 'T2 Small Instance',
102
102
  :bits => 64,
103
103
  :cores => 1,
104
104
  :disk => 0,
@@ -108,7 +108,7 @@ module Fog
108
108
  },
109
109
  {
110
110
  :id => 't2.medium',
111
- :name => 'Medium Instance',
111
+ :name => 'T2 Medium Instance',
112
112
  :bits => 64,
113
113
  :cores => 2,
114
114
  :disk => 0,
@@ -118,7 +118,7 @@ module Fog
118
118
  },
119
119
  {
120
120
  :id => 't2.large',
121
- :name => 'Large Instance',
121
+ :name => 'T2 Large Instance',
122
122
  :bits => 64,
123
123
  :cores => 2,
124
124
  :disk => 0,
@@ -128,7 +128,7 @@ module Fog
128
128
  },
129
129
  {
130
130
  :id => 't2.xlarge',
131
- :name => 'Extra Large Instance',
131
+ :name => 'T2 Extra Large Instance',
132
132
  :bits => 64,
133
133
  :cores => 4,
134
134
  :disk => 0,
@@ -138,7 +138,7 @@ module Fog
138
138
  },
139
139
  {
140
140
  :id => 't2.2xlarge',
141
- :name => 'Double Extra Large Instance',
141
+ :name => 'T2 Double Extra Large Instance',
142
142
  :bits => 64,
143
143
  :cores => 8,
144
144
  :disk => 0,
@@ -366,9 +366,109 @@ module Fog
366
366
  :ebs_optimized_available => true,
367
367
  :instance_store_volumes => 0
368
368
  },
369
+ {
370
+ :id => 'm6g.metal',
371
+ :name => 'M6G Metal',
372
+ :bits => 64,
373
+ :cores => 64,
374
+ :disk => 0,
375
+ :ram => 274878,
376
+ :ebs_optimized_available => true,
377
+ :instance_store_volumes => 0
378
+ },
379
+ {
380
+ :id => 'm6gd.medium',
381
+ :name => 'M6GD Medium',
382
+ :bits => 64,
383
+ :cores => 1,
384
+ :disk => 59,
385
+ :ram => 4295,
386
+ :ebs_optimized_available => true,
387
+ :instance_store_volumes => 1
388
+ },
389
+ {
390
+ :id => 'm6gd.large',
391
+ :name => 'M6GD Large',
392
+ :bits => 64,
393
+ :cores => 2,
394
+ :disk => 118,
395
+ :ram => 8590,
396
+ :ebs_optimized_available => true,
397
+ :instance_store_volumes => 1
398
+ },
399
+ {
400
+ :id => 'm6gd.xlarge',
401
+ :name => 'M6GD Extra Large',
402
+ :bits => 64,
403
+ :cores => 4,
404
+ :disk => 237,
405
+ :ram => 17180,
406
+ :ebs_optimized_available => true,
407
+ :instance_store_volumes => 1
408
+ },
409
+ {
410
+ :id => 'm6gd.2xlarge',
411
+ :name => 'M6GD Double Extra Large',
412
+ :bits => 64,
413
+ :cores => 8,
414
+ :disk => 474,
415
+ :ram => 34360,
416
+ :ebs_optimized_available => true,
417
+ :instance_store_volumes => 1
418
+ },
419
+ {
420
+ :id => 'm6gd.4xlarge',
421
+ :name => 'M6GD Quadruple Extra Large',
422
+ :bits => 64,
423
+ :cores => 16,
424
+ :disk => 950,
425
+ :ram => 68719,
426
+ :ebs_optimized_available => true,
427
+ :instance_store_volumes => 1
428
+ },
429
+ {
430
+ :id => 'm6gd.8xlarge',
431
+ :name => 'M6GD Octuple Extra Large',
432
+ :bits => 64,
433
+ :cores => 32,
434
+ :disk => 1900,
435
+ :ram => 137439,
436
+ :ebs_optimized_available => true,
437
+ :instance_store_volumes => 1
438
+ },
439
+ {
440
+ :id => 'm6gd.12xlarge',
441
+ :name => 'M6GD Twelve Extra Large',
442
+ :bits => 64,
443
+ :cores => 48,
444
+ :disk => 2850,
445
+ :ram => 206158,
446
+ :ebs_optimized_available => true,
447
+ :instance_store_volumes => 2
448
+ },
449
+ {
450
+ :id => 'm6gd.16xlarge',
451
+ :name => 'M6GD Sixteen Extra Large',
452
+ :bits => 64,
453
+ :cores => 64,
454
+ :disk => 3800,
455
+ :ram => 274878,
456
+ :ebs_optimized_available => true,
457
+ :instance_store_volumes => 2
458
+ },
459
+ {
460
+ :id => 'm6gd.metal',
461
+ :name => 'M6GD Metal',
462
+ :bits => 64,
463
+ :cores => 64,
464
+ :disk => 3800,
465
+ :ram => 274878,
466
+ :ebs_optimized_available => true,
467
+ :instance_store_volumes => 2
468
+ },
369
469
  {
370
470
  :id => 'm1.small',
371
- :name => 'Small Instance',
471
+ :name => 'M1 Small Instance',
372
472
  :bits => 32,
373
473
  :cores => 1,
374
474
  :disk => 160,
@@ -378,7 +478,7 @@ module Fog
378
478
  },
379
479
  {
380
480
  :id => 'm1.medium',
381
- :name => 'Medium Instance',
481
+ :name => 'M1 Medium Instance',
382
482
  :bits => 32,
383
483
  :cores => 1,
384
484
  :disk => 400,
@@ -388,7 +488,7 @@ module Fog
388
488
  },
389
489
  {
390
490
  :id => 'm1.large',
391
- :name => 'Large Instance',
491
+ :name => 'M1 Large Instance',
392
492
  :bits => 64,
393
493
  :cores => 2,
394
494
  :disk => 850,
@@ -398,7 +498,7 @@ module Fog
398
498
  },
399
499
  {
400
500
  :id => 'm1.xlarge',
401
- :name => 'Extra Large Instance',
501
+ :name => 'M1 Extra Large Instance',
402
502
  :bits => 64,
403
503
  :cores => 4,
404
504
  :disk => 1690,
@@ -776,6 +876,186 @@ module Fog
776
876
  :ebs_optimized_available => true,
777
877
  :instance_store_volumes => 0
778
878
  },
879
+ {
880
+ :id => 'c6g.medium',
881
+ :name => 'C6G Medium',
882
+ :bits => 64,
883
+ :cores => 1,
884
+ :disk => 0,
885
+ :ram => 2147,
886
+ :ebs_optimized_available => true,
887
+ :instance_store_volumes => 0
888
+ },
889
+ {
890
+ :id => 'c6g.large',
891
+ :name => 'C6G Large',
892
+ :bits => 64,
893
+ :cores => 2,
894
+ :disk => 0,
895
+ :ram => 4295,
896
+ :ebs_optimized_available => true,
897
+ :instance_store_volumes => 0
898
+ },
899
+ {
900
+ :id => 'c6g.xlarge',
901
+ :name => 'C6G Extra Large',
902
+ :bits => 64,
903
+ :cores => 4,
904
+ :disk => 0,
905
+ :ram => 8590,
906
+ :ebs_optimized_available => true,
907
+ :instance_store_volumes => 0
908
+ },
909
+ {
910
+ :id => 'c6g.2xlarge',
911
+ :name => 'C6G Double Extra Large',
912
+ :bits => 64,
913
+ :cores => 8,
914
+ :disk => 0,
915
+ :ram => 17180,
916
+ :ebs_optimized_available => true,
917
+ :instance_store_volumes => 0
918
+ },
919
+ {
920
+ :id => 'c6g.4xlarge',
921
+ :name => 'C6G Quadruple Extra Large',
922
+ :bits => 64,
923
+ :cores => 16,
924
+ :disk => 0,
925
+ :ram => 34360,
926
+ :ebs_optimized_available => true,
927
+ :instance_store_volumes => 0
928
+ },
929
+ {
930
+ :id => 'c6g.8xlarge',
931
+ :name => 'C6G Octuple Extra Large',
932
+ :bits => 64,
933
+ :cores => 32,
934
+ :disk => 0,
935
+ :ram => 68719,
936
+ :ebs_optimized_available => true,
937
+ :instance_store_volumes => 0
938
+ },
939
+ {
940
+ :id => 'c6g.12xlarge',
941
+ :name => 'C6G Twelve Extra Large',
942
+ :bits => 64,
943
+ :cores => 48,
944
+ :disk => 0,
945
+ :ram => 103079,
946
+ :ebs_optimized_available => true,
947
+ :instance_store_volumes => 0
948
+ },
949
+ {
950
+ :id => 'c6g.16xlarge',
951
+ :name => 'C6G Sixteen Extra Large',
952
+ :bits => 64,
953
+ :cores => 64,
954
+ :disk => 0,
955
+ :ram => 137439,
956
+ :ebs_optimized_available => true,
957
+ :instance_store_volumes => 0
958
+ },
959
+ {
960
+ :id => 'c6g.metal',
961
+ :name => 'C6G Metal',
962
+ :bits => 64,
963
+ :cores => 64,
964
+ :disk => 0,
965
+ :ram => 137439,
966
+ :ebs_optimized_available => true,
967
+ :instance_store_volumes => 0
968
+ },
969
+ {
970
+ :id => 'c6gd.medium',
971
+ :name => 'C6GD Medium',
972
+ :bits => 64,
973
+ :cores => 1,
974
+ :disk => 59,
975
+ :ram => 2147,
976
+ :ebs_optimized_available => true,
977
+ :instance_store_volumes => 1
978
+ },
979
+ {
980
+ :id => 'c6gd.large',
981
+ :name => 'C6GD Large',
982
+ :bits => 64,
983
+ :cores => 2,
984
+ :disk => 118,
985
+ :ram => 4295,
986
+ :ebs_optimized_available => true,
987
+ :instance_store_volumes => 1
988
+ },
989
+ {
990
+ :id => 'c6gd.xlarge',
991
+ :name => 'C6GD Extra Large',
992
+ :bits => 64,
993
+ :cores => 4,
994
+ :disk => 237,
995
+ :ram => 8590,
996
+ :ebs_optimized_available => true,
997
+ :instance_store_volumes => 1
998
+ },
999
+ {
1000
+ :id => 'c6gd.2xlarge',
1001
+ :name => 'C6GD Double Extra Large',
1002
+ :bits => 64,
1003
+ :cores => 8,
1004
+ :disk => 474,
1005
+ :ram => 17180,
1006
+ :ebs_optimized_available => true,
1007
+ :instance_store_volumes => 1
1008
+ },
1009
+ {
1010
+ :id => 'c6gd.4xlarge',
1011
+ :name => 'C6GD Quadruple Extra Large',
1012
+ :bits => 64,
1013
+ :cores => 16,
1014
+ :disk => 950,
1015
+ :ram => 34360,
1016
+ :ebs_optimized_available => true,
1017
+ :instance_store_volumes => 1
1018
+ },
1019
+ {
1020
+ :id => 'c6gd.8xlarge',
1021
+ :name => 'C6GD Octuple Extra Large',
1022
+ :bits => 64,
1023
+ :cores => 32,
1024
+ :disk => 1900,
1025
+ :ram => 68719,
1026
+ :ebs_optimized_available => true,
1027
+ :instance_store_volumes => 1
1028
+ },
1029
+ {
1030
+ :id => 'c6gd.12xlarge',
1031
+ :name => 'C6GD Twelve Extra Large',
1032
+ :bits => 64,
1033
+ :cores => 48,
1034
+ :disk => 2850,
1035
+ :ram => 103079,
1036
+ :ebs_optimized_available => true,
1037
+ :instance_store_volumes => 2
1038
+ },
1039
+ {
1040
+ :id => 'c6gd.16xlarge',
1041
+ :name => 'C6GD Sixteen Extra Large',
1042
+ :bits => 64,
1043
+ :cores => 64,
1044
+ :disk => 3800,
1045
+ :ram => 137439,
1046
+ :ebs_optimized_available => true,
1047
+ :instance_store_volumes => 2
1048
+ },
1049
+ {
1050
+ :id => 'c6gd.metal',
1051
+ :name => 'C6GD Metal',
1052
+ :bits => 64,
1053
+ :cores => 64,
1054
+ :disk => 3800,
1055
+ :ram => 137439,
1056
+ :ebs_optimized_available => true,
1057
+ :instance_store_volumes => 2
1058
+ },
779
1059
  {
780
1060
  :id => 'g2.2xlarge',
781
1061
  :name => 'GPU Double Extra Large',
@@ -1276,16 +1556,6 @@ module Fog
1276
1556
  :ebs_optimized_available => true,
1277
1557
  :instance_store_volumes => 0
1278
1558
  },
1279
- {
1280
- :id => 'r5.8xlarge',
1281
- :name => 'R5 Eight Extra Large',
1282
- :bits => 64,
1283
- :cores => 32,
1284
- :disk => 0,
1285
- :ram => 274878,
1286
- :ebs_optimized_available => true,
1287
- :instance_store_volumes => 0
1288
- },
1289
1559
  {
1290
1560
  :id => "r5.8xlarge",
1291
1561
  :name => "R5 Octuple Extra Large",
@@ -1306,16 +1576,6 @@ module Fog
1306
1576
  :ebs_optimized_available => true,
1307
1577
  :instance_store_volumes => 0
1308
1578
  },
1309
- {
1310
- :id => "r5.12xlarge",
1311
- :name => "R5 Sixteen Extra Large",
1312
- :bits => 64,
1313
- :cores => 64,
1314
- :ram => 549756,
1315
- :disk => 0,
1316
- :ebs_optimized_available => true,
1317
- :instance_store_volumes => 0
1318
- },
1319
1579
  {
1320
1580
  :id => "r5.16xlarge",
1321
1581
  :name => "R5 Sixteen Extra Large",
@@ -1716,6 +1976,186 @@ module Fog
1716
1976
  :ebs_optimized_available => true,
1717
1977
  :instance_store_volumes => 4
1718
1978
  },
1979
+ {
1980
+ :id => 'r6g.medium',
1981
+ :name => 'R6G Medium',
1982
+ :bits => 64,
1983
+ :cores => 1,
1984
+ :disk => 0,
1985
+ :ram => 8590,
1986
+ :ebs_optimized_available => true,
1987
+ :instance_store_volumes => 0
1988
+ },
1989
+ {
1990
+ :id => 'r6g.large',
1991
+ :name => 'R6G Large',
1992
+ :bits => 64,
1993
+ :cores => 2,
1994
+ :disk => 0,
1995
+ :ram => 17180,
1996
+ :ebs_optimized_available => true,
1997
+ :instance_store_volumes => 0
1998
+ },
1999
+ {
2000
+ :id => 'r6g.xlarge',
2001
+ :name => 'R6G Extra Large',
2002
+ :bits => 64,
2003
+ :cores => 4,
2004
+ :disk => 0,
2005
+ :ram => 34360,
2006
+ :ebs_optimized_available => true,
2007
+ :instance_store_volumes => 0
2008
+ },
2009
+ {
2010
+ :id => 'r6g.2xlarge',
2011
+ :name => 'R6G Double Extra Large',
2012
+ :bits => 64,
2013
+ :cores => 8,
2014
+ :disk => 0,
2015
+ :ram => 68719,
2016
+ :ebs_optimized_available => true,
2017
+ :instance_store_volumes => 0
2018
+ },
2019
+ {
2020
+ :id => 'r6g.4xlarge',
2021
+ :name => 'R6G Quadruple Extra Large',
2022
+ :bits => 64,
2023
+ :cores => 16,
2024
+ :disk => 0,
2025
+ :ram => 137439,
2026
+ :ebs_optimized_available => true,
2027
+ :instance_store_volumes => 0
2028
+ },
2029
+ {
2030
+ :id => 'r6g.8xlarge',
2031
+ :name => 'R6G Octuple Extra Large',
2032
+ :bits => 64,
2033
+ :cores => 32,
2034
+ :disk => 0,
2035
+ :ram => 274878,
2036
+ :ebs_optimized_available => true,
2037
+ :instance_store_volumes => 0
2038
+ },
2039
+ {
2040
+ :id => 'r6g.12xlarge',
2041
+ :name => 'R6G Twelve Extra Large',
2042
+ :bits => 64,
2043
+ :cores => 48,
2044
+ :disk => 0,
2045
+ :ram => 412317,
2046
+ :ebs_optimized_available => true,
2047
+ :instance_store_volumes => 0
2048
+ },
2049
+ {
2050
+ :id => 'r6g.16xlarge',
2051
+ :name => 'R6G Sixteen Extra Large',
2052
+ :bits => 64,
2053
+ :cores => 64,
2054
+ :disk => 0,
2055
+ :ram => 549756,
2056
+ :ebs_optimized_available => true,
2057
+ :instance_store_volumes => 0
2058
+ },
2059
+ {
2060
+ :id => 'r6g.metal',
2061
+ :name => 'R6G Metal',
2062
+ :bits => 64,
2063
+ :cores => 64,
2064
+ :disk => 0,
2065
+ :ram => 549756,
2066
+ :ebs_optimized_available => true,
2067
+ :instance_store_volumes => 0
2068
+ },
2069
+ {
2070
+ :id => 'r6gd.medium',
2071
+ :name => 'R6GD Medium',
2072
+ :bits => 64,
2073
+ :cores => 1,
2074
+ :disk => 59,
2075
+ :ram => 8590,
2076
+ :ebs_optimized_available => true,
2077
+ :instance_store_volumes => 1
2078
+ },
2079
+ {
2080
+ :id => 'r6gd.large',
2081
+ :name => 'R6GD Large',
2082
+ :bits => 64,
2083
+ :cores => 2,
2084
+ :disk => 118,
2085
+ :ram => 17180,
2086
+ :ebs_optimized_available => true,
2087
+ :instance_store_volumes => 1
2088
+ },
2089
+ {
2090
+ :id => 'r6gd.xlarge',
2091
+ :name => 'R6GD Extra Large',
2092
+ :bits => 64,
2093
+ :cores => 4,
2094
+ :disk => 237,
2095
+ :ram => 34360,
2096
+ :ebs_optimized_available => true,
2097
+ :instance_store_volumes => 1
2098
+ },
2099
+ {
2100
+ :id => 'r6gd.2xlarge',
2101
+ :name => 'R6GD Double Extra Large',
2102
+ :bits => 64,
2103
+ :cores => 8,
2104
+ :disk => 474,
2105
+ :ram => 68719,
2106
+ :ebs_optimized_available => true,
2107
+ :instance_store_volumes => 1
2108
+ },
2109
+ {
2110
+ :id => 'r6gd.4xlarge',
2111
+ :name => 'R6GD Quadruple Extra Large',
2112
+ :bits => 64,
2113
+ :cores => 16,
2114
+ :disk => 950,
2115
+ :ram => 137439,
2116
+ :ebs_optimized_available => true,
2117
+ :instance_store_volumes => 1
2118
+ },
2119
+ {
2120
+ :id => 'r6gd.8xlarge',
2121
+ :name => 'R6GD Octuple Extra Large',
2122
+ :bits => 64,
2123
+ :cores => 32,
2124
+ :disk => 1900,
2125
+ :ram => 274878,
2126
+ :ebs_optimized_available => true,
2127
+ :instance_store_volumes => 1
2128
+ },
2129
+ {
2130
+ :id => 'r6gd.12xlarge',
2131
+ :name => 'R6GD Twelve Extra Large',
2132
+ :bits => 64,
2133
+ :cores => 48,
2134
+ :disk => 2850,
2135
+ :ram => 412317,
2136
+ :ebs_optimized_available => true,
2137
+ :instance_store_volumes => 2
2138
+ },
2139
+ {
2140
+ :id => 'r6gd.16xlarge',
2141
+ :name => 'R6GD Sixteen Extra Large',
2142
+ :bits => 64,
2143
+ :cores => 64,
2144
+ :disk => 3800,
2145
+ :ram => 549756,
2146
+ :ebs_optimized_available => true,
2147
+ :instance_store_volumes => 2
2148
+ },
2149
+ {
2150
+ :id => 'r6gd.metal',
2151
+ :name => 'R6GD Metal',
2152
+ :bits => 64,
2153
+ :cores => 64,
2154
+ :disk => 3800,
2155
+ :ram => 549756,
2156
+ :ebs_optimized_available => true,
2157
+ :instance_store_volumes => 2
2158
+ },
1719
2159
  {
1720
2160
  :id => "x1.16xlarge",
1721
2161
  :name => "X1 Sixteen Extra Large",
@@ -1798,7 +2238,7 @@ module Fog
1798
2238
  },
1799
2239
  {
1800
2240
  :id => "u-6tb1.metal",
1801
- :name => "X1e Sixteen Extra Large",
2241
+ :name => "U 6TB Metal",
1802
2242
  :bits => 64,
1803
2243
  :cores => 448,
1804
2244
  :ram => 6597071,