amazon-pricing 0.1.21 → 0.1.22

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- amazon-pricing (0.1.16)
4
+ amazon-pricing (0.1.22)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -40,6 +40,10 @@ module AwsPricing
40
40
  page = Net::HTTP.get_response(uri)
41
41
  # Now that AWS switched from json to jsonp, remove first/last lines
42
42
  body = page.body.gsub("callback(", "").reverse.sub(")", "").reverse
43
+ if body.split("\n").last == ";"
44
+ # Now remove one more line (rds is returning ";", ec2 empty line)
45
+ body = body.reverse.sub(";", "").reverse
46
+ end
43
47
 
44
48
  #body = page.body.split("\n")[1..-2].join("\n")
45
49
  JSON.parse(body)
@@ -61,21 +61,5 @@ module AwsPricing
61
61
  [api_name, name]
62
62
  end
63
63
 
64
-
65
- @@Name_Lookup = {
66
- 'm1.small' => 'Standard Small', 'm1.medium' => 'Standard Medium', 'm1.large' => 'Standard Large', 'm1.xlarge' => 'Standard Extra Large',
67
- 'm2.xlarge' => 'Hi-Memory Extra Large', 'm2.2xlarge' => 'Hi-Memory Double Extra Large', 'm2.4xlarge' => 'Hi-Memory Quadruple Extra Large',
68
- 'm3.medium' => 'M3 Medium Instance', 'm3.large'=>'M3 Large Instance', 'm3.xlarge' => 'M3 Extra Large Instance', 'm3.2xlarge' => 'M3 Double Extra Large Instance',
69
- 'c1.medium' => 'High-CPU Medium', 'c1.xlarge' => 'High-CPU Extra Large',
70
- 'hi1.4xlarge' => 'High I/O Quadruple Extra Large',
71
- 'cg1.4xlarge' => 'Cluster GPU Quadruple Extra Large',
72
- 'cc1.4xlarge' => 'Cluster Compute Quadruple Extra Large', 'cc2.8xlarge' => 'Cluster Compute Eight Extra Large',
73
- 't1.micro' => 'Micro',
74
- 'cr1.8xlarge' => 'High-Memory Cluster Eight Extra Large',
75
- 'hs1.8xlarge' => 'High-Storage Eight Extra Large',
76
- 'g2.2xlarge' => 'Cluster GPU Double Extra Large',
77
- 'c3.large' => 'High-Compute Large', 'c3.xlarge' => 'High-Compute Extra Large', 'c3.2xlarge' => 'High-Compute Double Extra Large', 'c3.4xlarge' => 'High-Compute Quadruple Extra Large', 'c3.8xlarge' => 'High-Compute Eight Extra Large',
78
- 'i2.xlarge' => 'High I/O Extra Large', 'i2.2xlarge' => 'High I/O Double Extra Large', 'i2.4xlarge' => 'High I/O Quadruple Extra Large', 'i2.8xlarge' => 'High I/O Eight Extra Large'
79
- }
80
64
  end
81
65
  end
@@ -110,6 +110,21 @@ module AwsPricing
110
110
  values
111
111
  end
112
112
 
113
+ @@Name_Lookup = {
114
+ 'm1.small' => 'Standard Small', 'm1.medium' => 'Standard Medium', 'm1.large' => 'Standard Large', 'm1.xlarge' => 'Standard Extra Large',
115
+ 'm2.xlarge' => 'Hi-Memory Extra Large', 'm2.2xlarge' => 'Hi-Memory Double Extra Large', 'm2.4xlarge' => 'Hi-Memory Quadruple Extra Large',
116
+ 'm3.medium' => 'M3 Medium Instance', 'm3.large'=>'M3 Large Instance', 'm3.xlarge' => 'M3 Extra Large Instance', 'm3.2xlarge' => 'M3 Double Extra Large Instance',
117
+ 'c1.medium' => 'High-CPU Medium', 'c1.xlarge' => 'High-CPU Extra Large',
118
+ 'hi1.4xlarge' => 'High I/O Quadruple Extra Large',
119
+ 'cg1.4xlarge' => 'Cluster GPU Quadruple Extra Large',
120
+ 'cc1.4xlarge' => 'Cluster Compute Quadruple Extra Large', 'cc2.8xlarge' => 'Cluster Compute Eight Extra Large',
121
+ 't1.micro' => 'Micro',
122
+ 'cr1.8xlarge' => 'High-Memory Cluster Eight Extra Large',
123
+ 'hs1.8xlarge' => 'High-Storage Eight Extra Large',
124
+ 'g2.2xlarge' => 'Cluster GPU Double Extra Large',
125
+ 'c3.large' => 'High-Compute Large', 'c3.xlarge' => 'High-Compute Extra Large', 'c3.2xlarge' => 'High-Compute Double Extra Large', 'c3.4xlarge' => 'High-Compute Quadruple Extra Large', 'c3.8xlarge' => 'High-Compute Eight Extra Large',
126
+ 'i2.xlarge' => 'High I/O Extra Large', 'i2.2xlarge' => 'High I/O Double Extra Large', 'i2.4xlarge' => 'High I/O Quadruple Extra Large', 'i2.8xlarge' => 'High I/O Eight Extra Large',
127
+ }
113
128
  @@Memory_Lookup = {
114
129
  'm1.small' => 1700, 'm1.medium' => 3750, 'm1.large' => 7500, 'm1.xlarge' => 15000,
115
130
  'm2.xlarge' => 17100, 'm2.2xlarge' => 34200, 'm2.4xlarge' => 68400,
@@ -1,6 +1,26 @@
1
1
  require 'amazon-pricing/instance-type'
2
2
  module AwsPricing
3
3
  class RdsInstanceType < InstanceType
4
+
5
+ def initialize(region, api_name, name, json)
6
+ @category_types = {}
7
+
8
+ @region = region
9
+ @name = name
10
+ @api_name = api_name
11
+
12
+ # Let's look up using the standard name but need to remove leading "db." to do so
13
+ api_name_for_lookup = api_name.sub("db.", "")
14
+
15
+ @memory_in_mb = @@Memory_Lookup[api_name_for_lookup]
16
+ @disk_in_gb = @@Disk_Lookup[api_name_for_lookup]
17
+ @platform = @@Platform_Lookup[api_name_for_lookup]
18
+ @compute_units = @@Compute_Units_Lookup[api_name_for_lookup]
19
+ @virtual_cores = @@Virtual_Cores_Lookup[api_name_for_lookup]
20
+ @disk_type = @@Disk_Type_Lookup[api_name_for_lookup]
21
+ end
22
+
23
+
4
24
  # database_type = :mysql, :oracle, :sqlserver
5
25
  # type_of_instance = :ondemand, :light, :medium, :heavy
6
26
 
@@ -56,47 +76,39 @@ module AwsPricing
56
76
  protected
57
77
 
58
78
  # Returns [api_name, name]
59
- def self.get_name(instance_type, size, is_reserved = false)
60
- lookup = @@Api_Name_Lookup
61
- lookup = @@Api_Name_Lookup_Reserved if is_reserved
79
+ # e.g. memDBCurrentGen, db.m3.medium
80
+ def self.get_name(instance_type, api_name, is_reserved = false)
81
+
82
+ # Note: These api names are specific to RDS, not sure why Amazon has given them different API names (note: they have leading "db.")
83
+ #'cr1.8xl' => 'High-Memory Cluster Eight Extra Large',
84
+ #'micro' => 'Micro',
85
+ #'sm' => 'Standard Small',
86
+ #'xxlHiMem' => 'Hi-Memory Double Extra Large'
87
+ if ["db.cr1.8xl", "db.micro", "db.sm", "db.xxlHiMem", "sm", "micro", "xxlHiMem"].include? api_name
88
+ case api_name
89
+ when "db.cr1.8xl"
90
+ api_name = "db.cr1.8xlarge"
91
+ when "db.xxlHiMem", "xxlHiMem"
92
+ api_name = "db.m2.2xlarge"
93
+ when "db.micro", "micro"
94
+ api_name = "db.t1.micro"
95
+ when "db.sm", "sm"
96
+ api_name = "db.m1.small"
97
+ end
98
+ end
99
+
100
+ # Let's look up using the standard name but need to remove leading "db." to do so
101
+ api_name_for_lookup = api_name.sub("db.", "")
62
102
 
63
103
  # Let's handle new instances more gracefully
64
- unless lookup.has_key? instance_type
65
- raise UnknownTypeError, "Unknown instance type #{instance_type}", caller
66
- else
67
- api_name = lookup[instance_type][size]
104
+ unless @@Name_Lookup.has_key? api_name_for_lookup
105
+ raise UnknownTypeError, "Unknown instance type #{instance_type} #{api_name}", caller
68
106
  end
69
107
 
70
- lookup = @@Name_Lookup
71
- lookup = @@Name_Lookup_Reserved if is_reserved
72
- name = lookup[instance_type][size]
108
+ name = @@Name_Lookup[api_name_for_lookup]
73
109
 
74
110
  [api_name, name]
75
111
  end
76
-
77
- @@Api_Name_Lookup = {
78
- 'udbInstClass' => {'uDBInst'=>'db.t1.micro'},
79
- 'dbInstClass'=> {'uDBInst' => 'db.t1.micro', 'smDBInst' => 'db.m1.small', 'medDBInst' => 'db.m1.medium', 'lgDBInst' => 'db.m1.large', 'xlDBInst' => 'db.m1.xlarge'},
80
- 'hiMemDBInstClass'=> {'xlDBInst' => 'db.m2.xlarge', 'xxlDBInst' => 'db.m2.2xlarge', 'xxxxDBInst' => 'db.m2.4xlarge'},
81
- 'clusterHiMemDB' => {'xxxxxxxxl' => 'db.cr1.8xlarge'},
82
- 'multiAZDBInstClass'=> {'uDBInst' => 'db.t1.micro', 'smDBInst' => 'db.m1.small', 'medDBInst' => 'db.m1.medium', 'lgDBInst' => 'db.m1.large', 'xlDBInst' => 'db.m1.xlarge'},
83
- 'multiAZHiMemInstClass'=> {'xlDBInst' => 'db.m2.xlarge', 'xxlDBInst' => 'db.m2.2xlarge', 'xxxxDBInst' => 'db.m2.4xlarge'},
84
- }
85
- @@Name_Lookup = {
86
- 'udbInstClass' => {'uDBInst'=>'Standard Micro'},
87
- 'dbInstClass'=> {'uDBInst' => 'Standard Micro', 'smDBInst' => 'Standard Small', 'medDBInst' => 'Standard Medium', 'lgDBInst' => 'Standard Large', 'xlDBInst' => 'Standard Extra Large'},
88
- 'hiMemDBInstClass'=> {'xlDBInst' => 'Standard High-Memory Extra Large', 'xxlDBInst' => 'Standard High-Memory Double Extra Large', 'xxxxDBInst' => 'Standard High-Memory Quadruple Extra Large'},
89
- 'clusterHiMemDB' => {'xxxxxxxxl' => 'Standard High-Memory Cluster Eight Extra Large'},
90
- 'multiAZDBInstClass'=> {'uDBInst' => 'Multi-AZ Micro', 'smDBInst' => 'Multi-AZ Small', 'medDBInst' => 'Multi-AZ Medium', 'lgDBInst' => 'Multi-AZ Large', 'xlDBInst' => 'Multi-AZ Extra Large'},
91
- 'multiAZHiMemInstClass'=> {'xlDBInst' => 'Multi-AZ High-Memory Extra Large', 'xxlDBInst' => 'Multi-AZ High-Memory Double Extra Large', 'xxxxDBInst' => 'Multi-AZ High-Memory Quadruple Extra Large'},
92
- }
93
- @@Api_Name_Lookup_Reserved = {
94
- 'stdDeployRes' => {'u' => 'db.t1.micro', 'micro' => 'db.t1.micro', 'sm' => 'db.m1.small', 'med' => 'db.m1.medium', 'lg' => 'db.m1.large', 'xl' => 'db.m1.xlarge', 'xlHiMem' => 'db.m2.xlarge', 'xxlHiMem' => 'db.m2.2xlarge', 'xxxxlHiMem' => 'db.m2.4xlarge', 'xxxxxxxxl' => 'db.cr1.8xlarge'},
95
- 'multiAZdeployRes' => {'u' => 'db.t1.micro', 'micro' => 'db.t1.micro', 'sm' => 'db.m1.small', 'med' => 'db.m1.medium', 'lg' => 'db.m1.large', 'xl' => 'db.m1.xlarge', 'xlHiMem' => 'db.m2.xlarge', 'xxlHiMem' => 'db.m2.2xlarge', 'xxxxlHiMem' => 'db.m2.4xlarge', 'xxxxxxxxl' => 'db.cr1.8xlarge'},
96
- }
97
- @@Name_Lookup_Reserved = {
98
- 'stdDeployRes' => {'u' => 'Standard Micro', 'micro' => 'Standard Micro', 'sm' => 'Standard Small', 'med' => 'Standard Medium', 'lg' => 'Standard Large', 'xl' => 'Standard Extra Large', 'xlHiMem' => 'Standard Extra Large High-Memory', 'xxlHiMem' => 'Standard Double Extra Large High-Memory', 'xxxxlHiMem' => 'Standard Quadruple Extra Large High-Memory', 'xxxxxxxxl' => 'Standard Eight Extra Large'} ,
99
- 'multiAZdeployRes' => {'u' => 'Multi-AZ Micro', 'micro' => 'Multi-AZ Micro', 'sm' => 'Multi-AZ Small', 'med' => 'Multi-AZ Medium', 'lg' => 'Multi-AZ Large', 'xl' => 'Multi-AZ Extra Large', 'xlHiMem' => 'Multi-AZ Extra Large High-Memory', 'xxlHiMem' => 'Multi-AZ Double Extra Large High-Memory', 'xxxxlHiMem' => 'Multi-AZ Quadruple Extra Large High-Memory', 'xxxxxxxxl' => 'Multi-AZ Eight Extra Large'},
100
- }
101
112
  end
113
+
102
114
  end
@@ -8,5 +8,5 @@
8
8
  # Home:: http://github.com/CloudHealth/amazon-pricing
9
9
  #++
10
10
  module AwsPricing
11
- VERSION = '0.1.21'
11
+ VERSION = '0.1.22'
12
12
  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.21
4
+ version: 0.1.22
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-20 00:00:00.000000000 Z
12
+ date: 2014-02-26 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A Ruby library for retrieving pricing for Amazon Web Services
15
15
  email:
@@ -62,16 +62,29 @@ required_ruby_version: !ruby/object:Gem::Requirement
62
62
  - - ! '>='
63
63
  - !ruby/object:Gem::Version
64
64
  version: '0'
65
+ segments:
66
+ - 0
67
+ hash: 1817073564314149900
65
68
  required_rubygems_version: !ruby/object:Gem::Requirement
66
69
  none: false
67
70
  requirements:
68
71
  - - ! '>='
69
72
  - !ruby/object:Gem::Version
70
73
  version: '0'
74
+ segments:
75
+ - 0
76
+ hash: 1817073564314149900
71
77
  requirements: []
72
78
  rubyforge_project: amazon-pricing
73
79
  rubygems_version: 1.8.25
74
80
  signing_key:
75
81
  specification_version: 3
76
82
  summary: Amazon Web Services Pricing Ruby gem
77
- test_files: []
83
+ test_files:
84
+ - spec/instance_type_spec.rb
85
+ - spec/price_list_spec.rb
86
+ - spec/rds_pricing_spec.rb
87
+ - spec/spec_helper.rb
88
+ - spec/support/.gitignore
89
+ - test/ec2_instance_types_test.rb
90
+ - test/helper.rb