awscosts 0.0.8 → 0.0.9
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.
- checksums.yaml +4 -4
- data/README.md +2 -4
- data/awscosts.gemspec +1 -0
- data/fixtures/vcr_cassettes/AWSCosts_EBS.yml +17 -496
- data/fixtures/vcr_cassettes/AWSCosts_EC2OnDemand/EC2_type_of_linux.yml +63 -4583
- data/fixtures/vcr_cassettes/AWSCosts_EC2OnDemand/EC2_type_of_rhel.yml +63 -4585
- data/fixtures/vcr_cassettes/AWSCosts_EC2OnDemand/EC2_type_of_sles.yml +63 -4585
- data/fixtures/vcr_cassettes/AWSCosts_EC2OnDemand/EC2_type_of_windows.yml +63 -4583
- data/fixtures/vcr_cassettes/AWSCosts_EC2OnDemand/EC2_type_of_windows_with_sql.yml +63 -3535
- data/fixtures/vcr_cassettes/AWSCosts_EC2OnDemand/EC2_type_of_windows_with_sql_web.yml +63 -4060
- data/fixtures/vcr_cassettes/AWSCosts_EC2ReservedInstances/Reserved_instances/in_the_us-east-1_region/EC2_type_of_linux.yml +16 -5970
- data/fixtures/vcr_cassettes/AWSCosts_EC2ReservedInstances/Reserved_instances/in_the_us-east-1_region/EC2_type_of_rhel.yml +16 -5970
- data/fixtures/vcr_cassettes/AWSCosts_EC2ReservedInstances/Reserved_instances/in_the_us-east-1_region/EC2_type_of_sles.yml +16 -5970
- data/fixtures/vcr_cassettes/AWSCosts_EC2ReservedInstances/Reserved_instances/in_the_us-east-1_region/EC2_type_of_windows.yml +16 -5970
- data/fixtures/vcr_cassettes/AWSCosts_EC2ReservedInstances/Reserved_instances/in_the_us-east-1_region/EC2_type_of_windows_with_sql.yml +16 -5970
- data/fixtures/vcr_cassettes/AWSCosts_EC2ReservedInstances/Reserved_instances/in_the_us-east-1_region/EC2_type_of_windows_with_sql_web.yml +16 -5970
- data/fixtures/vcr_cassettes/AWSCosts_ELB.yml +17 -283
- data/fixtures/vcr_cassettes/AWSCosts_EMR.yml +12 -12
- data/fixtures/vcr_cassettes/AWSCosts_ElasticIPs.yml +17 -445
- data/fixtures/vcr_cassettes/AWSCosts_S3DataTransfer.yml +19 -925
- data/fixtures/vcr_cassettes/AWSCosts_S3Requests.yml +19 -454
- data/fixtures/vcr_cassettes/AWSCosts_S3Storage.yml +19 -1396
- data/lib/awscosts/cache.rb +26 -4
- data/lib/awscosts/ec2.rb +26 -5
- data/lib/awscosts/ec2_ebs.rb +3 -14
- data/lib/awscosts/ec2_ebs_optimized.rb +31 -0
- data/lib/awscosts/ec2_elastic_ips.rb +4 -4
- data/lib/awscosts/ec2_elb.rb +4 -4
- data/lib/awscosts/ec2_on_demand.rb +24 -19
- data/lib/awscosts/ec2_reserved_instances.rb +7 -8
- data/lib/awscosts/emr.rb +1 -2
- data/lib/awscosts/region.rb +12 -10
- data/lib/awscosts/s3.rb +4 -3
- data/lib/awscosts/s3_data_transfer.rb +7 -7
- data/lib/awscosts/s3_requests.rb +5 -6
- data/lib/awscosts/s3_storage.rb +7 -7
- data/lib/awscosts/version.rb +1 -1
- data/spec/awscosts/ec2_ebs_spec.rb +17 -33
- data/spec/awscosts/ec2_elastic_ips_spec.rb +2 -0
- data/spec/awscosts/ec2_reserved_instances_spec.rb +3 -0
- metadata +17 -2
data/lib/awscosts/s3_requests.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
require 'httparty'
|
2
|
-
require 'json'
|
3
2
|
|
4
3
|
class AWSCosts::S3Requests
|
5
4
|
|
6
5
|
def initialize data
|
7
|
-
@data= data
|
6
|
+
@data = data
|
8
7
|
end
|
9
8
|
|
10
9
|
def price tier = nil
|
@@ -12,14 +11,14 @@ class AWSCosts::S3Requests
|
|
12
11
|
end
|
13
12
|
|
14
13
|
def self.fetch region
|
15
|
-
transformed= AWSCosts::Cache.
|
14
|
+
transformed = AWSCosts::Cache.get_jsonp("/pricing/1/s3/pricing-requests-s3.min.js") do |data|
|
16
15
|
result = {}
|
17
|
-
data['config']['regions'].each do |
|
16
|
+
data['config']['regions'].each do |r|
|
18
17
|
tiers = {}
|
19
|
-
|
18
|
+
r['tiers'].each do |tier|
|
20
19
|
tiers[tier['name']] = { rate: tier['rate'], price: tier['prices']['USD'].to_f}
|
21
20
|
end
|
22
|
-
result[
|
21
|
+
result[r['region']] = tiers
|
23
22
|
end
|
24
23
|
result
|
25
24
|
end
|
data/lib/awscosts/s3_storage.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
require 'httparty'
|
2
|
-
require 'json'
|
3
2
|
|
4
3
|
class AWSCosts::S3Storage
|
5
4
|
|
6
5
|
def initialize data
|
7
|
-
@data= data
|
6
|
+
@data = data
|
8
7
|
end
|
9
8
|
|
10
9
|
def price tier = nil
|
@@ -12,18 +11,19 @@ class AWSCosts::S3Storage
|
|
12
11
|
end
|
13
12
|
|
14
13
|
def self.fetch region
|
15
|
-
transformed= AWSCosts::Cache.
|
14
|
+
transformed = AWSCosts::Cache.get_jsonp("/pricing/1/s3/pricing-storage-s3.min.js") do |data|
|
16
15
|
result = {}
|
17
|
-
data['config']['regions'].each do |
|
16
|
+
data['config']['regions'].each do |r|
|
18
17
|
tiers = {}
|
19
|
-
|
18
|
+
r['tiers'].each do |tier|
|
20
19
|
storage_type = {}
|
21
20
|
tiers[tier['name']] = storage_type
|
22
21
|
tier['storageTypes'].each do |type|
|
23
|
-
|
22
|
+
# Don't return 0.0 for "N/A*" since that is misleading
|
23
|
+
storage_type[type['type']] = type['prices']['USD'] == 'N/A*' ? nil : type['prices']['USD'].to_f
|
24
24
|
end
|
25
25
|
end
|
26
|
-
result[
|
26
|
+
result[r['region']] = tiers
|
27
27
|
end
|
28
28
|
result
|
29
29
|
end
|
data/lib/awscosts/version.rb
CHANGED
@@ -7,40 +7,24 @@ describe AWSCosts::EBS do
|
|
7
7
|
context "in the region of #{region}" do
|
8
8
|
subject { AWSCosts.region(region).ec2.ebs}
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'should provide a price per PIOPS' do
|
30
|
-
price['perPIOPSreq'].should > 0
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe 'Snapshots to S3' do
|
35
|
-
let(:price) { subject.price(:snapshots_to_s3) }
|
36
|
-
|
37
|
-
it 'should provide a price per GB stored / month' do
|
38
|
-
price['perGBmoDataStored'].should > 0
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
10
|
+
['Amazon EBS General Purpose (SSD) volumes',
|
11
|
+
'Amazon EBS Provisioned IOPS (SSD) volumes',
|
12
|
+
'Amazon EBS Magnetic volumes', 'ebsSnapsToS3'].each do |name|
|
13
|
+
|
14
|
+
describe "for '#{name}'" do
|
15
|
+
let(:price) { subject.price.find { |p| p['name'] == name } }
|
16
|
+
|
17
|
+
it 'should provide a name' do
|
18
|
+
price['name'].should_not be_nil
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should provide values ' do
|
22
|
+
price['values'].should_not be_nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
42
27
|
end
|
43
|
-
|
44
28
|
end
|
45
29
|
|
46
30
|
|
@@ -4,6 +4,8 @@ describe AWSCosts::ElasticIPs do
|
|
4
4
|
use_vcr_cassette
|
5
5
|
|
6
6
|
AWSCosts::Region::SUPPORTED.keys.each do |region|
|
7
|
+
# no pricing for Frankfurt, yet!
|
8
|
+
next if region == 'eu-central-1'
|
7
9
|
|
8
10
|
context "in the region of #{region}" do
|
9
11
|
subject { AWSCosts.region(region).ec2.elastic_ips}
|
@@ -6,6 +6,9 @@ describe AWSCosts::EC2ReservedInstances do
|
|
6
6
|
|
7
7
|
AWSCosts::Region::SUPPORTED.keys.each do |r|
|
8
8
|
|
9
|
+
# no pricing for Frankfurt, yet!
|
10
|
+
next if r == 'eu-central-1'
|
11
|
+
|
9
12
|
context "in the #{r} region" do
|
10
13
|
[:windows, :linux, :windows_with_sql, :windows_with_sql_web, :rhel, :sles].each do |type|
|
11
14
|
context "EC2 type of #{type}" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awscosts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Bartlett
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.11.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: oj
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.1'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,6 +145,7 @@ files:
|
|
131
145
|
- lib/awscosts/cache.rb
|
132
146
|
- lib/awscosts/ec2.rb
|
133
147
|
- lib/awscosts/ec2_ebs.rb
|
148
|
+
- lib/awscosts/ec2_ebs_optimized.rb
|
134
149
|
- lib/awscosts/ec2_elastic_ips.rb
|
135
150
|
- lib/awscosts/ec2_elb.rb
|
136
151
|
- lib/awscosts/ec2_on_demand.rb
|