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