awscosts 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -4
  3. data/awscosts.gemspec +1 -0
  4. data/fixtures/vcr_cassettes/AWSCosts_EBS.yml +17 -496
  5. data/fixtures/vcr_cassettes/AWSCosts_EC2OnDemand/EC2_type_of_linux.yml +63 -4583
  6. data/fixtures/vcr_cassettes/AWSCosts_EC2OnDemand/EC2_type_of_rhel.yml +63 -4585
  7. data/fixtures/vcr_cassettes/AWSCosts_EC2OnDemand/EC2_type_of_sles.yml +63 -4585
  8. data/fixtures/vcr_cassettes/AWSCosts_EC2OnDemand/EC2_type_of_windows.yml +63 -4583
  9. data/fixtures/vcr_cassettes/AWSCosts_EC2OnDemand/EC2_type_of_windows_with_sql.yml +63 -3535
  10. data/fixtures/vcr_cassettes/AWSCosts_EC2OnDemand/EC2_type_of_windows_with_sql_web.yml +63 -4060
  11. data/fixtures/vcr_cassettes/AWSCosts_EC2ReservedInstances/Reserved_instances/in_the_us-east-1_region/EC2_type_of_linux.yml +16 -5970
  12. data/fixtures/vcr_cassettes/AWSCosts_EC2ReservedInstances/Reserved_instances/in_the_us-east-1_region/EC2_type_of_rhel.yml +16 -5970
  13. data/fixtures/vcr_cassettes/AWSCosts_EC2ReservedInstances/Reserved_instances/in_the_us-east-1_region/EC2_type_of_sles.yml +16 -5970
  14. data/fixtures/vcr_cassettes/AWSCosts_EC2ReservedInstances/Reserved_instances/in_the_us-east-1_region/EC2_type_of_windows.yml +16 -5970
  15. data/fixtures/vcr_cassettes/AWSCosts_EC2ReservedInstances/Reserved_instances/in_the_us-east-1_region/EC2_type_of_windows_with_sql.yml +16 -5970
  16. data/fixtures/vcr_cassettes/AWSCosts_EC2ReservedInstances/Reserved_instances/in_the_us-east-1_region/EC2_type_of_windows_with_sql_web.yml +16 -5970
  17. data/fixtures/vcr_cassettes/AWSCosts_ELB.yml +17 -283
  18. data/fixtures/vcr_cassettes/AWSCosts_EMR.yml +12 -12
  19. data/fixtures/vcr_cassettes/AWSCosts_ElasticIPs.yml +17 -445
  20. data/fixtures/vcr_cassettes/AWSCosts_S3DataTransfer.yml +19 -925
  21. data/fixtures/vcr_cassettes/AWSCosts_S3Requests.yml +19 -454
  22. data/fixtures/vcr_cassettes/AWSCosts_S3Storage.yml +19 -1396
  23. data/lib/awscosts/cache.rb +26 -4
  24. data/lib/awscosts/ec2.rb +26 -5
  25. data/lib/awscosts/ec2_ebs.rb +3 -14
  26. data/lib/awscosts/ec2_ebs_optimized.rb +31 -0
  27. data/lib/awscosts/ec2_elastic_ips.rb +4 -4
  28. data/lib/awscosts/ec2_elb.rb +4 -4
  29. data/lib/awscosts/ec2_on_demand.rb +24 -19
  30. data/lib/awscosts/ec2_reserved_instances.rb +7 -8
  31. data/lib/awscosts/emr.rb +1 -2
  32. data/lib/awscosts/region.rb +12 -10
  33. data/lib/awscosts/s3.rb +4 -3
  34. data/lib/awscosts/s3_data_transfer.rb +7 -7
  35. data/lib/awscosts/s3_requests.rb +5 -6
  36. data/lib/awscosts/s3_storage.rb +7 -7
  37. data/lib/awscosts/version.rb +1 -1
  38. data/spec/awscosts/ec2_ebs_spec.rb +17 -33
  39. data/spec/awscosts/ec2_elastic_ips_spec.rb +2 -0
  40. data/spec/awscosts/ec2_reserved_instances_spec.rb +3 -0
  41. metadata +17 -2
@@ -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.get("/s3/pricing/pricing-requests.json") do |data|
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 |region|
16
+ data['config']['regions'].each do |r|
18
17
  tiers = {}
19
- region['tiers'].each do |tier|
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[region['region']] = tiers
21
+ result[r['region']] = tiers
23
22
  end
24
23
  result
25
24
  end
@@ -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.get("/s3/pricing/pricing-storage.json") do |data|
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 |region|
16
+ data['config']['regions'].each do |r|
18
17
  tiers = {}
19
- region['tiers'].each do |tier|
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
- storage_type[type['type']] = type['prices']['USD'].to_f
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[region['region']] = tiers
26
+ result[r['region']] = tiers
27
27
  end
28
28
  result
29
29
  end
@@ -1,3 +1,3 @@
1
1
  module AWSCosts
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -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
- describe 'standard EBS volume' do
11
- let(:price) { subject.price(:standard) }
12
-
13
- it 'should provide price per GB / month for provisioned storage' do
14
- price['perGBmoProvStorage'].should > 0
15
- end
16
-
17
- it 'should provide price per Million requests per month' do
18
- price['perMMIOreq'].should > 0
19
- end
20
- end
21
-
22
- describe 'provisioned IOPS price' do
23
- let(:price) { subject.price(:provisioned_iops) }
24
-
25
- it 'should provide price per GB / month for provisioned storage' do
26
- price['perGBmoProvStorage'].should > 0
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.8
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-06-03 00:00:00.000000000 Z
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