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