amazon-pricing 0.1.129 → 0.1.130

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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NTcwYjNiYjFmZTNjNTIzMWE4ZDE4Njc2ZGVlZGU5OTgwNjcyMDI1Ng==
5
- data.tar.gz: !binary |-
6
- M2U5ZWU1MjIzM2IzNmI3ZTI0YzM3ODIxMDZlZDYxY2I0ZWNhYzI2NQ==
2
+ SHA1:
3
+ metadata.gz: c09f9adf580b4be60a4c4044c5d7c72064f5bc7d
4
+ data.tar.gz: 15dbc1e40985deaed835c25787e17a7db3ee7ab2
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZjA4ZTY2MzE3MzFhOTE4MzkxOWIzNjI5OTAzMzg1N2JhOWZiM2EwOWQyMmJm
10
- YTE4ZDhmNDllZmNkODdiZDBiYWEzYTIxZWE1ODI0YWViZDhjNzEwY2U0OTc4
11
- NjkxZDY1YWVmYzkwMGYwZWFiOGFiYzJiZTZjYWI1NDRkODE5ZTg=
12
- data.tar.gz: !binary |-
13
- N2JjNDY1Y2M0MzcwNzI3Y2IwMzU1ZTMyN2RhMzAwOTg1MDMwNGFjN2VkMGY1
14
- ZmE5ZTJiY2NhNjllYmQwZTQxNmI4ZWMzOWEzOThkNjRkNjNlZDZiOTliOTRk
15
- NTdjZTQ0YjljZGVhYWFkOTkxMjg3ZmRmYWM1OTFjNGU2ODA1NWY=
6
+ metadata.gz: 5612b47fe5eefcd2a7ed94aac3ca0b76f01b424a42aea034d06667aa4aaca648bee7614137846b503243114223c3602e0263288fb67eb12024838ce4fd4106ec
7
+ data.tar.gz: 0756f6b8f2e15584ba8f551a7fd48efa8bb9de2c28ae11730d925eb45cd5b3e064eadf619d9476237276ebea7789bc855a57635379a917327421876547fdd75a
@@ -451,6 +451,9 @@ module AwsPricing
451
451
  'r5a.4xlarge' => :ten_gigabit, # upto 10G
452
452
  'r5a.12xlarge' => :ten_gigabit,
453
453
  'r5a.24xlarge' => :twenty_gigabit,
454
+ 'u-6tb1.metal' => :twentyfive_gigabit,
455
+ 'u-9tb1.metal' => :twentyfive_gigabit,
456
+ 'u-12tb1.metal' => :twentyfive_gigabit,
454
457
 
455
458
  }
456
459
 
@@ -252,6 +252,9 @@ module AwsPricing
252
252
  'm5a.12xlarge' => 'General Purpose M5A Twelve Extra Large', 'm5a.24xlarge' => 'General Purpose M5A Twenty Four Extra Large',
253
253
  'r5a.large' => 'Memory Optimized R5A Large', 'r5a.xlarge' => 'Memory Optimized R5A Extra Large', 'r5a.2xlarge' => 'Memory Optimized R5A Double Extra Large', 'r5a.4xlarge' => 'Memory Optimized R5A Quadruple Extra Large',
254
254
  'r5a.12xlarge' => 'Memory Optimized R5A Twelve Extra Large', 'r5a.24xlarge' => 'Memory Optimized R5A Twenty Four Extra Large',
255
+ 'u-6tb1.metal' => "Memory Optimized u-6tb1 Metal",
256
+ 'u-9tb1.metal' => "Memory Optimized u-9tb1 Metal",
257
+ 'u-12tb1.metal' => "Memory Optimized u-12tb1 Metal",
255
258
  }
256
259
  @@Disk_Lookup = { # size of disk supported (local disk size) TOTAL size in gb
257
260
  'a1.medium' => 0, 'a1.large' => 0, 'a1.xlarge' => 0, 'a1.2xlarge' => 0, 'a1.4xlarge' => 0, # ebs-optimized
@@ -298,6 +301,9 @@ module AwsPricing
298
301
  'z1d.large' => 75, 'z1d.xlarge' => 150, 'z1d.2xlarge' => 300, 'z1d.3xlarge' => 450, 'z1d.6xlarge' => 900, 'z1d.12xlarge' => 1800, # NVMe
299
302
  'm5a.large' => 0, 'm5a.xlarge' => 0, 'm5a.2xlarge' => 0, 'm5a.4xlarge' => 0, 'm5a.12xlarge' => 0, 'm5a.24xlarge' => 0, #ebs-only
300
303
  'r5a.large' => 0, 'r5a.xlarge' => 0, 'r5a.2xlarge' => 0, 'r5a.4xlarge' => 0, 'r5a.12xlarge' => 0, 'r5a.24xlarge' => 0, #ebs-only
304
+ 'u-6tb1.metal' => 0, #ebs-only
305
+ 'u-9tb1.metal' => 0, #ebs-only
306
+ 'u-12tb1.metal' => 0, #ebs-only
301
307
  }
302
308
  @@Platform_Lookup = { #bit width of cpu
303
309
  'a1.medium' => 64, 'a1.large' => 64, 'a1.xlarge' => 64, 'a1.2xlarge' => 64, 'a1.4xlarge' => 64,
@@ -343,6 +349,9 @@ module AwsPricing
343
349
  'z1d.large' => 64, 'z1d.xlarge' => 64, 'z1d.2xlarge' => 64, 'z1d.3xlarge' => 64, 'z1d.6xlarge' => 64, 'z1d.12xlarge' => 64,
344
350
  'm5a.large' => 64, 'm5a.xlarge' => 64, 'm5a.2xlarge' => 64, 'm5a.4xlarge' => 64, 'm5a.12xlarge' => 64, 'm5a.24xlarge' => 64,
345
351
  'r5a.large' => 64, 'r5a.xlarge' => 64, 'r5a.2xlarge' => 64, 'r5a.4xlarge' => 64, 'r5a.12xlarge' => 64, 'r5a.24xlarge' => 64,
352
+ 'u-6tb1.metal' => 64,
353
+ 'u-9tb1.metal' => 64,
354
+ 'u-12tb1.metal' => 64,
346
355
  }
347
356
  @@Disk_Type_Lookup = { #type of local storage for the disk
348
357
  'a1.medium' => :ebs,'a1.large' => :ebs, 'a1.xlarge' => :ebs, 'a1.2xlarge' => :ebs, 'a1.4xlarge' => :ebs,
@@ -390,6 +399,9 @@ module AwsPricing
390
399
  'z1d.large' => :ssd, 'z1d.xlarge' => :ssd, 'z1d.2xlarge' => :ssd, 'z1d.3xlarge' => :ssd, 'z1d.6xlarge' => :ssd, 'z1d.12xlarge' => :ssd,
391
400
  'm5a.large' => :ebs, 'm5a.xlarge' => :ebs, 'm5a.2xlarge' => :ebs, 'm5a.4xlarge' => :ebs, 'm5a.12xlarge' => :ebs, 'm5a.24xlarge' => :ebs,
392
401
  'r5a.large' => :ebs, 'r5a.xlarge' => :ebs, 'r5a.2xlarge' => :ebs, 'r5a.4xlarge' => :ebs, 'r5a.12xlarge' => :ebs, 'r5a.24xlarge' => :ebs,
402
+ 'u-6tb1.metal' => :ebs,
403
+ 'u-9tb1.metal' => :ebs,
404
+ 'u-12tb1.metal' => :ebs,
393
405
  }
394
406
 
395
407
  # NOTE: These are populated by "populate_lookups"
@@ -641,6 +653,9 @@ module AwsPricing
641
653
  'r5a.4xlarge' => [ 265, 16000 ], #EBSOptimized
642
654
  'r5a.12xlarge' => [ 625, 30000 ], #EBSOptimized
643
655
  'r5a.24xlarge' => [ 1250, 60000 ], #EBSOptimized
656
+ 'u-6tb1.metal' => [ 1750, 80000], #EBSOptimized
657
+ 'u-9tb1.metal' => [ 1750, 80000], #EBSOptimized
658
+ 'u-12tb1.metal' => [ 1750, 80000], #EBSOptimized
644
659
  }
645
660
  end
646
661
  end
@@ -51,7 +51,9 @@ module AwsPricing
51
51
  'x1' => { "16xlarge"=>2, "32xlarge"=>1 },
52
52
  'x1e' =>{ "xlarge"=>32, "2xlarge"=>16, "4xlarge"=>8, "8xlarge"=>4, "16xlarge"=>2, "32xlarge"=>1 },
53
53
  'z1d' => {"large"=> 24, "xlarge"=> 12, "2xlarge"=> 6, "3xlarge"=> 4, "6xlarge"=> 2, "12xlarge"=> 1},
54
-
54
+ 'u-6tb1' => {"metal" => 1},
55
+ 'u-9tb1' => {"metal" => 1},
56
+ 'u-12tb1' => {"metal" => 1},
55
57
  }
56
58
 
57
59
  def get_ec2_dhi_od_pricing
@@ -46,7 +46,10 @@ module AwsPricing
46
46
  'R5A' => ['r5a.large', 'r5a.xlarge', 'r5a.2xlarge', 'r5a.4xlarge', 'r5a.12xlarge', 'r5a.24xlarge'],
47
47
  'X1' => ['x1.16xlarge', 'x1.32xlarge'],
48
48
  'X1E' => ['x1e.xlarge', 'x1e.2xlarge', 'x1e.4xlarge', 'x1e.8xlarge', 'x1e.16xlarge', 'x1e.32xlarge'],
49
- 'Z1D' => ['z1d.large', 'z1d.xlarge', 'z1d.2xlarge', 'z1d.3xlarge', 'z1d.6xlarge', 'z1d.12xlarge']
49
+ 'Z1D' => ['z1d.large', 'z1d.xlarge', 'z1d.2xlarge', 'z1d.3xlarge', 'z1d.6xlarge', 'z1d.12xlarge'],
50
+ 'U-6TB1' => ['u-6tb1.metal'],
51
+ 'U-9TB1' => ['u-9tb1.metal'],
52
+ 'U-12TB1' => ['u-12tb1.metal'],
50
53
  },
51
54
  'PreviousGen' => {
52
55
  'M2' => ['m2.xlarge', 'm2.2xlarge', 'm2.4xlarge'],
@@ -167,16 +170,26 @@ module AwsPricing
167
170
  all_instances.select { |family, instances| instances.include?(api_name) }.values.first
168
171
  end
169
172
 
170
-
171
173
  def api_name_to_nf(name)
172
174
  type = name.split('.').last
173
175
  if (type == METAL)
176
+ # See if our metal instance has a hard-coded nf value
177
+ if !metal_to_nf[name].nil?
178
+ return metal_to_nf[name]
179
+ end
174
180
  # try to get largest size supported for family: presumes METAL is *not* in size_to_nf hash
175
181
  # assumes family_members are sorted by size
176
182
  sizes = family_members(name)
183
+ # Return nil if we have a bogus instance type
184
+ if sizes.nil?
185
+ return nil
186
+ end
177
187
  type = sizes[-1].split('.').last # 'metal' defaults to largest size
178
188
  if sizes[-1].split('.').last == METAL
179
- type = sizes[-2].split('.').last # 'metal' already largest, so 2nd largest
189
+ if sizes.size == 1 # We have an instance family with only metals but no NF associated; raise an error
190
+ raise UnknownTypeError, "Unknown metal type #{name}", caller
191
+ end
192
+ type = sizes[-2].split('.').last # 'metal' already largest, so 2nd largest
180
193
  end
181
194
  end
182
195
  size_to_nf[type]
@@ -210,6 +223,11 @@ module AwsPricing
210
223
  NF_TO_SIZE_TABLE
211
224
  end
212
225
 
226
+ def metal_to_nf
227
+ METAL_TO_NF_TABLE
228
+ end
229
+
230
+ # Remove metal from this array? force adoption of this
213
231
  # NB: 'metal' is not in this table (since it's family specific), see #api_name_to_nf
214
232
  SIZE_TO_NF_TABLE = {
215
233
  "nano" => 0.25,
@@ -227,13 +245,20 @@ module AwsPricing
227
245
  "10xlarge" => 80,
228
246
  "12xlarge" => 96,
229
247
  "16xlarge" => 128,
230
- "metal" => 128, # temporary (for _direct_ users of this hash), as only applies to i3.metal
248
+ "metal" => 128, # We will be removing this once size_to_nf is deprecated.
231
249
  "18xlarge" => 144,
232
250
  "24xlarge" => 192,
233
251
  "32xlarge" => 256,
234
252
  }
235
253
  NF_TO_SIZE_TABLE = SIZE_TO_NF_TABLE.invert
236
254
 
255
+ METAL_TO_NF_TABLE = {
256
+ 'u-6tb1.metal' => 896,
257
+ 'u-9tb1.metal' => 896,
258
+ 'u-12tb1.metal' => 896,
259
+ 'i3.metal' => 128,
260
+ }
261
+
237
262
  end
238
263
  end
239
264
  end
@@ -9,6 +9,6 @@
9
9
  #++
10
10
  module AwsPricing
11
11
 
12
- VERSION = '0.1.129' # [major,minor.fix]: Adding eu-north-1 region
12
+ VERSION = '0.1.130' # [major,minor.fix]: Support for all metal instances
13
13
 
14
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amazon-pricing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.129
4
+ version: 0.1.130
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Kinsella
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-02 00:00:00.000000000 Z
11
+ date: 2019-01-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A Ruby library for retrieving pricing for Amazon Web Services
14
14
  email:
@@ -19,7 +19,7 @@ extra_rdoc_files:
19
19
  - LICENSE
20
20
  - README.md
21
21
  files:
22
- - .gitignore
22
+ - ".gitignore"
23
23
  - CHANGELOG.md
24
24
  - Gemfile
25
25
  - Gemfile.lock
@@ -71,21 +71,21 @@ licenses:
71
71
  metadata: {}
72
72
  post_install_message:
73
73
  rdoc_options:
74
- - --title
74
+ - "--title"
75
75
  - amazon-pricing documentation
76
- - --line-numbers
77
- - --main
76
+ - "--line-numbers"
77
+ - "--main"
78
78
  - README.md
79
79
  require_paths:
80
80
  - lib
81
81
  required_ruby_version: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - ! '>='
83
+ - - ">="
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0'
86
86
  required_rubygems_version: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ! '>='
88
+ - - ">="
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  requirements: []