amazon-pricing 0.1.29 → 0.1.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +1 -1
- data/lib/amazon-pricing.rb +25 -1
- data/lib/amazon-pricing/ebs-price.rb +6 -2
- data/lib/amazon-pricing/version.rb +1 -1
- data/test/govcloud_test.rb +9 -0
- metadata +3 -3
data/Gemfile.lock
CHANGED
data/lib/amazon-pricing.rb
CHANGED
@@ -96,12 +96,14 @@ module AwsPricing
|
|
96
96
|
|
97
97
|
class GovCloudEc2PriceList < PriceList
|
98
98
|
GOV_CLOUD_URL = "http://aws.amazon.com/govcloud-us/pricing/ec2/"
|
99
|
+
GOV_CLOUD_EBS_URL = "http://aws.amazon.com/govcloud-us/pricing/ebs/"
|
99
100
|
|
100
101
|
def initialize
|
101
102
|
@_regions = {}
|
102
103
|
@_regions["us-gov-west"] = Region.new("us-gov-west")
|
103
104
|
InstanceType.populate_lookups
|
104
105
|
get_ec2_instance_pricing
|
106
|
+
fetch_ec2_ebs_pricing
|
105
107
|
end
|
106
108
|
|
107
109
|
protected
|
@@ -164,6 +166,27 @@ module AwsPricing
|
|
164
166
|
end
|
165
167
|
end
|
166
168
|
|
169
|
+
def fetch_ec2_ebs_pricing
|
170
|
+
client = Mechanize.new
|
171
|
+
page = client.get(GOV_CLOUD_EBS_URL)
|
172
|
+
ebs_costs = page.search("//div[@class='text section']//li")
|
173
|
+
@_regions.values.each do |region|
|
174
|
+
region.ebs_price = EbsPrice.new(region)
|
175
|
+
region.ebs_price.standard_per_gb = get_ebs_price(ebs_costs[0])
|
176
|
+
region.ebs_price.standard_per_million_io = get_ebs_price(ebs_costs[1])
|
177
|
+
region.ebs_price.preferred_per_gb = get_ebs_price(ebs_costs[2])
|
178
|
+
region.ebs_price.preferred_per_iops = get_ebs_price(ebs_costs[3])
|
179
|
+
region.ebs_price.s3_snaps_per_gb = get_ebs_price(ebs_costs[4])
|
180
|
+
end
|
181
|
+
|
182
|
+
end
|
183
|
+
|
184
|
+
# e.g. $0.065 per GB-Month of provisioned storage
|
185
|
+
def get_ebs_price(xml_element)
|
186
|
+
tokens = xml_element.text.split(" ")
|
187
|
+
tokens[0].gsub("$", "").to_f
|
188
|
+
end
|
189
|
+
|
167
190
|
def get_os(val)
|
168
191
|
case val
|
169
192
|
when "Amazon Linux"
|
@@ -352,7 +375,8 @@ module AwsPricing
|
|
352
375
|
res = PriceList.fetch_url(EBS_BASE_URL + "pricing-ebs.min.js")
|
353
376
|
res["config"]["regions"].each do |ebs_types|
|
354
377
|
region = get_region(ebs_types["region"])
|
355
|
-
region.ebs_price = EbsPrice.new(region
|
378
|
+
region.ebs_price = EbsPrice.new(region)
|
379
|
+
region.ebs_price.update_from_json(ebs_types)
|
356
380
|
end
|
357
381
|
end
|
358
382
|
|
@@ -10,10 +10,14 @@
|
|
10
10
|
module AwsPricing
|
11
11
|
|
12
12
|
class EbsPrice
|
13
|
-
|
13
|
+
attr_accessor :region, :standard_per_gb, :standard_per_million_io,
|
14
14
|
:preferred_per_gb, :preferred_per_iops, :s3_snaps_per_gb
|
15
15
|
|
16
|
-
def initialize(region
|
16
|
+
def initialize(region)
|
17
|
+
@region = region
|
18
|
+
end
|
19
|
+
|
20
|
+
def update_from_json(json)
|
17
21
|
json["types"].each do |t|
|
18
22
|
case t["name"]
|
19
23
|
when "ebsVols"
|
data/test/govcloud_test.rb
CHANGED
@@ -40,4 +40,13 @@ class TestGovCloud < Test::Unit::TestCase
|
|
40
40
|
assert instance.virtual_cores == 2
|
41
41
|
end
|
42
42
|
|
43
|
+
def test_ebs
|
44
|
+
region = @@ec2_pricing.get_region('us-gov-west')
|
45
|
+
assert region.ebs_price.standard_per_gb == 0.065
|
46
|
+
assert region.ebs_price.standard_per_million_io == 0.065
|
47
|
+
assert region.ebs_price.preferred_per_gb == 0.15
|
48
|
+
assert region.ebs_price.preferred_per_iops == 0.12
|
49
|
+
assert region.ebs_price.s3_snaps_per_gb == 0.125
|
50
|
+
end
|
51
|
+
|
43
52
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amazon-pricing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.30
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -65,7 +65,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
65
65
|
version: '0'
|
66
66
|
segments:
|
67
67
|
- 0
|
68
|
-
hash:
|
68
|
+
hash: -4082041594937074380
|
69
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
70
|
none: false
|
71
71
|
requirements:
|
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
74
|
version: '0'
|
75
75
|
segments:
|
76
76
|
- 0
|
77
|
-
hash:
|
77
|
+
hash: -4082041594937074380
|
78
78
|
requirements: []
|
79
79
|
rubyforge_project: amazon-pricing
|
80
80
|
rubygems_version: 1.8.25
|