aws-ec2-instance_types 1.4.1 → 2.0.0
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/Gemfile +1 -0
- data/Gemfile.lock +56 -0
- data/aws-ec2-instance_types.gemspec +2 -3
- data/bin/aws-ec2-instance_types +4 -2
- data/lib/dldinternet/aws/ec2/instance_types/aws-pricing-api-client.rb +49 -0
- data/lib/dldinternet/aws/ec2/instance_types/cli.rb +8 -8
- data/lib/dldinternet/aws/ec2/instance_types/get.rb +3 -4
- data/lib/dldinternet/aws/ec2/instance_types/mixins/ec2_instance_types.rb +13 -17
- data/lib/dldinternet/aws/ec2/instance_types/version.rb +1 -1
- data/test/doc.html +3018 -0
- metadata +9 -35
- data/VERSION +0 -1
- data/lib/dldinternet/aws/ec2/instance_types/scraper.rb +0 -129
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-ec2-instance_types
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
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:
|
11
|
+
date: 2018-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,34 +66,6 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.19.1
|
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
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 1.5.0
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 1.5.0
|
97
69
|
- !ruby/object:Gem::Dependency
|
98
70
|
name: awesome_print
|
99
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +114,14 @@ dependencies:
|
|
142
114
|
requirements:
|
143
115
|
- - ">="
|
144
116
|
- !ruby/object:Gem::Version
|
145
|
-
version: 0.
|
117
|
+
version: 0.7.1
|
146
118
|
type: :runtime
|
147
119
|
prerelease: false
|
148
120
|
version_requirements: !ruby/object:Gem::Requirement
|
149
121
|
requirements:
|
150
122
|
- - ">="
|
151
123
|
- !ruby/object:Gem::Version
|
152
|
-
version: 0.
|
124
|
+
version: 0.7.1
|
153
125
|
- !ruby/object:Gem::Dependency
|
154
126
|
name: psych
|
155
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,12 +164,12 @@ files:
|
|
192
164
|
- ".ruby-version"
|
193
165
|
- ChangeLog.md
|
194
166
|
- Gemfile
|
167
|
+
- Gemfile.lock
|
195
168
|
- LICENSE
|
196
169
|
- LICENSE.txt
|
197
170
|
- README.md
|
198
171
|
- README.rdoc
|
199
172
|
- Rakefile
|
200
|
-
- VERSION
|
201
173
|
- aws-ec2-instance_types.gemspec
|
202
174
|
- bin/aws-ec2-instance_types
|
203
175
|
- features/.gitkeep
|
@@ -207,13 +179,14 @@ files:
|
|
207
179
|
- features/support/env.rb
|
208
180
|
- lib/dldinternet/aws/ec2.rb
|
209
181
|
- lib/dldinternet/aws/ec2/instance_types.rb
|
182
|
+
- lib/dldinternet/aws/ec2/instance_types/aws-pricing-api-client.rb
|
210
183
|
- lib/dldinternet/aws/ec2/instance_types/cli.rb
|
211
184
|
- lib/dldinternet/aws/ec2/instance_types/error.rb
|
212
185
|
- lib/dldinternet/aws/ec2/instance_types/get.rb
|
213
186
|
- lib/dldinternet/aws/ec2/instance_types/mixins/ec2_instance_types.rb
|
214
187
|
- lib/dldinternet/aws/ec2/instance_types/mixins/no_commands.rb
|
215
|
-
- lib/dldinternet/aws/ec2/instance_types/scraper.rb
|
216
188
|
- lib/dldinternet/aws/ec2/instance_types/version.rb
|
189
|
+
- test/doc.html
|
217
190
|
- test/helper.rb
|
218
191
|
- test/test_aws-ec2-instance_types.rb
|
219
192
|
homepage: https://rubygems.org/gems/aws-ec2-instance_types
|
@@ -236,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
236
209
|
version: '0'
|
237
210
|
requirements: []
|
238
211
|
rubyforge_project:
|
239
|
-
rubygems_version: 2.
|
212
|
+
rubygems_version: 2.6.13
|
240
213
|
signing_key:
|
241
214
|
specification_version: 4
|
242
215
|
summary: Retrieve an up to date list of valid AWS EC2 Instance Types directly from
|
@@ -247,5 +220,6 @@ test_files:
|
|
247
220
|
- features/step_definitions/.gitkeep
|
248
221
|
- features/step_definitions/aws-ec2-instance_types_steps.rb
|
249
222
|
- features/support/env.rb
|
223
|
+
- test/doc.html
|
250
224
|
- test/helper.rb
|
251
225
|
- test/test_aws-ec2-instance_types.rb
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.0.4
|
@@ -1,129 +0,0 @@
|
|
1
|
-
module DLDInternet
|
2
|
-
module AWS
|
3
|
-
module EC2
|
4
|
-
|
5
|
-
module Instance_Types
|
6
|
-
HEADINGS_CPU = [
|
7
|
-
:instance_type, # [0]
|
8
|
-
:vCPU, # [1]
|
9
|
-
:memory, # [2]
|
10
|
-
:instance_storage, # [3]
|
11
|
-
:networking_performance, # [4]
|
12
|
-
:physical_processor, # [5]
|
13
|
-
:clock_speed, # [6]
|
14
|
-
:Intel_AES_NI, # [7]
|
15
|
-
:Intel_AVX, # [8]
|
16
|
-
:Intel_Turbo, # [9]
|
17
|
-
:EBS_OPT, # [10]
|
18
|
-
:enhanced_networking # [11]
|
19
|
-
]
|
20
|
-
DEBUG = true
|
21
|
-
class Scraper
|
22
|
-
attr_reader :instance_types
|
23
|
-
|
24
|
-
def initialize
|
25
|
-
@instance_types = {}
|
26
|
-
end
|
27
|
-
|
28
|
-
# ---------------------------------------------------------------------------------------------------------------
|
29
|
-
def getInstanceTypes(options={})
|
30
|
-
unless @instance_types.size > 0
|
31
|
-
mechanize = options[:mechanize]
|
32
|
-
unless mechanize
|
33
|
-
require 'mechanize'
|
34
|
-
mechanize = Mechanize.new
|
35
|
-
mechanize.user_agent_alias = 'Mac Safari' # Pretend to use a Mac
|
36
|
-
end
|
37
|
-
url = options[:url] || 'http://aws.amazon.com/ec2/instance-types/instance-details/'
|
38
|
-
|
39
|
-
page = mechanize.get(url)
|
40
|
-
|
41
|
-
require 'nokogiri'
|
42
|
-
|
43
|
-
nk = Nokogiri::HTML(page.body)
|
44
|
-
div = nk.css('div#aws-page-content')
|
45
|
-
div = nk.css('div.page-content') unless div.to_s.match %r'^<div id="'m
|
46
|
-
# noinspection RubyAssignmentExpressionInConditionalInspection
|
47
|
-
if div = find_div(div, %r'^<div\s+class="nine columns content-with-nav'm )
|
48
|
-
# noinspection RubyAssignmentExpressionInConditionalInspection
|
49
|
-
if div = find_div(div, %r'^<div\s+class="content parsys'm )
|
50
|
-
divs = div.css('div').to_a
|
51
|
-
itm = nil
|
52
|
-
idx = 0
|
53
|
-
divs.each do |d|
|
54
|
-
as = d.css('div div h2 a')
|
55
|
-
as.each do |a|
|
56
|
-
# puts "'#{a.text}'"
|
57
|
-
if a.text.match %r'\s*Instance Types Matrix\s*'
|
58
|
-
itm = d
|
59
|
-
break
|
60
|
-
end
|
61
|
-
end
|
62
|
-
break if itm
|
63
|
-
idx += 1
|
64
|
-
end
|
65
|
-
if idx < divs.count
|
66
|
-
divs = divs[idx..-1]
|
67
|
-
table = nil
|
68
|
-
divs.each do |d|
|
69
|
-
table = d.css('div.aws-table table')
|
70
|
-
break if table.to_s.match(%r'^<table'i)
|
71
|
-
end
|
72
|
-
|
73
|
-
@instance_types = scrapeTable(HEADINGS_CPU, table) if table
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
@instance_types
|
79
|
-
end
|
80
|
-
|
81
|
-
def find_div(nk,regex)
|
82
|
-
ret = nil
|
83
|
-
divs = nk.search('div').to_a
|
84
|
-
if divs.count > 0
|
85
|
-
nine = divs.select{ |div|
|
86
|
-
div.to_s.gsub(%r'\n',' ').match(regex)
|
87
|
-
}
|
88
|
-
if nine.count >= 1
|
89
|
-
nine = nine.shift
|
90
|
-
ret = nine
|
91
|
-
end
|
92
|
-
end
|
93
|
-
ret
|
94
|
-
end
|
95
|
-
|
96
|
-
# ---------------------------------------------------------------------------------------------------------------
|
97
|
-
def scrapeTable(cHeadings,table)
|
98
|
-
raise Error.new 'Cannot find instance type table' unless (table.is_a?(Nokogiri::XML::Element) or table.is_a?(Nokogiri::XML::NodeSet))
|
99
|
-
rows = table.search('tr')[0..-1].to_a
|
100
|
-
head = rows.shift
|
101
|
-
|
102
|
-
cols = head.search('td').collect { |td|
|
103
|
-
text = td.text.to_s
|
104
|
-
text = text.gsub(%r/(\r?\n)+/, ' ').strip
|
105
|
-
CGI.unescapeHTML(text)
|
106
|
-
}
|
107
|
-
instance_types = {
|
108
|
-
:headings => {},
|
109
|
-
:details => []
|
110
|
-
}
|
111
|
-
(0..cols.size-1).map { |i| instance_types[:headings][cHeadings[i]] = cols[i] }
|
112
|
-
|
113
|
-
rows.each do |row|
|
114
|
-
|
115
|
-
cells = row.search('td').collect { |td|
|
116
|
-
CGI.unescapeHTML(td.text.to_s.gsub(%r/(\r?\n)+/, ' ').strip.gsub('32-bit or64-bit', '32-bit or 64-bit'))
|
117
|
-
}
|
118
|
-
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
|
119
|
-
instance = {}
|
120
|
-
(0..cells.size-1).map { |i| instance[cHeadings[i]] = cells[i] }
|
121
|
-
instance_types[:details] << instance
|
122
|
-
end
|
123
|
-
instance_types
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|