gaptool-server 0.4.13 → 0.4.14
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/lib/app.rb +0 -1
- data/lib/helpers/gaptool-base.rb +2 -131
- data/lib/helpers/init.rb +0 -15
- data/lib/routes/init.rb +0 -3
- data/lib/routes/main.rb +0 -22
- metadata +4 -54
- data/.document +0 -5
- data/Gemfile +0 -25
- data/Procfile +0 -1
- data/Rakefile +0 -129
- data/VERSION +0 -1
- data/config.ru +0 -24
- data/gaptool-server.gemspec +0 -116
- data/lib/helpers/mongodb.rb +0 -20
- data/lib/helpers/nicebytes.rb +0 -30
- data/lib/helpers/partials.rb +0 -6
- data/lib/helpers/redis.rb +0 -29
- data/lib/helpers/services.rb +0 -47
- data/lib/models/init.rb +0 -6
- data/lib/models/user.rb +0 -4
- data/lib/public/js/manifest.txt +0 -1
- data/lib/routes/mongodb.rb +0 -7
- data/lib/routes/redis.rb +0 -11
- data/lib/routes/services.rb +0 -80
- data/lib/views/hosts.erb +0 -9
- data/setup.rb +0 -42
- data/test/helper.rb +0 -18
- data/test/test_gaptool-server.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4438725ee040e587e69c0ed33fa6392d1296a8d6
|
4
|
+
data.tar.gz: 1245aed75de37b9f483e3dc56299c67b9eae4b6c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da43276993074df11e5531c55c923d3c982d090b70cabe779d828fc1a53d3ab12ea1e1c1075831805c6b9116e32bdcc29ea7c576f0ddc527950dae3a555889df
|
7
|
+
data.tar.gz: baf01a34b4bbb210d4fd712b07fd28056b6fd9ac8f9cfda8e2b02f5b9499e583be4779e835df929920357f029289161fdb3f87a3161400caf1712fbe4ef79b1b
|
data/lib/app.rb
CHANGED
data/lib/helpers/gaptool-base.rb
CHANGED
@@ -1,24 +1,12 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
module GaptoolBaseHelpers
|
3
|
-
def hash2redis(
|
3
|
+
def hash2redis(key, hash)
|
4
4
|
hash.keys.each do |hkey|
|
5
5
|
$redis.hset key, hkey, hash[hkey]
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
def
|
10
|
-
result = Hash.new
|
11
|
-
query.keys.each do |key|
|
12
|
-
entry = Hash.new
|
13
|
-
query[key].each do |hkey|
|
14
|
-
entry.merge!(hkey => $redis.hget(key, hkey))
|
15
|
-
end
|
16
|
-
result.merge!({ key => entry })
|
17
|
-
end
|
18
|
-
return result
|
19
|
-
end
|
20
|
-
|
21
|
-
def putkey( host )
|
9
|
+
def putkey(host)
|
22
10
|
@key = OpenSSL::PKey::RSA.new 2048
|
23
11
|
@pubkey = "#{@key.ssh_type} #{[@key.to_blob].pack('m0')} GAPTOOL_GENERATED_KEY"
|
24
12
|
ENV['SSH_AUTH_SOCK'] = ''
|
@@ -47,121 +35,4 @@ module GaptoolBaseHelpers
|
|
47
35
|
return sg.id
|
48
36
|
end
|
49
37
|
|
50
|
-
def runservice(host, role, environment, service, keys, state)
|
51
|
-
ENV['SSH_AUTH_SOCK'] = ''
|
52
|
-
Net::SSH.start(host, 'admin', :key_data => [$redis.hget('config', 'gaptoolkey')], :config => false, :keys_only => true, :paranoid => false) do |ssh|
|
53
|
-
if state == 'start'
|
54
|
-
ssh.exec! "echo '#{keys.to_yaml}' > /tmp/apikeys-#{service}.yml"
|
55
|
-
ssh.exec! "sudo restart #{service} || sudo start #{service} || exit 0"
|
56
|
-
$redis.lpush("running", "{:hostname => '#{host}', :role => '#{role}', :environment => '#{environment}', :service => '#{service}'}")
|
57
|
-
elsif state == 'stop'
|
58
|
-
ssh.exec! "rm /tmp/apikeys-#{service}.yml"
|
59
|
-
ssh.exec! "sudo stop #{service} || exit 0"
|
60
|
-
$redis.lrem("running", -1, "{:hostname => '#{host}', :role => '#{role}', :environment => '#{environment}', service => '#{service}'}")
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def balanceservices(role, environment)
|
66
|
-
@runable = Array.new
|
67
|
-
@available = Array.new
|
68
|
-
@totalcap = 0
|
69
|
-
@volume = 0
|
70
|
-
$redis.keys("host:#{role}:#{environment}:*").each do |host|
|
71
|
-
@available << {
|
72
|
-
:hostname => $redis.hget(host, 'hostname'),
|
73
|
-
:instance => $redis.hget(host, 'instance'),
|
74
|
-
:capacity => $redis.hget(host, 'capacity').to_i,
|
75
|
-
}
|
76
|
-
@totalcap = @totalcap + $redis.hget(host, 'capacity').to_i
|
77
|
-
end
|
78
|
-
$redis.keys("service:#{role}:#{environment}:*").each do |service|
|
79
|
-
unless service =~ /:count/
|
80
|
-
if $redis.hget(service, 'run').to_i == 1
|
81
|
-
@runable << {
|
82
|
-
:name => $redis.hget(service, 'name'),
|
83
|
-
:keys => eval($redis.hget(service, 'keys')),
|
84
|
-
:weight => $redis.hget(service, 'weight').to_i
|
85
|
-
}
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
@volume = 0
|
90
|
-
@runable.each do |service|
|
91
|
-
@volume += service[:weight]
|
92
|
-
end
|
93
|
-
if @totalcap < @volume
|
94
|
-
return { :error => true, :message => "This would overcommit, remove some resources or add nodes", :totalcap => @totalcap, :volume => @volume }
|
95
|
-
else
|
96
|
-
@runable.sort! { |x, y| x[:weight] <=> y[:weight] }
|
97
|
-
@available.sort! { |x, y| x[:capacity] <=> y[:capacity] }
|
98
|
-
@runlist = Array.new
|
99
|
-
@svctab = Hash.new
|
100
|
-
@runable.each do |event|
|
101
|
-
@svctab[event[:name]] = Array.new
|
102
|
-
end
|
103
|
-
@exitrunable = 0
|
104
|
-
while @runable != []
|
105
|
-
break if @exitrunable == 1
|
106
|
-
@available.each do |host|
|
107
|
-
break if @runable.last.nil?
|
108
|
-
@exitrunable = 1 if @svctab[@runable.last[:name]].include? host[:hostname]
|
109
|
-
break if @svctab[@runable.last[:name]].include? host[:hostname]
|
110
|
-
if host[:capacity] >= @runable.last[:weight]
|
111
|
-
host[:capacity] = host[:capacity] - @runable.last[:weight]
|
112
|
-
@svctab[@runable.last[:name]] << host[:hostname]
|
113
|
-
@runlist << { :host => host, :service => @runable.pop }
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
return @runlist
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
def servicestopall(role, environment)
|
122
|
-
$redis.lrange('running', 0, -1).peach do |service|
|
123
|
-
line = eval(service)
|
124
|
-
if line[:role] == role && line[:environment] == environment
|
125
|
-
runservice(line[:hostname], role, environment, line[:service], nil, 'stop')
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
def hostsgen(zone)
|
131
|
-
AWS.config(:access_key_id => $redis.hget('config', 'aws_id'), :secret_access_key => $redis.hget('config', 'aws_secret'), :ec2_endpoint => "ec2.#{zone}.amazonaws.com")
|
132
|
-
@ec2 = AWS::EC2.new
|
133
|
-
hosts = Hash.new
|
134
|
-
$redis.keys("host:*").each do |host|
|
135
|
-
$redis.hset(host, 'hostname', @ec2.instances[$redis.hget(host, 'instance')].dns_name)
|
136
|
-
hosts.merge!(host.gsub(/host:/, '').gsub(/:/,'-') => Resolv.getaddress($redis.hget(host, 'hostname')))
|
137
|
-
if $redis.hget(host, 'alias')
|
138
|
-
hosts.merge!($redis.hget(host, 'alias') => Resolv.getaddress($redis.hget(host, 'hostname')))
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
hostsfile = "# DO NOT EDIT, GENERATED BY GAPTOOL\n127.0.0.1 localhost\n::1 localhost\n"
|
143
|
-
hosts.keys.each do |key|
|
144
|
-
hostsfile += "#{hosts[key]} #{key} # PLACED BY GT\n"
|
145
|
-
end
|
146
|
-
# $redis.keys("host:*").peach do |host|
|
147
|
-
# ENV['SSH_AUTH_SOCK'] = ''
|
148
|
-
# Net::SSH.start($redis.hget(host, 'hostname'), 'admin', :key_data => [$redis.hget('config', 'gaptoolkey')], :config => false, :keys_only => true, :paranoid => false) do |ssh|
|
149
|
-
# ssh.exec! "echo \"127.0.0.1 #{currenthost}\n\" \"#{hostsfile}\" > /etc/hosts.generated"
|
150
|
-
# end
|
151
|
-
# end
|
152
|
-
return hosts
|
153
|
-
end
|
154
|
-
|
155
|
-
def getservices()
|
156
|
-
services = Array.new
|
157
|
-
$redis.keys('service:*').each do |service|
|
158
|
-
unless service =~ /:count/
|
159
|
-
line = $redis.hgetall(service)
|
160
|
-
line['keys'] = eval(line['keys'])
|
161
|
-
services << line
|
162
|
-
end
|
163
|
-
end
|
164
|
-
return services
|
165
|
-
end
|
166
|
-
|
167
38
|
end
|
data/lib/helpers/init.rb
CHANGED
@@ -1,21 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require_relative 'partials'
|
3
|
-
GaptoolServer.helpers PartialPartials
|
4
|
-
|
5
|
-
require_relative 'nicebytes'
|
6
|
-
GaptoolServer.helpers NiceBytes
|
7
|
-
|
8
2
|
require_relative 'gaptool-base'
|
9
3
|
GaptoolServer.helpers GaptoolBaseHelpers
|
10
4
|
|
11
|
-
require_relative 'redis'
|
12
|
-
GaptoolServer.helpers RedisHelpers
|
13
|
-
|
14
|
-
require_relative 'mongodb'
|
15
|
-
GaptoolServer.helpers MongodbHelpers
|
16
|
-
|
17
|
-
require_relative 'services'
|
18
|
-
GaptoolServer.helpers ServiceHelpers
|
19
|
-
|
20
5
|
require_relative 'rehash'
|
21
6
|
GaptoolServer.helpers RehashHelpers
|
data/lib/routes/init.rb
CHANGED
data/lib/routes/main.rb
CHANGED
@@ -9,28 +9,6 @@ class GaptoolServer < Sinatra::Application
|
|
9
9
|
"PONG"
|
10
10
|
end
|
11
11
|
|
12
|
-
post '/redishash' do
|
13
|
-
data = JSON.parse request.body.read
|
14
|
-
redishash(data).to_json
|
15
|
-
end
|
16
|
-
|
17
|
-
get '/servicebalance/:role/:environment' do
|
18
|
-
runlist = balanceservices(params[:role], params[:environment])
|
19
|
-
unless runlist.kind_of? Hash
|
20
|
-
servicestopall(params[:role], params[:environment])
|
21
|
-
runlist.peach do |event|
|
22
|
-
runservice(event[:host][:hostname], params[:role], params[:environment], event[:service][:name], event[:service][:keys], 'start')
|
23
|
-
end
|
24
|
-
end
|
25
|
-
runlist.to_json
|
26
|
-
end
|
27
|
-
|
28
|
-
post '/regenhosts' do
|
29
|
-
data = JSON.parse request.body.read
|
30
|
-
hostsgen(data['zone'])
|
31
|
-
hosts.to_json
|
32
|
-
end
|
33
|
-
|
34
12
|
post '/init' do
|
35
13
|
data = JSON.parse request.body.read
|
36
14
|
AWS.config(:access_key_id => $redis.hget('config', 'aws_id'), :secret_access_key => $redis.hget('config', 'aws_secret'), :ec2_endpoint => "ec2.#{data['zone'].chop}.amazonaws.com")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gaptool-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Bailey
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-09-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
@@ -95,34 +95,6 @@ dependencies:
|
|
95
95
|
- - ">="
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0'
|
98
|
-
- !ruby/object:Gem::Dependency
|
99
|
-
name: bson_ext
|
100
|
-
requirement: !ruby/object:Gem::Requirement
|
101
|
-
requirements:
|
102
|
-
- - ">="
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: '0'
|
105
|
-
type: :runtime
|
106
|
-
prerelease: false
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
108
|
-
requirements:
|
109
|
-
- - ">="
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: '0'
|
112
|
-
- !ruby/object:Gem::Dependency
|
113
|
-
name: mongo
|
114
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
-
requirements:
|
116
|
-
- - ">="
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: '0'
|
119
|
-
type: :runtime
|
120
|
-
prerelease: false
|
121
|
-
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
requirements:
|
123
|
-
- - ">="
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
126
98
|
- !ruby/object:Gem::Dependency
|
127
99
|
name: shoulda
|
128
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -222,7 +194,7 @@ dependencies:
|
|
222
194
|
- !ruby/object:Gem::Version
|
223
195
|
version: '0'
|
224
196
|
description: gaptool-server for managing cloud resources
|
225
|
-
email:
|
197
|
+
email: ops@gild.com
|
226
198
|
executables:
|
227
199
|
- gaptool-server
|
228
200
|
extensions: []
|
@@ -230,40 +202,18 @@ extra_rdoc_files:
|
|
230
202
|
- LICENSE.txt
|
231
203
|
- README.rdoc
|
232
204
|
files:
|
233
|
-
- ".document"
|
234
|
-
- Gemfile
|
235
205
|
- LICENSE.txt
|
236
|
-
- Procfile
|
237
206
|
- README.rdoc
|
238
|
-
- Rakefile
|
239
|
-
- VERSION
|
240
207
|
- bin/gaptool-server
|
241
|
-
- config.ru
|
242
|
-
- gaptool-server.gemspec
|
243
208
|
- lib/app.rb
|
244
209
|
- lib/helpers/gaptool-base.rb
|
245
210
|
- lib/helpers/init.rb
|
246
|
-
- lib/helpers/mongodb.rb
|
247
|
-
- lib/helpers/nicebytes.rb
|
248
|
-
- lib/helpers/partials.rb
|
249
|
-
- lib/helpers/redis.rb
|
250
211
|
- lib/helpers/rehash.rb
|
251
|
-
- lib/helpers/services.rb
|
252
|
-
- lib/models/init.rb
|
253
|
-
- lib/models/user.rb
|
254
212
|
- lib/public/css/common.css
|
255
|
-
- lib/public/js/manifest.txt
|
256
213
|
- lib/routes/init.rb
|
257
214
|
- lib/routes/main.rb
|
258
|
-
- lib/routes/mongodb.rb
|
259
|
-
- lib/routes/redis.rb
|
260
215
|
- lib/routes/rehash.rb
|
261
|
-
- lib/routes/services.rb
|
262
|
-
- lib/views/hosts.erb
|
263
216
|
- lib/views/init.erb
|
264
|
-
- setup.rb
|
265
|
-
- test/helper.rb
|
266
|
-
- test/test_gaptool-server.rb
|
267
217
|
homepage: http://github.com/mattbailey/gaptool-server
|
268
218
|
licenses:
|
269
219
|
- MIT
|
@@ -284,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
284
234
|
version: '0'
|
285
235
|
requirements: []
|
286
236
|
rubyforge_project:
|
287
|
-
rubygems_version: 2.
|
237
|
+
rubygems_version: 2.2.2
|
288
238
|
signing_key:
|
289
239
|
specification_version: 4
|
290
240
|
summary: gaptool-server for managing cloud resources
|
data/.document
DELETED
data/Gemfile
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
source "http://rubygems.org"
|
2
|
-
# Add dependencies required to use your gem here.
|
3
|
-
# Example:
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
5
|
-
|
6
|
-
# Add dependencies to develop your gem here.
|
7
|
-
# Include everything needed to run rake, tests, features, etc.
|
8
|
-
group :development do
|
9
|
-
gem "shoulda", ">= 0"
|
10
|
-
gem "rdoc", ">= 0"
|
11
|
-
gem "bundler", ">= 0"
|
12
|
-
gem "jeweler", "~> 1.8.4"
|
13
|
-
gem "simplecov", ">= 0"
|
14
|
-
gem "shotgun", ">= 0"
|
15
|
-
gem "pry", ">= 0"
|
16
|
-
end
|
17
|
-
|
18
|
-
gem 'sinatra'
|
19
|
-
gem 'thin', "~> 1.5.1"
|
20
|
-
gem 'redis'
|
21
|
-
gem 'aws-sdk'
|
22
|
-
gem 'net-ssh'
|
23
|
-
gem 'peach'
|
24
|
-
gem 'bson_ext'
|
25
|
-
gem 'mongo'
|
data/Procfile
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
web: bundle exec ruby web.rb -p $PORT
|
data/Rakefile
DELETED
@@ -1,129 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'bundler'
|
5
|
-
begin
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
require 'rake'
|
13
|
-
|
14
|
-
require 'jeweler'
|
15
|
-
Jeweler::Tasks.new do |gem|
|
16
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
-
gem.name = "gaptool-server"
|
18
|
-
gem.homepage = "http://github.com/mattbailey/gaptool-server"
|
19
|
-
gem.license = "MIT"
|
20
|
-
gem.summary = %Q{gaptool-server for managing cloud resources}
|
21
|
-
gem.description = %Q{gaptool-server for managing cloud resources}
|
22
|
-
gem.email = "m@mdb.io"
|
23
|
-
gem.authors = ["Matt Bailey"]
|
24
|
-
gem.executables = ['gaptool-server']
|
25
|
-
gem.default_executable = 'gaptool-server'
|
26
|
-
# dependencies defined in Gemfile
|
27
|
-
end
|
28
|
-
Jeweler::RubygemsDotOrgTasks.new
|
29
|
-
|
30
|
-
require 'rake/testtask'
|
31
|
-
Rake::TestTask.new(:test) do |test|
|
32
|
-
test.libs << 'lib' << 'test'
|
33
|
-
test.pattern = 'test/**/test_*.rb'
|
34
|
-
test.verbose = true
|
35
|
-
end
|
36
|
-
|
37
|
-
task :default => :test
|
38
|
-
|
39
|
-
require 'rdoc/task'
|
40
|
-
Rake::RDocTask.new do |rdoc|
|
41
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
42
|
-
|
43
|
-
rdoc.rdoc_dir = 'rdoc'
|
44
|
-
rdoc.title = "gaptool-server #{version}"
|
45
|
-
rdoc.rdoc_files.include('README*')
|
46
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
47
|
-
end
|
48
|
-
|
49
|
-
namespace :dev do
|
50
|
-
require 'pry'
|
51
|
-
require 'yaml'
|
52
|
-
require 'redis'
|
53
|
-
require 'aws-sdk'
|
54
|
-
YAML::ENGINE.yamler='syck'
|
55
|
-
task :shell do
|
56
|
-
$stderr.puts "env vars REDIS_HOST, REDIS_PORT, and REDIS_PASS should all be set or\ndefaults of localhost:6379 with no password will be used"
|
57
|
-
ENV['REDIS_HOST'] = 'localhost' unless ENV['REDIS_HOST']
|
58
|
-
ENV['REDIS_PORT'] = '6379' unless ENV['REDIS_PORT']
|
59
|
-
ENV['REDIS_PASS'] = nil unless ENV['REDIS_PASS']
|
60
|
-
@redis = Redis.new(:host => ENV['REDIS_HOST'], :port => ENV['REDIS_PORT'], :password => ENV['REDIS_PASS'])
|
61
|
-
$stderr.puts "@redis available"
|
62
|
-
if @redis.hget('config', 'aws_id' ) && @redis.hget('config', 'aws_secret')
|
63
|
-
if !ENV['AWS_ZONE']
|
64
|
-
print "Shortname aws zone? "
|
65
|
-
zone = $stdin.gets.chomp
|
66
|
-
else
|
67
|
-
zone = ENV['AWS_ZONE']
|
68
|
-
end
|
69
|
-
AWS.config(:access_key_id => @redis.hget('config', 'aws_id'), :secret_access_key => @redis.hget('config', 'aws_secret'), :ec2_endpoint => "ec2.#{zone}.amazonaws.com")
|
70
|
-
@ec2 = AWS::EC2.new
|
71
|
-
$stderr.puts "@ec2 available"
|
72
|
-
end
|
73
|
-
binding.pry
|
74
|
-
puts "exiting"
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
namespace :config do
|
79
|
-
require 'redis'
|
80
|
-
require 'yaml'
|
81
|
-
ENV['REDIS_HOST'] = 'localhost' unless ENV['REDIS_HOST']
|
82
|
-
ENV['REDIS_PORT'] = '6379' unless ENV['REDIS_PORT']
|
83
|
-
ENV['REDIS_PASS'] = nil unless ENV['REDIS_PASS']
|
84
|
-
@redis = Redis.new(:host => ENV['REDIS_HOST'], :port => ENV['REDIS_PORT'], :password => ENV['REDIS_PASS'])
|
85
|
-
$stderr.puts "env vars REDIS_HOST, REDIS_PORT, and REDIS_PASS should all be set or\ndefaults of localhost:6379 with no password will be used"
|
86
|
-
YAML::ENGINE.yamler='syck'
|
87
|
-
|
88
|
-
task :import do
|
89
|
-
data = YAML::Parser($stdin)
|
90
|
-
puts data
|
91
|
-
end
|
92
|
-
task :delete do
|
93
|
-
print "Delete ALL existing data (y/N)? "
|
94
|
-
delete = gets.chomp
|
95
|
-
hashes = [
|
96
|
-
'sg:us-east-1',
|
97
|
-
'sg:us-west-1',
|
98
|
-
'sg:us-west-2',
|
99
|
-
'sg:ap-northeast-1',
|
100
|
-
'sg:ap-southeast-1',
|
101
|
-
'sg:ap-southeast-2',
|
102
|
-
'sg:eu-west-1',
|
103
|
-
'sg:sa-east-1',
|
104
|
-
'config',
|
105
|
-
'amis',
|
106
|
-
'users',
|
107
|
-
]
|
108
|
-
|
109
|
-
if delete == 'y'
|
110
|
-
@redis.keys("*") do |key|
|
111
|
-
@redis.del key
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
end
|
116
|
-
|
117
|
-
task :dump do
|
118
|
-
dump = Hash.new
|
119
|
-
@redis.keys("*").each do |key|
|
120
|
-
if @redis.type(key) == 'hash'
|
121
|
-
dump.merge!({ key => @redis.hgetall(key) })
|
122
|
-
else
|
123
|
-
dump.merge!({ key => @redis.get(key) })
|
124
|
-
end
|
125
|
-
end
|
126
|
-
puts dump.to_yaml
|
127
|
-
end
|
128
|
-
|
129
|
-
end
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.4.13
|
data/config.ru
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'redis'
|
4
|
-
|
5
|
-
ENV['REDIS_HOST'] = 'localhost' unless ENV['REDIS_HOST']
|
6
|
-
ENV['REDIS_PORT'] = '6379' unless ENV['REDIS_PORT']
|
7
|
-
ENV['REDIS_PASS'] = nil unless ENV['REDIS_PASS']
|
8
|
-
$redis = Redis.new(:host => ENV['REDIS_HOST'], :port => ENV['REDIS_PORT'], :password => ENV['REDIS_PASS'])
|
9
|
-
|
10
|
-
libpath = File.expand_path(File.join(File.dirname(__FILE__), "lib"))
|
11
|
-
|
12
|
-
$:.unshift(libpath)
|
13
|
-
|
14
|
-
require "#{libpath}/app.rb"
|
15
|
-
#Dir["#{ENV['HOME']}/.gaptool-server-plugins/*.rb"].each {|file| require file }
|
16
|
-
#Dir["#{libpath}/plugins/*.rb"].each {|file| require file }
|
17
|
-
|
18
|
-
instance = GaptoolServer.new
|
19
|
-
#$redis.smembers("plugins").each do |plugin|
|
20
|
-
## puts "Loading Plugin #{plugin}"
|
21
|
-
# instance.extend(Object.instance_eval{remove_const(plugin)})
|
22
|
-
#end
|
23
|
-
|
24
|
-
run instance
|
data/gaptool-server.gemspec
DELETED
@@ -1,116 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = "gaptool-server"
|
8
|
-
s.version = "0.4.13"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Matt Bailey", "Francesco Laurita"]
|
12
|
-
s.date = "2013-08-12"
|
13
|
-
s.description = "gaptool-server for managing cloud resources"
|
14
|
-
s.email = "m@mdb.io"
|
15
|
-
s.executables = ["gaptool-server"]
|
16
|
-
s.extra_rdoc_files = [
|
17
|
-
"LICENSE.txt",
|
18
|
-
"README.rdoc"
|
19
|
-
]
|
20
|
-
s.files = [
|
21
|
-
".document",
|
22
|
-
"Gemfile",
|
23
|
-
"LICENSE.txt",
|
24
|
-
"Procfile",
|
25
|
-
"README.rdoc",
|
26
|
-
"Rakefile",
|
27
|
-
"VERSION",
|
28
|
-
"bin/gaptool-server",
|
29
|
-
"config.ru",
|
30
|
-
"gaptool-server.gemspec",
|
31
|
-
"lib/app.rb",
|
32
|
-
"lib/helpers/gaptool-base.rb",
|
33
|
-
"lib/helpers/init.rb",
|
34
|
-
"lib/helpers/mongodb.rb",
|
35
|
-
"lib/helpers/nicebytes.rb",
|
36
|
-
"lib/helpers/partials.rb",
|
37
|
-
"lib/helpers/redis.rb",
|
38
|
-
"lib/helpers/rehash.rb",
|
39
|
-
"lib/helpers/services.rb",
|
40
|
-
"lib/models/init.rb",
|
41
|
-
"lib/models/user.rb",
|
42
|
-
"lib/public/css/common.css",
|
43
|
-
"lib/public/js/manifest.txt",
|
44
|
-
"lib/routes/init.rb",
|
45
|
-
"lib/routes/main.rb",
|
46
|
-
"lib/routes/mongodb.rb",
|
47
|
-
"lib/routes/redis.rb",
|
48
|
-
"lib/routes/rehash.rb",
|
49
|
-
"lib/routes/services.rb",
|
50
|
-
"lib/views/hosts.erb",
|
51
|
-
"lib/views/init.erb",
|
52
|
-
"setup.rb",
|
53
|
-
"test/helper.rb",
|
54
|
-
"test/test_gaptool-server.rb"
|
55
|
-
]
|
56
|
-
s.homepage = "http://github.com/mattbailey/gaptool-server"
|
57
|
-
s.licenses = ["MIT"]
|
58
|
-
s.require_paths = ["lib"]
|
59
|
-
s.rubygems_version = "2.0.5"
|
60
|
-
s.summary = "gaptool-server for managing cloud resources"
|
61
|
-
|
62
|
-
if s.respond_to? :specification_version then
|
63
|
-
s.specification_version = 4
|
64
|
-
|
65
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
66
|
-
s.add_runtime_dependency(%q<sinatra>, [">= 0"])
|
67
|
-
s.add_runtime_dependency(%q<thin>, ["~> 1.5.1"])
|
68
|
-
s.add_runtime_dependency(%q<redis>, [">= 0"])
|
69
|
-
s.add_runtime_dependency(%q<aws-sdk>, [">= 0"])
|
70
|
-
s.add_runtime_dependency(%q<net-ssh>, [">= 0"])
|
71
|
-
s.add_runtime_dependency(%q<peach>, [">= 0"])
|
72
|
-
s.add_runtime_dependency(%q<bson_ext>, [">= 0"])
|
73
|
-
s.add_runtime_dependency(%q<mongo>, [">= 0"])
|
74
|
-
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
75
|
-
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
76
|
-
s.add_development_dependency(%q<bundler>, [">= 0"])
|
77
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
78
|
-
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
79
|
-
s.add_development_dependency(%q<shotgun>, [">= 0"])
|
80
|
-
s.add_development_dependency(%q<pry>, [">= 0"])
|
81
|
-
else
|
82
|
-
s.add_dependency(%q<sinatra>, [">= 0"])
|
83
|
-
s.add_dependency(%q<thin>, ["~> 1.5.1"])
|
84
|
-
s.add_dependency(%q<redis>, [">= 0"])
|
85
|
-
s.add_dependency(%q<aws-sdk>, [">= 0"])
|
86
|
-
s.add_dependency(%q<net-ssh>, [">= 0"])
|
87
|
-
s.add_dependency(%q<peach>, [">= 0"])
|
88
|
-
s.add_dependency(%q<bson_ext>, [">= 0"])
|
89
|
-
s.add_dependency(%q<mongo>, [">= 0"])
|
90
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
91
|
-
s.add_dependency(%q<rdoc>, [">= 0"])
|
92
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
93
|
-
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
94
|
-
s.add_dependency(%q<simplecov>, [">= 0"])
|
95
|
-
s.add_dependency(%q<shotgun>, [">= 0"])
|
96
|
-
s.add_dependency(%q<pry>, [">= 0"])
|
97
|
-
end
|
98
|
-
else
|
99
|
-
s.add_dependency(%q<sinatra>, [">= 0"])
|
100
|
-
s.add_dependency(%q<thin>, ["~> 1.5.1"])
|
101
|
-
s.add_dependency(%q<redis>, [">= 0"])
|
102
|
-
s.add_dependency(%q<aws-sdk>, [">= 0"])
|
103
|
-
s.add_dependency(%q<net-ssh>, [">= 0"])
|
104
|
-
s.add_dependency(%q<peach>, [">= 0"])
|
105
|
-
s.add_dependency(%q<bson_ext>, [">= 0"])
|
106
|
-
s.add_dependency(%q<mongo>, [">= 0"])
|
107
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
108
|
-
s.add_dependency(%q<rdoc>, [">= 0"])
|
109
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
110
|
-
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
111
|
-
s.add_dependency(%q<simplecov>, [">= 0"])
|
112
|
-
s.add_dependency(%q<shotgun>, [">= 0"])
|
113
|
-
s.add_dependency(%q<pry>, [">= 0"])
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
data/lib/helpers/mongodb.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'mongo'
|
3
|
-
module MongodbHelpers
|
4
|
-
def collectioncount(dbcollections)
|
5
|
-
@remote_mongodb = Mongo::MongoClient.new(
|
6
|
-
'localhost' || $redis.hget('config', 'remotemongo:host'),
|
7
|
-
27017 || $redis.hget('config', 'remotemongo:port'),
|
8
|
-
)
|
9
|
-
result = Hash.new
|
10
|
-
dbcollections.keys.each do |db|
|
11
|
-
@db = @remote_mongodb[db]
|
12
|
-
count = Hash.new
|
13
|
-
dbcollections[db].each do |collection|
|
14
|
-
count.merge!(collection => @db[collection].stats['count'])
|
15
|
-
end
|
16
|
-
result.merge!(db => count)
|
17
|
-
end
|
18
|
-
return result
|
19
|
-
end
|
20
|
-
end
|
data/lib/helpers/nicebytes.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module NiceBytes
|
3
|
-
K = 2.0**10
|
4
|
-
M = 2.0**20
|
5
|
-
G = 2.0**30
|
6
|
-
T = 2.0**40
|
7
|
-
def nice_bytes( bytes, max_digits=3 )
|
8
|
-
value, suffix, precision = case bytes
|
9
|
-
when 0...K
|
10
|
-
[ bytes, 'B', 0 ]
|
11
|
-
else
|
12
|
-
value, suffix = case bytes
|
13
|
-
when K...M then [ bytes / K, 'kiB' ]
|
14
|
-
when M...G then [ bytes / M, 'MiB' ]
|
15
|
-
when G...T then [ bytes / G, 'GiB' ]
|
16
|
-
else [ bytes / T, 'TiB' ]
|
17
|
-
end
|
18
|
-
used_digits = case value
|
19
|
-
when 0...10 then 1
|
20
|
-
when 10...100 then 2
|
21
|
-
when 100...1000 then 3
|
22
|
-
else 4
|
23
|
-
end
|
24
|
-
leftover_digits = max_digits - used_digits
|
25
|
-
[ value, suffix, leftover_digits > 0 ? leftover_digits : 0 ]
|
26
|
-
end
|
27
|
-
"%.#{precision}f#{suffix}" % value
|
28
|
-
end
|
29
|
-
module_function :nice_bytes
|
30
|
-
end
|
data/lib/helpers/partials.rb
DELETED
data/lib/helpers/redis.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module RedisHelpers
|
3
|
-
def remotellen(lists)
|
4
|
-
@remote_redis = Redis.new(
|
5
|
-
:host => $redis.hget('config', 'remoteredis:host'),
|
6
|
-
:port => $redis.hget('config', 'remoteredis:port'),
|
7
|
-
:password => nil || $redis.hget('config', 'remoteredis:password')
|
8
|
-
)
|
9
|
-
result = Hash.new
|
10
|
-
lists.each do |list|
|
11
|
-
result.merge!(list => @remote_redis.llen(list))
|
12
|
-
end
|
13
|
-
return result
|
14
|
-
end
|
15
|
-
|
16
|
-
def remotelpush(list, value)
|
17
|
-
@remote_redis = Redis.new(
|
18
|
-
:host => $redis.hget('config', 'remoteredis:host'),
|
19
|
-
:port => 6379 || $redis.hget('config', 'remoteredis:port'),
|
20
|
-
:password => nil || $redis.hget('config', 'remoteredis:password')
|
21
|
-
)
|
22
|
-
begin
|
23
|
-
@remote_redis.lpush(list, value)
|
24
|
-
return { success => "true" }
|
25
|
-
rescue
|
26
|
-
return { success => "false" }
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
data/lib/helpers/services.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module ServiceHelpers
|
3
|
-
def svcapi_getkey(service)
|
4
|
-
$redis.brpoplpush("apikey:available:#{service}", "apikey:inuse:#{service}", 120)
|
5
|
-
end
|
6
|
-
def svcapi_releasekey(service, key)
|
7
|
-
$redis.lrem("apikey:inuse:#{service}", 1, key)
|
8
|
-
$redis.rpush("apikey:available:#{service}", key)
|
9
|
-
end
|
10
|
-
def svcapi_showkeys(service)
|
11
|
-
unless service == :all
|
12
|
-
@inuse = $redis.lrange("apikey:inuse:#{service}", 0, -1)
|
13
|
-
@available = $redis.lrange("apikey:available:#{service}", 0, -1)
|
14
|
-
return { :inuse => @inuse, :available => @available }
|
15
|
-
else
|
16
|
-
@all = Hash.new
|
17
|
-
$redis.keys('apikey:*').each do |service|
|
18
|
-
if service =~ /:available:/
|
19
|
-
begin
|
20
|
-
@all[service.gsub('apikey:available:', '')][:available] = $redis.lrange(service, 0, -1)
|
21
|
-
rescue
|
22
|
-
@all[service.gsub('apikey:available:', '')] = Hash.new
|
23
|
-
@all[service.gsub('apikey:available:', '')][:available] = $redis.lrange(service, 0, -1)
|
24
|
-
end
|
25
|
-
elsif service =~ /:inuse:/
|
26
|
-
begin
|
27
|
-
@all[service.gsub('apikey:inuse:', '')][:inuse] = $redis.lrange(service, 0, -1)
|
28
|
-
rescue
|
29
|
-
@all[service.gsub('apikey:inuse:', '')] = Hash.new
|
30
|
-
@all[service.gsub('apikey:inuse:', '')][:inuse] = $redis.lrange(service, 0, -1)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
return @all
|
35
|
-
end
|
36
|
-
end
|
37
|
-
def svcapi_deletekey(service, key)
|
38
|
-
begin
|
39
|
-
$redis.lrem("apikey:inuse:#{service}", 1, key)
|
40
|
-
$redis.lrem("apikey:available:#{service}", 1, key)
|
41
|
-
rescue
|
42
|
-
end
|
43
|
-
end
|
44
|
-
def svcapi_putkey(service, key)
|
45
|
-
$redis.lpush("apikey:available:#{service}", key)
|
46
|
-
end
|
47
|
-
end
|
data/lib/models/init.rb
DELETED
data/lib/models/user.rb
DELETED
data/lib/public/js/manifest.txt
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
|
data/lib/routes/mongodb.rb
DELETED
data/lib/routes/redis.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
class GaptoolServer < Sinatra::Application
|
3
|
-
post '/status/redis/llen' do
|
4
|
-
data = JSON.parse request.body.read
|
5
|
-
remotellen(data).to_json
|
6
|
-
end
|
7
|
-
post '/status/redis/lpush' do
|
8
|
-
data = JSON.parse request.body.read
|
9
|
-
remotelpush(data['list'], data['value']).to_json
|
10
|
-
end
|
11
|
-
end
|
data/lib/routes/services.rb
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
class GaptoolServer < Sinatra::Application
|
3
|
-
|
4
|
-
get '/servicekeys/use/:service' do
|
5
|
-
svcapi_getkey(params[:service])
|
6
|
-
end
|
7
|
-
|
8
|
-
get '/servicekeys/:service' do
|
9
|
-
svcapi_showkeys(params[:service]).to_json
|
10
|
-
end
|
11
|
-
|
12
|
-
get '/servicekeys' do
|
13
|
-
svcapi_showkeys(:all).to_json
|
14
|
-
end
|
15
|
-
|
16
|
-
post '/servicekeys/release/:service' do
|
17
|
-
data = JSON.parse request.body.read
|
18
|
-
svcapi_releasekey(params[:service], data['key'])
|
19
|
-
end
|
20
|
-
|
21
|
-
put '/servicekeys/:service' do
|
22
|
-
data = JSON.parse request.body.read
|
23
|
-
"{\"count\": \"#{svcapi_putkey(params[:service], data['key'])}\"}"
|
24
|
-
end
|
25
|
-
|
26
|
-
delete '/servicekeys/:service' do
|
27
|
-
data = JSON.parse request.body.read
|
28
|
-
"{\"count\": \"#{svcapi_deletekey(params[:service], data['key'])}\"}"
|
29
|
-
end
|
30
|
-
|
31
|
-
put '/service/:role/:environment' do
|
32
|
-
data = JSON.parse request.body.read
|
33
|
-
count = $redis.incr("service:#{params[:role]}:#{params[:environment]}:#{data['name']}:count")
|
34
|
-
key = "service:#{params[:role]}:#{params[:environment]}:#{data['name']}:#{count}"
|
35
|
-
$redis.hset(key, 'name', data['name'])
|
36
|
-
$redis.hset(key, 'keys', data['keys'])
|
37
|
-
$redis.hset(key, 'weight', data['weight'])
|
38
|
-
$redis.hset(key, 'role', params[:role])
|
39
|
-
$redis.hset(key, 'environment', params[:environment])
|
40
|
-
$redis.hset(key, 'run', data['enabled'])
|
41
|
-
{
|
42
|
-
:role => params[:role],
|
43
|
-
:environment => params[:environment],
|
44
|
-
:service => data['name'],
|
45
|
-
:count => count,
|
46
|
-
}.to_json
|
47
|
-
end
|
48
|
-
|
49
|
-
delete '/service/:role/:environment/:service' do
|
50
|
-
if $redis.get("service:#{params[:role]}:#{params[:environment]}:#{params[:service]}:count") == '0'
|
51
|
-
count = 0
|
52
|
-
else
|
53
|
-
count = $redis.decr("service:#{params[:role]}:#{params[:environment]}:#{params[:service]}:count")
|
54
|
-
service = eval($redis.range("running", 0, -1).grep(/scoring/).last)
|
55
|
-
runservice(service[:hostname], params[:role], params[:environment], params[:service], 'stop')
|
56
|
-
$redis.del("service:#{params[:role]}:#{params[:environment]}:#{params[:service]}:#{count + 1}")
|
57
|
-
end
|
58
|
-
{
|
59
|
-
:role => params[:role],
|
60
|
-
:environment => params[:environment],
|
61
|
-
:service => params[:service],
|
62
|
-
:count => count,
|
63
|
-
}.to_json
|
64
|
-
end
|
65
|
-
|
66
|
-
get '/services' do
|
67
|
-
getservices().to_json
|
68
|
-
end
|
69
|
-
|
70
|
-
get '/servicebalance/:role/:environment' do
|
71
|
-
runlist = balanceservices(params[:role], params[:environment])
|
72
|
-
unless runlist.kind_of? Hash
|
73
|
-
servicestopall(params[:role], params[:environment])
|
74
|
-
runlist.peach do |event|
|
75
|
-
runservice(event[:host][:hostname], params[:role], params[:environment], event[:service][:name], event[:service][:keys], 'start')
|
76
|
-
end
|
77
|
-
end
|
78
|
-
runlist.to_json
|
79
|
-
end
|
80
|
-
end
|
data/lib/views/hosts.erb
DELETED
data/setup.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'aws-sdk'
|
4
|
-
|
5
|
-
zones = [
|
6
|
-
'us-east-1',
|
7
|
-
'us-west-1',
|
8
|
-
'us-west-2',
|
9
|
-
'sa-east-1',
|
10
|
-
'eu-west-1',
|
11
|
-
'ap-southeast-1',
|
12
|
-
'ap-northeast-1',
|
13
|
-
'ap-southeast-2',
|
14
|
-
]
|
15
|
-
|
16
|
-
puts "This script will set up your gaptool-server, make sure you have the aws-sdk gem installed."
|
17
|
-
puts "Before getting started, either create a new IAM role with full access to EC2, or input your master AWS ID and Secret."
|
18
|
-
puts "Also ensure that you have an EMPTY redis server running somewhere avilable."
|
19
|
-
puts "Read the source of this script if you're worried about what it does with it."
|
20
|
-
|
21
|
-
print "Enter AWS ID: "
|
22
|
-
aws_id = gets.chomp
|
23
|
-
print "Enter AWS Secret: "
|
24
|
-
aws_secret = gets.chomp
|
25
|
-
print "Redis host: "
|
26
|
-
redis_host = gets.chomp
|
27
|
-
print "Redis port: "
|
28
|
-
redis_port = gets.chomp
|
29
|
-
print "Redis password (leave blank if none): "
|
30
|
-
redis_pass = gets.chomp
|
31
|
-
|
32
|
-
@redis = Redis.new(:host => redis_host, :port => redis_port, :password => redis_pass)
|
33
|
-
|
34
|
-
zones.each do |zone|
|
35
|
-
# Run for each AZ
|
36
|
-
AWS.config(:access_key_id => aws_id, :secret_access_key => aws_secret, :ec2_endpoint => "ec2.#{zone}.amazonaws.com")
|
37
|
-
@ec2 = AWS::EC2.new
|
38
|
-
@key = @ec2.key_pairs.create('gaptool-server')
|
39
|
-
@private = @key.private_key
|
40
|
-
end
|
41
|
-
|
42
|
-
|
data/test/helper.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
|
-
require 'test/unit'
|
11
|
-
require 'shoulda'
|
12
|
-
|
13
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
-
require 'gaptool-server'
|
16
|
-
|
17
|
-
class Test::Unit::TestCase
|
18
|
-
end
|
data/test/test_gaptool-server.rb
DELETED