aws-rds-instance_types 0.5.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 468e8652846b86a4aa820d52e3e04203c7616dc4
4
- data.tar.gz: 08e7cab7c747c40c1e08b798d6925adc67c40083
3
+ metadata.gz: bcba97319bcf1b19cf050082339a48a67db82430
4
+ data.tar.gz: fdc641c8c55dc49d294079529e6ccbb95c3068ef
5
5
  SHA512:
6
- metadata.gz: 70689caca4a449a1d0a957c27fe167b61810e535f20cf2d88df5595f249e1c6527243d34d80188d0808b44f7f909a6c410b7745df3437d076a6971cd6bdf25f9
7
- data.tar.gz: 49392ce18dad312035d657251fe650e42d4abd97efab7bb92ccaa382022c2cc41882bb76ab45cc7709d8842c957e726c8e1f1673a2bcf926b43d62c4b9129b18
6
+ metadata.gz: a660e45d24bdf893b61b769a02eb8b627eaaf7efa1d6f7259741a4a6968fa80bf84dcfb251a624cf2756e22cf395cec84c8b395ee13e28214208a7c17395fee1
7
+ data.tar.gz: da17e8027c5f54ecaa5fe3da2efb62d86d4511ab389929931ff7ea0ae9e3f6d3d1400cb7de1af9e9b7e172d5a847ad29d542f1714c5f81722811c19d9f7777d6
@@ -1,72 +1,55 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- aws-rds-instance_types (0.5.0)
4
+ aws-rds-instance_types (2.0.0)
5
5
  awesome_print (> 0)
6
+ aws-ec2-instance_types (>= 2.0.0)
6
7
  colorize
7
- dldinternet-mixlib-logging (>= 0.4.3)
8
+ dldinternet-mixlib-logging (>= 0.7.1)
8
9
  inifile (> 0)
9
10
  json
10
- mechanize (>= 2.7.2)
11
- nokogiri (>= 1.5.0)
12
11
  psych
13
12
  thor (>= 0.19.1)
14
13
 
15
14
  GEM
16
15
  remote: https://rubygems.org/
17
16
  specs:
18
- awesome_print (1.2.0)
19
- builder (3.2.2)
20
- colorize (0.7.3)
17
+ awesome_print (1.8.0)
18
+ aws-ec2-instance_types (2.0.0)
19
+ awesome_print (> 0)
20
+ colorize
21
+ dldinternet-mixlib-logging (>= 0.7.1)
22
+ inifile (> 0)
23
+ json
24
+ psych
25
+ thor (>= 0.19.1)
26
+ builder (3.2.3)
27
+ colorize (0.8.1)
21
28
  cucumber (0.10.7)
22
29
  builder (>= 2.1.2)
23
30
  diff-lcs (>= 1.1.2)
24
31
  gherkin (~> 2.4.0)
25
32
  json (>= 1.4.6)
26
33
  term-ansicolor (>= 1.0.5)
27
- diff-lcs (1.2.5)
28
- dldinternet-mixlib-logging (0.4.3)
29
- logging (~> 1.8, >= 1.8.2)
30
- domain_name (0.5.22)
31
- unf (>= 0.0.5, < 1.0.0)
34
+ diff-lcs (1.3)
35
+ dldinternet-mixlib-logging (0.7.1)
36
+ logging (~> 2.1, >= 2.1.0)
32
37
  gherkin (2.4.21)
33
38
  json (>= 1.4.6)
34
- http-cookie (1.0.2)
35
- domain_name (~> 0.5)
36
39
  inifile (3.0.0)
37
- json (1.8.1)
38
- little-plugger (1.1.3)
39
- logging (1.8.2)
40
- little-plugger (>= 1.1.3)
41
- multi_json (>= 1.8.4)
42
- mechanize (2.7.3)
43
- domain_name (~> 0.5, >= 0.5.1)
44
- http-cookie (~> 1.0)
45
- mime-types (~> 2.0)
46
- net-http-digest_auth (~> 1.1, >= 1.1.1)
47
- net-http-persistent (~> 2.5, >= 2.5.2)
48
- nokogiri (~> 1.4)
49
- ntlm-http (~> 0.1, >= 0.1.1)
50
- webrobots (>= 0.0.9, < 0.2)
51
- mime-types (2.4.3)
52
- mini_portile (0.6.1)
53
- multi_json (1.10.1)
54
- net-http-digest_auth (1.4)
55
- net-http-persistent (2.9.4)
56
- nokogiri (1.6.4.1)
57
- mini_portile (~> 0.6.0)
58
- ntlm-http (0.1.1)
59
- psych (2.0.6)
40
+ json (2.1.0)
41
+ little-plugger (1.1.4)
42
+ logging (2.2.2)
43
+ little-plugger (~> 1.1)
44
+ multi_json (~> 1.10)
45
+ multi_json (1.13.1)
46
+ psych (3.0.2)
60
47
  rake (0.9.6)
61
48
  rubygems-tasks (0.2.4)
62
- term-ansicolor (1.3.0)
49
+ term-ansicolor (1.6.0)
63
50
  tins (~> 1.0)
64
- thor (0.19.1)
65
- tins (1.3.3)
66
- unf (0.1.4)
67
- unf_ext
68
- unf_ext (0.0.6)
69
- webrobots (0.1.1)
51
+ thor (0.20.0)
52
+ tins (1.16.3)
70
53
 
71
54
  PLATFORMS
72
55
  ruby
@@ -77,3 +60,6 @@ DEPENDENCIES
77
60
  cucumber (~> 0.10.2)
78
61
  rake (~> 0.8)
79
62
  rubygems-tasks (~> 0.2)
63
+
64
+ BUNDLED WITH
65
+ 1.16.1
@@ -22,12 +22,11 @@ Gem::Specification.new do |gem|
22
22
  gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
23
23
 
24
24
  gem.add_runtime_dependency('thor', ['>= 0.19.1'])
25
- gem.add_runtime_dependency(%q<mechanize>, ['>= 2.7.2'])
26
- gem.add_runtime_dependency(%q<nokogiri>, ['>= 1.5.0'])
27
25
  gem.add_dependency 'awesome_print', '> 0'
28
26
  gem.add_dependency 'inifile', '> 0'
29
27
  gem.add_dependency 'colorize', '>= 0'
30
- gem.add_dependency 'dldinternet-mixlib-logging', '>= 0.4.3'
28
+ gem.add_dependency 'dldinternet-mixlib-logging', '>= 0.7.1'
29
+ gem.add_dependency 'aws-ec2-instance_types', '>= 2.0.0'
31
30
  gem.add_dependency 'psych'
32
31
  gem.add_dependency 'json'
33
32
  end
@@ -7,10 +7,13 @@ require 'dldinternet/aws/rds/instance_types/cli'
7
7
 
8
8
  # =====================================================================================================================
9
9
  rc = DLDInternet::AWS::RDS::Instance_Types::Cli.start(ARGV)
10
- if rc.is_a?(Fixnum)
10
+ if rc.is_a?(Integer)
11
11
  exit rc
12
+ elsif rc.is_a?(IO)
13
+ exit 0
12
14
  else
13
- puts rc.ai
15
+ $stderr.write "\n#{File.basename(__FILE__)}: \$? was '" + rc.ai + "'\n\n"
14
16
  exit 0
15
17
  end
16
18
 
19
+
@@ -1,3 +1,7 @@
1
+ require 'dldinternet/aws/rds/instance_types/version'
2
+ require 'dldinternet/aws/rds/instance_types/error'
3
+ require 'dldinternet/aws/rds/instance_types/cli'
4
+
1
5
  module DLDInternet
2
6
  module AWS
3
7
  module RDS
@@ -1,23 +1,20 @@
1
1
  require 'thor'
2
2
  require 'awesome_print'
3
3
  require 'colorize'
4
- require 'dldinternet/aws/rds/instance_types/version'
5
- require 'dldinternet/aws/rds/instance_types/error'
6
- require 'dldinternet/aws/rds/instance_types/scraper'
7
- require 'dldinternet/aws/rds/instance_types/cli'
8
4
  require 'dldinternet/aws/rds/instance_types'
9
5
 
10
6
  module DLDInternet
11
7
  module AWS
12
8
  module RDS
13
9
  module Instance_Types
10
+ # noinspection RubyParenthesesAfterMethodCallInspection
14
11
  class Cli < Thor
15
12
  class_option :verbose, :type => :boolean
16
13
  class_option :debug, :type => :boolean
17
14
  class_option :log_level, :type => :string, :banner => 'Log level ([:trace, :debug, :info, :step, :warn, :error, :fatal, :todo])'
18
15
  class_option :inifile, :type => :string
19
16
  class_option :help, :type => :boolean
20
- class_option :format, :type => :string, :default => 'pretty', :banner => '[:pretty, :yaml, :json]'
17
+ class_option :format, :type => :string, :default => 'pretty', :banner => '[:pretty, :yaml, :json]', :aliases => ['--output']
21
18
 
22
19
  no_commands do
23
20
 
@@ -48,7 +45,7 @@ module DLDInternet
48
45
  parse_options
49
46
  puts 'get instance types' if options[:verbose]
50
47
 
51
- it = DLDInternet::AWS::RDS::Instance_Types.getRDS_Instance_Types()
48
+ it = DLDInternet::AWS::RDS::Instance_Types.get_rds_instance_types()
52
49
  case options[:format]
53
50
  when /yaml/
54
51
  puts it.to_yaml line_width: 1024, indentation: 4, canonical: false
@@ -60,22 +57,22 @@ module DLDInternet
60
57
  0
61
58
  end
62
59
 
63
- desc 'load ARGS', 'load instance types'
60
+ desc 'load PATH', 'load instance types'
64
61
  def load(path)
65
62
  parse_options
66
63
  puts 'load instance types' if options[:verbose]
67
64
 
68
- it = DLDInternet::AWS::RDS::Instance_Types.loadRDS_Instance_Types(path)
65
+ it = DLDInternet::AWS::RDS::Instance_Types.load_rds_instance_types(path)
69
66
  ap it
70
67
  end
71
68
 
72
- desc 'save', 'save instance types'
69
+ desc 'save PATH', 'save instance types'
73
70
  def save(path)
74
71
  parse_options
75
72
  puts 'save instance types' if options[:verbose]
76
73
 
77
- it = DLDInternet::AWS::Rds::Instance_Types.getRDS_Instance_Types()
78
- DLDInternet::AWS::Rds::Instance_Types.saveRDS_Instance_Types(path, it)
74
+ it = DLDInternet::AWS::RDS::Instance_Types.get_rds_instance_types()
75
+ DLDInternet::AWS::RDS::Instance_Types.save_rds_instance_types(path, it)
79
76
  end
80
77
 
81
78
  default_task 'get'
@@ -84,4 +81,3 @@ module DLDInternet
84
81
  end
85
82
  end
86
83
  end
87
-
@@ -2,7 +2,8 @@ require 'thor'
2
2
  require 'awesome_print'
3
3
  require 'inifile'
4
4
  require 'colorize'
5
- require 'dldinternet/aws/rds/instance_types/scraper'
5
+ require 'dldinternet/aws/ec2/instance_types/aws-pricing-api-client'
6
+ require 'yaml'
6
7
 
7
8
  module DLDInternet
8
9
  module AWS
@@ -11,7 +12,7 @@ module DLDInternet
11
12
  module MixIns
12
13
  module RDS_Instance_Types
13
14
 
14
- def getFileFormat(path)
15
+ def get_file_format(path)
15
16
  format = case File.extname(File.basename(path)).downcase
16
17
  when /json|js/
17
18
  'json'
@@ -22,8 +23,8 @@ module DLDInternet
22
23
  end
23
24
  end
24
25
 
25
- def saveRDS_Instance_Types(path,it)
26
- format = getFileFormat(path)
26
+ def save_rds_instance_types(path, it)
27
+ format = get_file_format(path)
27
28
  begin
28
29
  File.open path, File::CREAT|File::TRUNC|File::RDWR, 0644 do |f|
29
30
  case format
@@ -43,13 +44,14 @@ module DLDInternet
43
44
  0
44
45
  end
45
46
 
46
- def loadRDS_Instance_Types(path)
47
- format = getFileFormat(path)
47
+ def load_rds_instance_types(path)
48
+ format = get_file_format(path)
48
49
  spec = File.read(path)
49
50
  case format
50
51
  when /json/
51
52
  JSON.parse(spec)
52
- #when /yaml/
53
+ when /yaml/
54
+ YAML.load File.read(path)
53
55
  else
54
56
  begin
55
57
  YAML.load(spec)
@@ -61,20 +63,15 @@ module DLDInternet
61
63
  end
62
64
  end
63
65
 
64
- def getRDS_Instance_Types(mechanize=nil)
65
- unless mechanize
66
- require 'mechanize'
67
- mechanize = ::Mechanize.new
68
- mechanize.open_timeout = 5
69
- mechanize.read_timeout = 10
70
- end
66
+ # noinspection RubyParenthesesAfterMethodCallInspection
67
+ def get_rds_instance_types()
71
68
 
72
- scraper = DLDInternet::AWS::RDS::Instance_Types::Scraper.new()
69
+ client = DLDInternet::AWS::EC2::Instance_Types::AWSPricingAPIClient.new()
73
70
 
74
71
  begin
75
- return scraper.getInstanceTypes(:mechanize => mechanize)
76
- rescue Timeout::Error => e
77
- puts "Unable to retrieve instance type details in a reasonable time (#{mechanize.open_timeout}s). Giving up ...".light_red
72
+ return client.get_instance_types(url: 'https://ec2instances.info/rds/instances.json')
73
+ rescue Exception => e
74
+ puts "Unable to retrieve instance type details. Giving up ...".light_red
78
75
  return nil
79
76
  end
80
77
  end
@@ -3,7 +3,7 @@ module DLDInternet
3
3
  module RDS
4
4
  module Instance_Types
5
5
  # aws-rds-instance_types version
6
- VERSION = '0.5.0'
6
+ VERSION = '2.0.0'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-rds-instance_types
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christo De Lange
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-08 00:00:00.000000000 Z
11
+ date: 2018-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -67,35 +67,21 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.19.1
69
69
  - !ruby/object:Gem::Dependency
70
- name: mechanize
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: 2.7.2
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: 2.7.2
83
- - !ruby/object:Gem::Dependency
84
- name: nokogiri
70
+ name: awesome_print
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - ">="
73
+ - - ">"
88
74
  - !ruby/object:Gem::Version
89
- version: 1.5.0
75
+ version: '0'
90
76
  type: :runtime
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - ">="
80
+ - - ">"
95
81
  - !ruby/object:Gem::Version
96
- version: 1.5.0
82
+ version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
- name: awesome_print
84
+ name: inifile
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - ">"
@@ -109,47 +95,47 @@ dependencies:
109
95
  - !ruby/object:Gem::Version
110
96
  version: '0'
111
97
  - !ruby/object:Gem::Dependency
112
- name: inifile
98
+ name: colorize
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
- - - ">"
101
+ - - ">="
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0'
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
122
- - - ">"
108
+ - - ">="
123
109
  - !ruby/object:Gem::Version
124
110
  version: '0'
125
111
  - !ruby/object:Gem::Dependency
126
- name: colorize
112
+ name: dldinternet-mixlib-logging
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
115
  - - ">="
130
116
  - !ruby/object:Gem::Version
131
- version: '0'
117
+ version: 0.7.1
132
118
  type: :runtime
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
122
  - - ">="
137
123
  - !ruby/object:Gem::Version
138
- version: '0'
124
+ version: 0.7.1
139
125
  - !ruby/object:Gem::Dependency
140
- name: dldinternet-mixlib-logging
126
+ name: aws-ec2-instance_types
141
127
  requirement: !ruby/object:Gem::Requirement
142
128
  requirements:
143
129
  - - ">="
144
130
  - !ruby/object:Gem::Version
145
- version: 0.4.3
131
+ version: 2.0.0
146
132
  type: :runtime
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
136
  - - ">="
151
137
  - !ruby/object:Gem::Version
152
- version: 0.4.3
138
+ version: 2.0.0
153
139
  - !ruby/object:Gem::Dependency
154
140
  name: psych
155
141
  requirement: !ruby/object:Gem::Requirement
@@ -208,7 +194,6 @@ files:
208
194
  - lib/dldinternet/aws/rds/instance_types/error.rb
209
195
  - lib/dldinternet/aws/rds/instance_types/mixins/no_commands.rb
210
196
  - lib/dldinternet/aws/rds/instance_types/mixins/rds_instance_types.rb
211
- - lib/dldinternet/aws/rds/instance_types/scraper.rb
212
197
  - lib/dldinternet/aws/rds/instance_types/version.rb
213
198
  homepage: https://rubygems.org/gems/aws-rds-instance_types
214
199
  licenses:
@@ -230,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
230
215
  version: '0'
231
216
  requirements: []
232
217
  rubyforge_project:
233
- rubygems_version: 2.4.3
218
+ rubygems_version: 2.6.13
234
219
  signing_key:
235
220
  specification_version: 4
236
221
  summary: Retrieve an up to date list of valid AWS RDS Instance Types directly from
@@ -1,128 +0,0 @@
1
- module DLDInternet
2
- module AWS
3
- module RDS
4
- module Instance_Types
5
- HEADINGS = [
6
- :Instance_Type,
7
- :vCPU,
8
- :Memory,
9
- :PIOPS_Optimized,
10
- :Network_Performance,
11
- :Generation,
12
- ]
13
- DEBUG = true
14
- class Scraper
15
- attr_reader :instance_types
16
-
17
- # ---------------------------------------------------------------------------------------------------------------
18
- def initialize
19
- @instance_types = {}
20
- end
21
-
22
- # ---------------------------------------------------------------------------------------------------------------
23
- def getInstanceTypes(options={})
24
- unless @instance_types.size > 0
25
- require 'mechanize'
26
- mechanize = options[:mechanize]
27
- unless mechanize
28
- mechanize = Mechanize.new
29
- mechanize.user_agent_alias = 'Mac Safari' # Pretend to use a Mac
30
- end
31
- url = options[:url] || 'http://aws.amazon.com/rds/details/'
32
-
33
- page = mechanize.get(url)
34
-
35
- require 'nokogiri'
36
-
37
- nk = Nokogiri::HTML(page.body)
38
- div = nk.css('div#aws-page-content')
39
- div = nk.css('div.page-content') unless div.to_s.match %r'^<div id="'m
40
- # noinspection RubyAssignmentExpressionInConditionalInspection
41
- if div = find_div(div, %r'^<div\s+class="nine columns content-with-nav')
42
- # noinspection RubyAssignmentExpressionInConditionalInspection
43
- if div = find_div(div, %r'^<div\s+class="content parsys')
44
- divs = div.css('div').to_a
45
- itm = nil
46
- idx = 0
47
- divs.each do |d|
48
- as = d.css('div div h2 a')
49
- as.each do |a|
50
- # puts "'#{a.text}'"
51
- if a.text.match %r'\s*DB Instance Classes\s*'
52
- itm = d
53
- break
54
- end
55
- end
56
- break if itm
57
- idx += 1
58
- end
59
- if idx < divs.count
60
- divs = divs[idx..-1]
61
- table = nil
62
- divs.each do |d|
63
- table = d.css('div.aws-table table')
64
- break if table.to_s.match(%r'^<table'i)
65
- end
66
-
67
- @instance_types = scrapeTable(HEADINGS, table) if table
68
- end
69
- end
70
- end
71
- end
72
- @instance_types
73
- end
74
-
75
- def find_div(nk,regex)
76
- ret = nil
77
- divs = nk.search('div')
78
- if divs.count > 0
79
- nine = divs.select { |div| div.to_s.match regex }
80
- if nine.count >= 1
81
- nine = nine.shift
82
- ret = nine
83
- end
84
- end
85
- ret
86
- end
87
-
88
- # ---------------------------------------------------------------------------------------------------------------
89
- def scrapeTable(cHeadings,table)
90
- raise Error.new 'Cannot find instance type table' unless (table.is_a?(Nokogiri::XML::Element) or table.is_a?(Nokogiri::XML::NodeSet))
91
- rows = table.search('tr')[0..-1]
92
- head = rows.shift
93
-
94
- cols = head.search('td').collect { |td|
95
- text = td.text.to_s
96
- text = text.gsub(%r/(\r?\n)+/, ' ').strip
97
- CGI.unescapeHTML(text)
98
- }
99
- instance_types = {
100
- :headings => {},
101
- :details => []
102
- }
103
- (0..cols.size-1).map { |i| instance_types[:headings][cHeadings[i]] = cols[i] }
104
- instance_types[:headings][cHeadings[-1]] = 'Generation'
105
- instance_set = nil
106
- rows.each do |row|
107
-
108
- cells = row.search('td').collect { |td|
109
- CGI.unescapeHTML(td.text.to_s.gsub(%r/(\r?\n)+/, ' ').strip)
110
- }
111
- if cells.count == 1 or (cells[1] == cells[2] and cells[2] == cells[4])
112
- instance_set = cells[0]
113
- else
114
- raise StandardError.new "This row does not have the same number of cells as the table header: #{row.text.to_s.strip}" unless cells.size == cols.size
115
- instance = {}
116
- (0..cells.size-1).map { |i| instance[cHeadings[i]] = cells[i] }
117
- instance[cHeadings[-1]] = instance_set
118
- instance_types[:details] << instance
119
- end
120
- end
121
- instance_types
122
- end
123
-
124
- end
125
- end
126
- end
127
- end
128
- end