lib/aws/rikanjo.rb in aws-rikanjo-0.0.1 vs lib/aws/rikanjo.rb in aws-rikanjo-0.0.2

- old
+ new

@@ -38,29 +38,29 @@ when "sa-east-1" region = "sa-east-1" end # TODO: merge om and ri - uri = URI.parse('http://aws-assets-pricing-prod.s3.amazonaws.com/pricing/ec2/linux-od.js') + uri = URI.parse('http://a0.awsstatic.com/pricing/1/ec2/linux-od.min.js') Net::HTTP.start(uri.host, uri.port) do |http| response = http.get(uri.request_uri) json = response.body end # parse - json = json.gsub(/^callback\(\n /,'').gsub(/\n\)/, '') - ondemandjson_data = Yajl::Parser.parse(json) + json = json.gsub("/*\n * This file is intended for use only on aws.amazon.com. We do not guarantee its availability or accuracy.\n *\n * Copyright 2014 Amazon.com, Inc. or its affiliates. All rights reserved.\n */\ncallback({vers:0.01,",'{').gsub("\);", '').gsub(/([a-zA-Z]+):/, '"\1":') + ondemand_json_data = Yajl::Parser.parse(json) # select 'region' and 'instance_type' - ondemandjson_data["config"]["regions"].each do |r| + ondemand_json_data["config"]["regions"].each do |r| # r = {"region"=>"us-east", "instanceTypes"=>[{"type"=>"generalCurrentGen", ... next unless r["region"] == region r["instanceTypes"].each do |type| # type = {"type"=>"generalCurrentGen", "sizes"=>[{"size"=>"m3.medium", "vCPU"=>"1" ... type["sizes"].each do |i| next unless i["size"] == instance_type - @om_info = {:hr_price => i["valueColumns"][0]["prices"]["USD"] } + @om_info = {:hr_price => i["valueColumns"][0]["prices"]["USD"]} end end end # :hr_price => price @@ -95,17 +95,17 @@ region = @region instance_type = @instance_type json = nil reservedjson_data = nil - uri = URI.parse("http://aws-assets-pricing-prod.s3.amazonaws.com/pricing/ec2/linux-ri-#{ri_util}.js") + uri = URI.parse("http://a0.awsstatic.com/pricing/1/ec2/linux-ri-#{ri_util}.min.js") Net::HTTP.start(uri.host, uri.port) do |http| response = http.get(uri.request_uri) json = response.body end - json = json.gsub(/callback\(\n/,'').gsub(/\n\)/, '') + json = json.gsub("/*\n * This file is intended for use only on aws.amazon.com. We do not guarantee its availability or accuracy.\n *\n * Copyright 2014 Amazon.com, Inc. or its affiliates. All rights reserved.\n */\ncallback({vers:0.01,",'{').gsub("\);", '').gsub(/([a-zA-Z]+):/, '"\1":') reservedjson_data = Yajl::Parser.parse(json) reservedjson_data["config"]["regions"].each do |r| next unless r["region"] == region r["instanceTypes"].each do |type| @@ -155,11 +155,10 @@ @ri_info[@ri_util].store(:yr_price, total_ri_price) # exp. @om_info = {:hr_price=>"0.350", :yr_price=>3066.0} # exp. @ri_info = {"ri_util"=>{:upfront=>"NNN", :hr_price=>"NNN", # :sweet_spot_price=>NNN, :sweet_spot_start_day=>78, :yr_price=>2074.56}} - return @om_info, @ri_info end def total_cost_year om_get_hr_price @@ -183,12 +182,11 @@ puts "\"sweet spot price (doller)\" : #{@ri_info[@ri_util][:sweet_spot_price]}" end end end -# m = Aws::RiKanjoo.new(region = "ap-northeast-1", instance_type = "m1.large", ri_util = "light") +# m = Aws::RiKanjoo.new(region = "ap-northeast-1", instance_type = "m3.large", ri_util = "medium") # m.total_cost_year -# # "region" : ap-northeast-1 # "instance_type" : m1.large # "ri_util" : light # "discont percent (percent)" : 32.34 # "ondemand hour price (doller)" : 0.350