class AwsPricing::Ec2PriceList
Public Class Methods
new()
click to toggle source
Calls superclass method
AwsPricing::PriceList::new
# File lib/amazon-pricing/ec2-price-list.rb 5 def initialize 6 super 7 InstanceType.populate_lookups 8 get_ec2_on_demand_instance_pricing 9 get_ec2_legacy_reserved_instance_pricing 10 get_ec2_reserved_instance_pricing 11 fetch_ec2_ebs_pricing 12 end
Protected Instance Methods
fetch_ec2_ebs_pricing()
click to toggle source
# File lib/amazon-pricing/ec2-price-list.rb 72 def fetch_ec2_ebs_pricing 73 res_current = PriceList.fetch_url(EBS_BASE_URL + "pricing-ebs.min.js") 74 res_previous = PriceList.fetch_url(EBS_BASE_URL + "pricing-ebs-previous-generation.min.js") 75 res_current["config"]["regions"].each do |region_types_current| 76 region_name = region_types_current["region"] 77 region = get_region(region_name) 78 if region.nil? 79 $stderr.puts "[fetch_ec2_ebs_pricing] WARNING: unable to find region #{region_name}" 80 next 81 end 82 region_previous = res_previous["config"]["regions"] 83 region_types_previous = region_previous.select{|rp| region_name == rp["region"]}.first 84 region.ebs_price = EbsPrice.new(region) 85 region.ebs_price.update_from_json(region_types_current) 86 region.ebs_price.update_from_json(region_types_previous) 87 end 88 end
get_ec2_legacy_reserved_instance_pricing()
click to toggle source
# File lib/amazon-pricing/ec2-price-list.rb 35 def get_ec2_legacy_reserved_instance_pricing 36 @@OS_TYPES.each do |os| 37 @@LEGACY_RES_TYPES.each do |res_type| 38 fetch_ec2_instance_pricing(EC2_BASE_URL + "#{os}-ri-#{res_type}.min.js", res_type, os) 39 # Rinse & repeat for legacy instances (note: amazon changed URLs for legacy reserved instances) 40 os_rewrite = os 41 os_rewrite = "redhatlinux" if os == :rhel 42 os_rewrite = "suselinux" if os == :sles 43 os_rewrite = "mswinsqlstd" if os == :mswinSQL 44 os_rewrite = "mswinsqlweb" if os == :mswinSQLWeb 45 fetch_ec2_instance_pricing(EC2_BASE_URL + "previous-generation/#{res_type}_#{os_rewrite}.min.js", res_type, os) 46 end 47 end 48 end
get_ec2_on_demand_instance_pricing()
click to toggle source
# File lib/amazon-pricing/ec2-price-list.rb 25 def get_ec2_on_demand_instance_pricing 26 (@@OS_TYPES + @@NEW_OS_TYPES + @@LINUXSQL_OS_TYPES).each do |os| 27 fetch_ec2_instance_pricing(EC2_BASE_URL + "#{os}-od.min.js", :ondemand, os) 28 end 29 # Rinse & repeat for legacy instances 30 (@@OS_TYPES + @@LINUXSQL_OS_TYPES).each do |os| 31 fetch_ec2_instance_pricing(EC2_BASE_URL + "previous-generation/#{os}-od.min.js", :ondemand, os) 32 end 33 end
get_ec2_reserved_instance_pricing()
click to toggle source
# File lib/amazon-pricing/ec2-price-list.rb 50 def get_ec2_reserved_instance_pricing 51 # I give up on finding a pattern so just iterating over known URLs 52 page_targets = {"linux-unix" => :linux, "red-hat-enterprise-linux" => :rhel, "suse-linux" => :sles, "windows" => :mswin, 53 "windows-with-sql-server-standard" => :mswinSQL, "windows-with-sql-server-web" => :mswinSQLWeb, "windows-with-sql-server-enterprise" => :mswinSQLEnterprise, 54 "linux-with-sql-server-standard" => :linuxSQL, "linux-with-sql-server-web" => :linuxSQLWeb, "linux-with-sql-server-enterprise" => :linuxSQLEnterprise, 55 } 56 page_targets.each_pair do |target, operating_system| 57 url = "#{EC2_BASE_URL}ri-v2/#{target}-shared.min.js" 58 fetch_ec2_instance_pricing_ri_v2(url, operating_system) 59 end 60 61 # I give up on finding a pattern so just iterating over known URLs 62 page_targets = {"linux-unix" => :linux, "red-hat-enterprise-linux" => :rhel, "suse-linux" => :sles, "windows" => :mswin, 63 "windows-with-sql-server-standard" => :mswinSQL, "windows-with-sql-server-web" => :mswinSQLWeb, 64 "linux-with-sql-server-standard" => :linuxSQL, "linux-with-sql-server-web" => :linuxSQLWeb, "linux-with-sql-server-enterprise" => :linuxSQLEnterprise, 65 } 66 page_targets.each_pair do |target, operating_system| 67 url = "#{EC2_BASE_URL}previous-generation/ri-v2/#{target}-shared.min.js" 68 fetch_ec2_instance_pricing_ri_v2(url, operating_system) 69 end 70 end