amazon-pricing 0.1.56 → 0.1.57

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OGM5YjZlZjA0ODk5NzQ4YTY1ZDU2Nzk4MzJhMGRiODY1ZjNlMDgyMQ==
4
+ MGNhNDVjYjI2NDdhZTk5ZDM4ZjliMjk2MWU0NmEwMmRiOTIwN2M2Nw==
5
5
  data.tar.gz: !binary |-
6
- MTVmOGNkMmQyZTZlM2U5M2UzOWVhYjZhM2I5YzVlOTc5Yzg1NTliZg==
6
+ MzQxOGYwZWNlOWRlMTdkN2U4YjA0Y2JhYWU4NjI2ZTEyYTcxMjdhMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NDRkNWU0MWU2MTRmZGMwMzJjYWYxZDg0ODJhNjgwYzVjYzllYzJiMDAxY2Mx
10
- YjFlZTBlNTRjOTk2NmQyY2Q5MGRlY2UyN2M0MjhjZWExMzJmMTk5MTdiNTcw
11
- MDk1ZTFiZjRhMzJlZjA5MzMyNWM4OWE3NGYxMWNkMDQwMDUzZGI=
9
+ MTUyZDg1Y2UwNWJjOGU1YzRhZTc2MGNkYjFjNWRjNmJmNjlhZGNkNDJiMTA5
10
+ YTJkNzU1ZmRlMjE1OWFlY2M3MjliNjc1MTg2OTkxYWU4NWVlYjIzN2ZiODBl
11
+ NDcxMWZlMzIzNjEzZWVhMGY2YzIwYTk1ZTcxZGZiNTFiM2EwODA=
12
12
  data.tar.gz: !binary |-
13
- MjE4YWQ5ZDc5MzAxMGE5MTk3ZmM4MDAxNGM2OTUzMjY0ZTlkZTdlZjVhNmE2
14
- YTQwYzExZTE3MDU4NTBkYzkzMTA1ODU4ZjliM2FlNjI5YzY2YzAyYzU2N2Iz
15
- YzIwM2UwNjMzZmJiYjdmZTdlNzlhYTYwNDZiMjI1OWMzODNmNmI=
13
+ MjU4MDFlNDI3YTU2ZmIwNGJhZTAxMzBmMWZhYjJmOThiZjZhZTM1ZTdkMjVh
14
+ MDYyNTJjNDNkNzlhZWUyZTYxYzdiMTQwMWY2YjdhOTBjYmU3YzNkYmU1ZjAx
15
+ NWZmOWI4YjA5YjE1MDFmODUxYzA0Zjg5ZGY3YjU4ZWEwMzU1ZmM=
@@ -0,0 +1,8 @@
1
+ .bundle
2
+ vendor/
3
+ bin/
4
+ .rakeTasks
5
+ .ruby*
6
+ amazon-pricing*.gem
7
+ .coveralls.yml
8
+ coverage/*
data/Gemfile CHANGED
@@ -1,13 +1,14 @@
1
- # A sample Gemfile
2
1
  source "https://rubygems.org"
3
2
  gemspec
4
3
 
5
4
  gem 'mechanize', '~> 2.7.3'
6
5
 
6
+ group :development do
7
+ gem 'pry'
8
+ end
9
+
7
10
  group :test do
8
11
  gem 'rake'
9
12
  gem 'test-unit'
10
13
  gem 'rspec', '~> 2.11.0'
11
14
  end
12
-
13
- # gem "rails"
@@ -1,12 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- amazon-pricing (0.1.56)
4
+ amazon-pricing (0.1.57)
5
5
  mechanize (~> 2.7.3)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
+ coderay (1.1.0)
10
11
  diff-lcs (1.1.3)
11
12
  domain_name (0.5.23)
12
13
  unf (>= 0.0.5, < 1.0.0)
@@ -21,15 +22,19 @@ GEM
21
22
  nokogiri (~> 1.4)
22
23
  ntlm-http (~> 0.1, >= 0.1.1)
23
24
  webrobots (>= 0.0.9, < 0.2)
25
+ method_source (0.8.2)
24
26
  mime-types (2.4.3)
25
- mini_portile (0.6.1)
27
+ mini_portile (0.6.2)
26
28
  net-http-digest_auth (1.4)
27
29
  net-http-persistent (2.9.4)
28
- nokogiri (1.6.5)
30
+ nokogiri (1.6.6.2)
29
31
  mini_portile (~> 0.6.0)
30
32
  ntlm-http (0.1.1)
31
- power_assert (0.2.2)
32
- rake (10.4.2)
33
+ pry (0.10.1)
34
+ coderay (~> 1.1.0)
35
+ method_source (~> 0.8.1)
36
+ slop (~> 3.4)
37
+ rake (10.1.0)
33
38
  rspec (2.11.0)
34
39
  rspec-core (~> 2.11.0)
35
40
  rspec-expectations (~> 2.11.0)
@@ -38,8 +43,8 @@ GEM
38
43
  rspec-expectations (2.11.3)
39
44
  diff-lcs (~> 1.1.3)
40
45
  rspec-mocks (2.11.3)
41
- test-unit (3.0.8)
42
- power_assert
46
+ slop (3.6.0)
47
+ test-unit (2.5.5)
43
48
  unf (0.1.4)
44
49
  unf_ext
45
50
  unf_ext (0.0.6)
@@ -51,6 +56,7 @@ PLATFORMS
51
56
  DEPENDENCIES
52
57
  amazon-pricing!
53
58
  mechanize (~> 2.7.3)
59
+ pry
54
60
  rake
55
61
  rspec (~> 2.11.0)
56
62
  test-unit
@@ -1,15 +1,10 @@
1
-
2
1
  require 'json'
3
2
  require 'net/http'
4
3
  require 'mechanize'
5
4
 
6
- Dir[File.join(File.dirname(__FILE__), 'amazon-pricing/*.rb')].sort.each { |lib| require lib }
7
-
8
- require 'aws-price-list'
9
- require 'ec2-price-list'
10
- require 'rds-price-list'
11
- require 'dynamo-db-price-list'
5
+ Dir[File.join(File.dirname(__FILE__), 'amazon-pricing/definitions/*.rb')].sort.each { |lib| require lib }
12
6
 
13
- require 'logger'
14
- logger = Logger.new(STDERR)
15
- logger.level = Logger::WARN
7
+ require 'amazon-pricing/aws-price-list'
8
+ require 'amazon-pricing/ec2-price-list'
9
+ require 'amazon-pricing/rds-price-list'
10
+ require 'amazon-pricing/dynamo-db-price-list'
@@ -74,6 +74,9 @@ module AwsPricing
74
74
  # http://stackoverflow.com/questions/2060356/parsing-json-without-quoted-keys
75
75
  JSON.parse(body.gsub(/(\w+)\s*:/, '"\1":'))
76
76
  end
77
+ rescue
78
+ $stderr.puts "Failed to parse: #{url}"
79
+ raise
77
80
  end
78
81
 
79
82
  protected
@@ -7,6 +7,9 @@
7
7
  # License:: Distributes under the same terms as Ruby
8
8
  # Home:: http://github.com/CloudHealth/amazon-pricing
9
9
  #++
10
+
11
+ require 'amazon-pricing/definitions/category-type'
12
+
10
13
  module AwsPricing
11
14
  class DatabaseType < CategoryType
12
15
 
@@ -26,7 +29,9 @@ module AwsPricing
26
29
  'sqlserver_ex' => 'Microsoft SQL Server Express Edition',
27
30
  'sqlserver_web' => 'Microsoft SQL Server Web Edition',
28
31
  'sqlserver_se_standard' => 'Microsoft SQL Server Standard Edition',
32
+ 'sqlserver_se_multiaz' => 'Microsoft SQL Server Standard Edition (Multi-AZ)',
29
33
  'sqlserver_se_byol' => 'Microsoft SQL Server Standard Edition (BYOL)',
34
+ 'sqlserver_se_byol_multiaz' => 'Microsoft SQL Server Standard Edition (BYOL Multi-AZ)',
30
35
  'sqlserver_ee_byol' => 'Microsoft SQL Server Enterprise Edition (BYOL)'
31
36
  }
32
37
 
@@ -48,7 +53,9 @@ module AwsPricing
48
53
  'sqlserver-ee(byol)' => 'sqlserver_ee_byol',
49
54
  'sqlserver-ex(li)' => 'sqlserver_ex',
50
55
  'sqlserver-se(byol)' => 'sqlserver_se_byol',
56
+ 'sqlserver-se(byol)_multiaz' => 'sqlserver_se_byol_multiaz',
51
57
  'sqlserver-se(li)' => 'sqlserver_se_standard',
58
+ 'sqlserver-se(li)_multiaz' => 'sqlserver_se_multiaz',
52
59
  'sqlserver-web(li)' => 'sqlserver_web',
53
60
  }
54
61
 
@@ -58,7 +65,7 @@ module AwsPricing
58
65
  :oracle_se1 => [:standard, :multiaz, :byol, :byol_multiaz],
59
66
  :oracle_se => [:byol, :byol_multiaz],
60
67
  :oracle_ee => [:byol, :byol_multiaz],
61
- :sqlserver_se => [:standard, :byol],
68
+ :sqlserver_se => [:standard, :multiaz, :byol, :byol_multiaz],
62
69
  :sqlserver_ee => [:byol]
63
70
  }
64
71
 
@@ -1,4 +1,5 @@
1
- require 'amazon-pricing/instance-type'
1
+ require 'amazon-pricing/definitions/instance-type'
2
+
2
3
  module AwsPricing
3
4
  class Ec2InstanceType < InstanceType
4
5
 
@@ -7,6 +7,9 @@
7
7
  # License:: Distributes under the same terms as Ruby
8
8
  # Home:: http://github.com/CloudHealth/amazon-pricing
9
9
  #++
10
+
11
+ require 'amazon-pricing/definitions/category-type'
12
+
10
13
  module AwsPricing
11
14
  class OperatingSystem < CategoryType
12
15
  end
@@ -1,4 +1,5 @@
1
- require 'amazon-pricing/instance-type'
1
+ require 'amazon-pricing/definitions/instance-type'
2
+
2
3
  module AwsPricing
3
4
  class RdsInstanceType < InstanceType
4
5
 
@@ -14,19 +14,26 @@ module AwsPricing
14
14
  @@RES_TYPES = [:light, :medium, :heavy]
15
15
 
16
16
  @@OD_DB_DEPLOY_TYPE = {
17
- :mysql=> {:mysql=>["standard","multiAZ"]},
18
- :postgresql=> {:postgresql=>["standard","multiAZ"]},
19
- :oracle=> {:oracle_se1=>["li-standard","li-multiAZ","byol-standard","byol-multiAZ"], :oracle_se=>["byol-standard","byol-multiAZ"], :oracle_ee=>["byol-standard","byol-multiAZ"]},
20
- :sqlserver=> {:sqlserver_ex=>["li-ex"], :sqlserver_web=>["li-web"], :sqlserver_se=>["li-se", "byol"], :sqlserver_ee=>["byol"]}
21
- }
22
-
17
+ :mysql => {:mysql=>["standard","multiAZ"]},
18
+ :postgresql => {:postgresql=>["standard","multiAZ"]},
19
+ :oracle => {
20
+ :oracle_se1=>["li-standard","li-multiAZ","byol-standard","byol-multiAZ"],
21
+ :oracle_se=>["byol-standard","byol-multiAZ"],
22
+ :oracle_ee=>["byol-standard","byol-multiAZ"]
23
+ },
24
+ :sqlserver => {
25
+ :sqlserver_ex=>["li-ex"],
26
+ :sqlserver_web=>["li-web"],
27
+ :sqlserver_se=>["li-se", "li-se-multiAZ", "byol", "byol-multiAZ"],
28
+ :sqlserver_ee=>["byol"]
29
+ }
30
+ }
23
31
 
24
32
  @@RESERVED_DB_DEPLOY_TYPE = {
25
- :oracle=> {:oracle_se1=>["li","byol"], :oracle_se=>["byol"], :oracle_ee=>["byol"]},
26
- :sqlserver=> {:sqlserver_ex=>["li-ex"], :sqlserver_web=>["li-web"], :sqlserver_se=>["li-se","byol"], :sqlserver_ee=>["byol"]}
27
- }
33
+ :oracle=> {:oracle_se1=>["li","byol"], :oracle_se=>["byol"], :oracle_ee=>["byol"]},
34
+ :sqlserver=> {:sqlserver_ex=>["li-ex"], :sqlserver_web=>["li-web"], :sqlserver_se=>["li-se","byol"], :sqlserver_ee=>["byol"]}
35
+ }
28
36
 
29
-
30
37
  def is_multi_az?(type)
31
38
  return true if type.upcase.match("MULTI-AZ")
32
39
  false
@@ -45,18 +52,27 @@ module AwsPricing
45
52
  # to find out the byol type
46
53
  is_byol = is_byol? dp_type
47
54
  is_multi_az = dp_type.upcase.include?("MULTIAZ")
55
+ dp_type = dp_type.gsub('-multiAZ', '') if db == :sqlserver
48
56
 
49
57
  if [:mysql, :postgresql, :oracle].include? db
50
58
  fetch_on_demand_rds_instance_pricing(RDS_BASE_URL+"#{db}/pricing-#{dp_type}-deployments.min.js",:ondemand, db_type, is_byol, is_multi_az)
51
59
  elsif db == :sqlserver
52
- fetch_on_demand_rds_instance_pricing(RDS_BASE_URL+"#{db}/sqlserver-#{dp_type}-ondemand.min.js",:ondemand, db_type, is_byol, is_multi_az)
60
+ if is_multi_az
61
+ fetch_on_demand_rds_instance_pricing(RDS_BASE_URL+"#{db}/sqlserver-#{dp_type}-ondemand-maz.min.js",:ondemand, db_type, is_byol, is_multi_az)
62
+ else
63
+ fetch_on_demand_rds_instance_pricing(RDS_BASE_URL+"#{db}/sqlserver-#{dp_type}-ondemand.min.js",:ondemand, db_type, is_byol, is_multi_az)
64
+ end
53
65
  end
54
66
 
55
67
  # Now repeat for legacy instances
56
68
  if [:mysql, :postgresql, :oracle].include? db
57
69
  fetch_on_demand_rds_instance_pricing(RDS_BASE_URL+"#{db}/previous-generation/pricing-#{dp_type}-deployments.min.js",:ondemand, db_type, is_byol, is_multi_az)
58
70
  elsif db == :sqlserver
59
- fetch_on_demand_rds_instance_pricing(RDS_BASE_URL+"#{db}/previous-generation/sqlserver-#{dp_type}-ondemand.min.js",:ondemand, db_type, is_byol, is_multi_az)
71
+ if is_multi_az
72
+ fetch_on_demand_rds_instance_pricing(RDS_BASE_URL+"#{db}/previous-generation/sqlserver-#{dp_type}-ondemand-maz.min.js",:ondemand, db_type, is_byol, is_multi_az)
73
+ else
74
+ fetch_on_demand_rds_instance_pricing(RDS_BASE_URL+"#{db}/previous-generation/sqlserver-#{dp_type}-ondemand.min.js",:ondemand, db_type, is_byol, is_multi_az)
75
+ end
60
76
  end
61
77
 
62
78
  end
@@ -152,6 +168,9 @@ module AwsPricing
152
168
  end
153
169
  end
154
170
  end
171
+ rescue => ex
172
+ $sterr.puts "Failed to fetch: #{url}"
173
+ raise
155
174
  end
156
175
  end
157
176
  end
@@ -8,5 +8,5 @@
8
8
  # Home:: http://github.com/CloudHealth/amazon-pricing
9
9
  #++
10
10
  module AwsPricing
11
- VERSION = '0.1.56'
11
+ VERSION = '0.1.57'
12
12
  end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'AwsPricing::DatabaseType' do
4
+ context 'Display Names' do
5
+ ::AwsPricing::DatabaseType.class_variable_get(:@@ProductDescription).each_pair.each do |k, v|
6
+ class_eval %*
7
+ it "#{k} should be defined" do
8
+ ::AwsPricing::DatabaseType.class_variable_get(:@@Database_Name_Lookup)['#{v}'].should_not eq(nil)
9
+ end
10
+ *
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,3 @@
1
- require 'amazon-pricing'
2
- require File.join('amazon-pricing', 'database-type')
3
1
  require 'spec_helper'
4
2
 
5
3
  describe AwsPricing::RdsPriceList do
@@ -10,7 +8,7 @@ describe AwsPricing::RdsPriceList do
10
8
  end
11
9
 
12
10
  describe 'new' do
13
- it 'RdsPriceList.new should return the valid response' do
11
+ it 'RdsPriceList.new should return the valid response', broken: true do
14
12
  @pricing.regions.each do |region|
15
13
  # response should have valid region
16
14
  expect(@region_name).to include(region.name)
@@ -1 +1,7 @@
1
- #BROKEN IN TDDIUM: Dir.glob('spec/support/**/*.rb').sort.each {|f| require f}
1
+ #BROKEN IN TDDIUM: Dir.glob('spec/support/**/*.rb').sort.each {|f| require f}
2
+
3
+ RSpec.configure do |c|
4
+ c.filter_run_excluding broken: true
5
+ end
6
+
7
+ require 'amazon-pricing'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amazon-pricing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.56
4
+ version: 0.1.57
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Kinsella
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-20 00:00:00.000000000 Z
11
+ date: 2015-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mechanize
@@ -33,6 +33,7 @@ extra_rdoc_files:
33
33
  - LICENSE
34
34
  - README.md
35
35
  files:
36
+ - .gitignore
36
37
  - CHANGELOG.md
37
38
  - Gemfile
38
39
  - Gemfile.lock
@@ -46,22 +47,21 @@ files:
46
47
  - archive/rds-2014-05-22.csv
47
48
  - lib/.DS_Store
48
49
  - lib/amazon-pricing.rb
49
- - lib/amazon-pricing/category-type.rb
50
- - lib/amazon-pricing/database-type.rb
51
- - lib/amazon-pricing/ebs-price.rb
52
- - lib/amazon-pricing/ec2-instance-type.rb
53
- - lib/amazon-pricing/instance-type.rb
54
- - lib/amazon-pricing/operating-system.rb
55
- - lib/amazon-pricing/rds-instance-type.rb
56
- - lib/amazon-pricing/region.rb
50
+ - lib/amazon-pricing/aws-price-list.rb
51
+ - lib/amazon-pricing/definitions/category-type.rb
52
+ - lib/amazon-pricing/definitions/database-type.rb
53
+ - lib/amazon-pricing/definitions/ebs-price.rb
54
+ - lib/amazon-pricing/definitions/ec2-instance-type.rb
55
+ - lib/amazon-pricing/definitions/instance-type.rb
56
+ - lib/amazon-pricing/definitions/operating-system.rb
57
+ - lib/amazon-pricing/definitions/rds-instance-type.rb
58
+ - lib/amazon-pricing/definitions/region.rb
59
+ - lib/amazon-pricing/dynamo-db-price-list.rb
60
+ - lib/amazon-pricing/ec2-price-list.rb
61
+ - lib/amazon-pricing/rds-price-list.rb
57
62
  - lib/amazon-pricing/version.rb
58
- - lib/aws-price-list.rb
59
- - lib/dynamo-db-price-list.rb
60
- - lib/ec2-price-list.rb
61
- - lib/rds-price-list.rb
62
- - spec/instance_type_spec.rb
63
- - spec/price_list_spec.rb
64
- - spec/rds_pricing_spec.rb
63
+ - spec/lib/amazon-pricing/definitions/database-type_spec.rb
64
+ - spec/lib/amazon-pricing/rds_pricing_spec.rb
65
65
  - spec/spec_helper.rb
66
66
  - spec/support/.gitignore
67
67
  - test/ec2_instance_types_test.rb
@@ -91,15 +91,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
91
  version: '0'
92
92
  requirements: []
93
93
  rubyforge_project: amazon-pricing
94
- rubygems_version: 2.2.2
94
+ rubygems_version: 2.3.0
95
95
  signing_key:
96
96
  specification_version: 4
97
97
  summary: Amazon Web Services Pricing Ruby gem
98
- test_files:
99
- - spec/instance_type_spec.rb
100
- - spec/price_list_spec.rb
101
- - spec/rds_pricing_spec.rb
102
- - spec/spec_helper.rb
103
- - spec/support/.gitignore
104
- - test/ec2_instance_types_test.rb
105
- - test/helper.rb
98
+ test_files: []
@@ -1,12 +0,0 @@
1
- #require 'amazon-pricing/instance-type'
2
- #
3
- # THIS TEST IS NO LONGER VALID
4
- #describe AwsPricing::InstanceType do
5
- # describe '::get_values' do
6
- # it 'raises an UnknownTypeError on an unexpected instance type' do
7
- # expect {
8
- # AwsPricing::InstanceType::get_values 'QuantumODI', 'huge'
9
- # }.to raise_error(AwsPricing::UnknownTypeError)
10
- # end
11
- # end
12
- #end
@@ -1,44 +0,0 @@
1
- require 'amazon-pricing'
2
- require 'spec_helper'
3
-
4
- describe AwsPricing::PriceList do
5
-
6
- # Need to update below based on 2013-07 changes
7
- =begin
8
- describe "#get_ec2_on_demand_instance_pricing" do
9
- let(:price_list) {
10
- {
11
- 'config' => {
12
- 'regions' => [{
13
- 'region' => 'us-east',
14
- 'instanceTypes' => [{
15
- 'type' => 'stdODI',
16
- 'sizes' => [{
17
- 'size' => 'sm',
18
- 'valueColumns' => [
19
- {'name' => 'linux', 'prices' => { 'USD' => '0.065' }},
20
- {'name' => 'mswin', 'prices' => { 'USD' => '0.265' }}
21
- ]}]}]}]
22
- }
23
- }
24
- }
25
-
26
- before do
27
- AwsPricing::PriceList.any_instance.tap do |it|
28
- it.stub :get_ec2_reserved_instance_pricing
29
- it.stub :fetch_ec2_ebs_pricing
30
- it.stub :fetch_url => price_list
31
- end
32
- end
33
-
34
- it "doesn't break when amazon adds instance types" do
35
- newType = {'type' => 'quantumODI', 'sizes' => [{'size' => 'sm', 'valueColumns' => []}]}
36
- price_list['config']['regions'][0]['instanceTypes'] << newType
37
-
38
- expect {
39
- AwsPricing::PriceList.new
40
- }.to_not raise_error
41
- end
42
- end
43
- =end
44
- end