class Ec2Pricing::Instances
Public Class Methods
on_demand()
click to toggle source
# File lib/ec2_pricing/instances.rb, line 7 def self.on_demand instances('http://aws-assets-pricing-prod.s3.amazonaws.com/pricing/ec2/linux-od.js') end
reserved()
click to toggle source
# File lib/ec2_pricing/instances.rb, line 11 def self.reserved instances('http://aws-assets-pricing-prod.s3.amazonaws.com/pricing/ec2/linux-ri-heavy.js') end
Private Class Methods
instances(callback_url)
click to toggle source
# File lib/ec2_pricing/instances.rb, line 18 def self.instances(callback_url) json = URI.parse(callback_url).read json = json.sub('callback(', '').sub(')', '') hash = JSON.parse(json) instances = {} for region in hash['config']['regions'] region_name = region['region'] instances[region_name] ||= {} for instanceType in region['instanceTypes'] for size in instanceType['sizes'] instance_size = size['size'] instances[region_name][instance_size] ||= {} for valueColumn in size['valueColumns'] # on-demand pricing has valueColumn names of 'linux' instead of a term length. if valueColumn['name'] == 'linux' instances[region_name][instance_size]['hourly'] = valueColumn['prices']['USD'] next end # change 'yrTerm1' to '1yr' term = valueColumn['name'].sub('yrTerm', '') + 'yr' price = valueColumn['prices']['USD'] rate = 'upfront' # after the above name change, change 'yrTerm1Hourly to '1yr' if term.include?('Hourly') || valueColumn['rate'].equal?('perhr') term = term.sub('Hourly', '') rate = 'hourly' end instances[region_name][instance_size][term] ||= {} instances[region_name][instance_size][term][rate] = price end end end end instances end