awslist 2.0.1 → 3.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/awslist.gemspec +1 -0
- data/bin/awslist +0 -0
- data/lib/awslist.rb +32 -6
- data/lib/awslist/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ff627b621cf8728e13045bb277355a50e055ea8
|
4
|
+
data.tar.gz: 456d37bbe7c8cecf1ab5530e5c67fc11605a187e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d891158546fd516a838a81460ed73adb252255a2a769242179b2370498a8cdd2852052ce3852308c695246a1359f65ec126e724a64b4a68675cc94611978849
|
7
|
+
data.tar.gz: 8eb3f546a33b9842d1fc63d70dbdeb2cf247c76443213f81d54d5262df3478e091dd7d2497ef0a6578dbd8a12ca9ade5a3e33024f53721b07384a5218a4b8aa3
|
data/awslist.gemspec
CHANGED
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_dependency 'rest-client'
|
34
34
|
spec.add_dependency 'nokogiri'
|
35
35
|
spec.add_dependency 'json'
|
36
|
+
spec.add_dependency 'terminal-table'
|
36
37
|
|
37
38
|
spec.add_development_dependency "bundler", "~> 1.15"
|
38
39
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/bin/awslist
CHANGED
File without changes
|
data/lib/awslist.rb
CHANGED
@@ -3,14 +3,16 @@ require 'rest-client'
|
|
3
3
|
require 'nokogiri'
|
4
4
|
require 'json'
|
5
5
|
require 'optparse'
|
6
|
+
require 'terminal-table'
|
6
7
|
|
7
8
|
module Awslist
|
8
|
-
class AwsToolCli
|
9
|
+
class AwsToolCli < StandardError
|
9
10
|
attr_accessor :parser , :hash , :output
|
10
11
|
def initialize
|
11
12
|
@hash = {}
|
12
13
|
@set = 'n'
|
13
|
-
@
|
14
|
+
@instance_list = {}
|
15
|
+
@options = {:os => 'linux' , :region => 'us-east-1' , :cpu_req => 0 , :mem_req => 0 , :reload => 'n' , :instance => 'nil'}
|
14
16
|
@os_list = {
|
15
17
|
'linux' => 0,
|
16
18
|
'rhel' => 0,
|
@@ -40,6 +42,9 @@ module Awslist
|
|
40
42
|
|
41
43
|
@parser = OptionParser.new do |opts|
|
42
44
|
opts.banner = 'Usage: awslist [options]'
|
45
|
+
opts.on('-t' , '--type INSTANCE_TYPE') do |instance|
|
46
|
+
@options[:instance] = instance.strip
|
47
|
+
end
|
43
48
|
opts.on('-os OPERATING_SYSTEM', 'OS list : linux , rhel , sles , mswin , mswinSQL , mswinSQLWeb , mswinSQLEnterprise' ) do |os|
|
44
49
|
@options[:os] = os.strip.downcase;
|
45
50
|
end
|
@@ -100,15 +105,19 @@ module Awslist
|
|
100
105
|
@hash[x][str]['vCPU'][cpu] << instance_hash
|
101
106
|
@hash[x][str]['memoryGiB'][mem] = @hash[x][str]['memoryGiB'].fetch(mem,[])
|
102
107
|
@hash[x][str]['memoryGiB'][mem] << instance_hash
|
108
|
+
|
109
|
+
@instance_list[instance_hash['size']] = 1
|
103
110
|
end
|
104
111
|
end
|
105
112
|
end
|
106
113
|
end
|
107
114
|
File.open('Complete_Data','w'){ |file| file.write(@hash.to_json) }
|
115
|
+
File.open('Instance_list','w'){ |file| file.write(@instance_list.to_json)}
|
108
116
|
end
|
109
117
|
|
110
118
|
def reloaded_hash
|
111
119
|
@hash = JSON.parse(File.read('Complete_Data'))
|
120
|
+
@instance_list = JSON.parse(File.read('Instance_list'))
|
112
121
|
end
|
113
122
|
|
114
123
|
def refine_output
|
@@ -117,7 +126,9 @@ module Awslist
|
|
117
126
|
@hash[@options[:os]][@options[:region]]['vCPU'].each do |k,v|
|
118
127
|
if k.to_f >= @options[:cpu_req].to_s.strip.to_f
|
119
128
|
v.each do |c|
|
120
|
-
|
129
|
+
if (@options[:instance] != 'nil' && c['size'] == @options[:instance]) || @options[:instance] == 'nil'
|
130
|
+
a << c
|
131
|
+
end
|
121
132
|
end
|
122
133
|
end
|
123
134
|
end
|
@@ -125,7 +136,9 @@ module Awslist
|
|
125
136
|
@hash[@options[:os]][@options[:region]]['memoryGiB'].each do |k,v|
|
126
137
|
if k.to_f >= @options[:mem_req].to_s.strip.to_f
|
127
138
|
v.each do |c|
|
128
|
-
|
139
|
+
if (@options[:instance] != 'nil' && c['size'] == @options[:instance]) || @options[:instance] == 'nil'
|
140
|
+
b << c
|
141
|
+
end
|
129
142
|
end
|
130
143
|
end
|
131
144
|
end
|
@@ -133,14 +146,17 @@ module Awslist
|
|
133
146
|
end
|
134
147
|
|
135
148
|
def prints
|
149
|
+
yo = []
|
136
150
|
@output.each do |hashes_everywhere|
|
137
151
|
value = hashes_everywhere['price'].to_f
|
138
|
-
|
152
|
+
yo << [hashes_everywhere['size'],hashes_everywhere['vCPU'],hashes_everywhere['memoryGiB'],value.round(3),(value*24*30).round(3)]
|
139
153
|
end
|
154
|
+
table = Terminal::Table.new :headings => ['Instance Type' , 'vCPU' , 'memoryGiB' , 'Price per hr(in USD $)' , 'Price per month(in USD $)'], :rows => yo
|
155
|
+
puts table
|
140
156
|
end
|
141
157
|
|
142
158
|
def what_to_call
|
143
|
-
if @options[:reload] == 'y' || !File.exist?('Complete_Data')
|
159
|
+
if @options[:reload] == 'y' || !File.exist?('Complete_Data') || !File.exist?('Instance_list')
|
144
160
|
reload_files
|
145
161
|
reload_hash
|
146
162
|
elsif @set == 'y' && @options[:reload] != 'n'
|
@@ -154,6 +170,16 @@ module Awslist
|
|
154
170
|
raise if !Integer(@options[:mem_req])
|
155
171
|
raise if !@os_list.key?(@options[:os])
|
156
172
|
raise if !@region_list.key?(@options[:region])
|
173
|
+
raise AwsToolCli if @options[:instance] != 'nil' && !@instance_list.key?(@options[:instance])
|
174
|
+
rescue AwsToolCli
|
175
|
+
puts sprintf('Wrong instance name. Please try :')
|
176
|
+
yo = []
|
177
|
+
@instance_list.each do |k,v|
|
178
|
+
yo << [k]
|
179
|
+
end
|
180
|
+
table = Terminal::Table.new :headings => ['Instance Type'], :rows => yo
|
181
|
+
puts table
|
182
|
+
exit
|
157
183
|
rescue
|
158
184
|
puts @parser
|
159
185
|
exit
|
data/lib/awslist/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awslist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Akkks
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: terminal-table
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: bundler
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|