gaptool-server 0.5.19 → 0.6.0.beta1

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.
data/test/api_test.rb ADDED
@@ -0,0 +1,256 @@
1
+ require_relative 'test_helper'
2
+ require 'json'
3
+ require 'set'
4
+
5
+ describe "Test API" do
6
+ before(:all) do
7
+ ENV['DRYRUN'] = 'true'
8
+ end
9
+
10
+ after(:all) do
11
+ ENV['DRYRUN'] = nil
12
+ end
13
+
14
+ before(:each) do
15
+ header 'X_GAPTOOL_USER', 'test'
16
+ header 'X_GAPTOOL_KEY', 'test'
17
+ $redis.flushall
18
+ DH.useradd('test', 'test')
19
+ end
20
+
21
+ def add_and_register_server data=nil
22
+ data ||= host_data
23
+ post '/init', data.to_json
24
+ expect(last_response.status).to eq(200)
25
+ res = JSON.parse(last_response.body)
26
+ id = res['instance']
27
+ secret = res['secret']
28
+ # there is no API to get the secret, get it from the database.
29
+ secret = Gaptool::Data::get_server_data(id)['secret']
30
+ put '/register', {'role' => data['role'],
31
+ 'environment' => data['environment'],
32
+ 'secret'=> secret,
33
+ 'zone'=> data['zone']}.to_json
34
+ expect(last_response.status).to eq(200)
35
+ res
36
+ end
37
+
38
+ def host_data
39
+ {
40
+ 'security_group' => 'mysg',
41
+ 'role' => 'testrole',
42
+ 'environment' => 'testenv',
43
+ 'ami' => 'ami-1234567',
44
+ 'chef_runlist' => ['recipe[myrecipe]'],
45
+ 'terminable' => true,
46
+ 'zone' => 'my-zone-1a',
47
+ 'itype' => 'm1.type'
48
+ }
49
+ end
50
+
51
+ def expanded_runlist
52
+ ['recipe[init]', 'recipe[myrecipe]']
53
+ end
54
+
55
+ it "should return 200" do
56
+ get '/'
57
+ expect(last_response.status).to eq(200)
58
+ end
59
+
60
+ it "should create a instance" do
61
+ post '/init', host_data.to_json
62
+ expect(last_response.status).to eq(200)
63
+ expect(last_response.content_type).to eq('application/json')
64
+ expect(JSON.parse(last_response.body).keys).to eq(["instance", "ami", "role", "environment", "secret", "terminable", "security_group"])
65
+ end
66
+
67
+ it "should get the runlist from the role" do
68
+ DH.save_role_data(host_data['role'], chef_runlist: ['recipe[other]'].to_json)
69
+ id = add_and_register_server(host_data.reject{|k,v| k == 'chef_runlist'})['instance']
70
+ get "/host/testrole/testenv/#{id}"
71
+ resp = JSON.parse(last_response.body)
72
+ expect(resp.keys).to include("chef_runlist")
73
+ expect(resp['chef_runlist']).to eq(['recipe[other]'])
74
+ end
75
+
76
+ it "should remove default runlist" do
77
+ id = add_and_register_server(host_data.merge("chef_runlist"=> ['recipe[init]']))['instance']
78
+ get "/host/testrole/testenv/#{id}"
79
+ resp = JSON.parse(last_response.body)
80
+ expect(resp.keys).not_to include("chef_runlist")
81
+ end
82
+
83
+ it "should remove default runlist from role" do
84
+ DH.save_role_data(host_data['role'], chef_runlist: ['recipe[init]'].to_json)
85
+ id = add_and_register_server(host_data.reject{|k,v| k == 'chef_runlist'})['instance']
86
+ get "/host/testrole/testenv/#{id}"
87
+ resp = JSON.parse(last_response.body)
88
+ expect(resp.keys).not_to include("chef_runlist")
89
+ expect(resp['chef_runlist']).to be(nil)
90
+
91
+ end
92
+
93
+ it "should get the ami from the role" do
94
+ DH.save_role_data(host_data['role'], 'amis' => {'my-zone-1' => 'ami-other'})
95
+ res = add_and_register_server(host_data.reject{|k,v| k == 'ami'})
96
+ expect(res['ami']).to eq('ami-other')
97
+ get "/host/testrole/testenv/#{res['instance']}"
98
+ resp = JSON.parse(last_response.body)
99
+ expect(resp.keys).to_not include("ami")
100
+ end
101
+
102
+ it "should get the ami from global conf" do
103
+ DH.set_amis({'my-zone-1' => 'ami-default'})
104
+ res = add_and_register_server(host_data.reject{|k,v| k == 'ami'})
105
+ expect(res['ami']).to eq('ami-default')
106
+ get "/host/testrole/testenv/#{res['instance']}"
107
+ resp = JSON.parse(last_response.body)
108
+ expect(resp.keys).to_not include("ami")
109
+ end
110
+
111
+ it "should fail to parse client data" do
112
+ post '/init', host_data
113
+ expect(last_response.status).to eq(400)
114
+ end
115
+
116
+ it "should fail to create a instance" do
117
+ %w(role environment zone itype).each do |req|
118
+ post '/init', host_data.reject{|k, v| k == req}.to_json
119
+ expect(last_response.status).to eq(400)
120
+ expect(JSON.parse(last_response.body).keys).to eq(%w(result message))
121
+ end
122
+ end
123
+
124
+ it "should fail for missing parameter to terminate" do
125
+ post '/terminate'
126
+ expect(last_response.status).to eq(400)
127
+ end
128
+
129
+ it "should fail to terminate non-existing instance" do
130
+ post '/terminate', {'id' => 'i-1234567'}.to_json
131
+ expect(last_response.status).to eq(404)
132
+ end
133
+
134
+ it "should fail to terminate non-terminable instance" do
135
+ post '/init', host_data.merge('terminable' => false).to_json
136
+ expect(last_response.status).to eq(200)
137
+ id = JSON.parse(last_response.body)['instance']
138
+ post '/terminate', {'id' => id}.to_json
139
+ expect(last_response.status).to eq(409)
140
+ end
141
+
142
+ it "should terminate instance" do
143
+ post '/init', host_data.to_json
144
+ expect(last_response.status).to eq(200)
145
+ id = JSON.parse(last_response.body)['instance']
146
+ post '/terminate', {'id' => id}.to_json
147
+ expect(last_response.status).to eq(200)
148
+ expect(JSON.parse(last_response.body)).to eq({id => {'status'=> 'terminated'}})
149
+ end
150
+
151
+ it "should fail to register a server" do
152
+ required_keys = %w(role zone environment secret)
153
+ hdata = host_data.select {|k, v| required_keys.include?(k)}
154
+ hdata['secret'] = 'mysecret'
155
+ required_keys.each do |key|
156
+ put '/register', hdata.select {|k,v| k != key}.to_json
157
+ expect(last_response.status).to eq(400)
158
+ end
159
+ put '/register', hdata.to_json
160
+ expect(last_response.status).to eq(403)
161
+ end
162
+
163
+ it "should register the server" do
164
+ add_and_register_server
165
+ end
166
+
167
+ it "should find an host" do
168
+ id = add_and_register_server()['instance']
169
+ get '/hosts'
170
+ expect(last_response.status).to eq(200)
171
+ exp_data = host_data.reject{|k,v| k == 'terminable'}.merge('chef_runlist' => expanded_runlist)
172
+ exp_data['instance'] = id
173
+ expect(JSON.parse(last_response.body)).to eq([exp_data])
174
+ end
175
+
176
+ it "should find two hosts" do
177
+ id1 = add_and_register_server()['instance']
178
+ id2 = add_and_register_server()['instance']
179
+ get '/hosts'
180
+ expect(last_response.status).to eq(200)
181
+ exp_data = [
182
+ host_data.reject{|k,v| k == 'terminable'}.merge({'instance' => id1,
183
+ 'chef_runlist' => expanded_runlist}),
184
+ host_data.reject{|k,v| k == 'terminable'}.merge({'instance' => id2,
185
+ 'chef_runlist' => expanded_runlist})
186
+ ].to_set
187
+ expect(JSON.parse(last_response.body).to_set).to eq(exp_data)
188
+ end
189
+
190
+ it "should find an host by role" do
191
+ other = host_data.merge({'role' => 'otherrole'})
192
+ id1 = add_and_register_server(other)['instance']
193
+ id2 = add_and_register_server()['instance']
194
+
195
+ get '/hosts/otherrole'
196
+ expect(last_response.status).to eq(200)
197
+ exp_data = [other.reject{|k,v| k == 'terminable'}.merge({'instance'=> id1,
198
+ 'chef_runlist' => expanded_runlist})]
199
+ expect(JSON.parse(last_response.body)).to eq(exp_data)
200
+ end
201
+
202
+ it "should find an host by id" do
203
+ id = add_and_register_server()['instance']
204
+ ["/instance/#{id}", "/host/testrole/testenv/#{id}", "/host/FAKE/FAKE/#{id}"].each do |url|
205
+ get url
206
+ expect(last_response.status).to eq(200)
207
+ exp_data = host_data.reject{|k,v| k == 'terminable'}.merge({
208
+ 'instance'=> id,
209
+ 'chef_runlist' => expanded_runlist})
210
+ expect(JSON.parse(last_response.body)).to eq(exp_data)
211
+ end
212
+ end
213
+
214
+ it "should find all hosts by environment and role" do
215
+ id1 = add_and_register_server()['instance']
216
+ id2 = add_and_register_server()['instance']
217
+ id3 = add_and_register_server(host_data.merge({'environment' => 'otherenv'}))['instance']
218
+ id4 = add_and_register_server(host_data.merge({'role' => 'otherrole'}))['instance']
219
+ get '/hosts/testrole/testenv'
220
+ expect(last_response.status).to eq(200)
221
+ d = host_data.reject{|k,v| k == 'terminable'}.merge('chef_runlist' => expanded_runlist)
222
+ exp_data = [
223
+ d.merge({'instance' => id1}),
224
+ d.merge({'instance' => id2})
225
+ ].to_set
226
+ expect(JSON.parse(last_response.body).to_set).to eq(exp_data)
227
+
228
+ get '/hosts/ALL/testenv'
229
+ expect(last_response.status).to eq(200)
230
+ exp_data = [
231
+ d.merge({'instance' => id1}),
232
+ d.merge({'instance' => id2}),
233
+ d.merge({'instance' => id4, 'role'=> 'otherrole'})
234
+ ].to_set
235
+ expect(JSON.parse(last_response.body).to_set).to eq(exp_data)
236
+ end
237
+
238
+ it "should return the server version" do
239
+ version = File.read(File.realpath(
240
+ File.join(File.dirname(__FILE__), "..", 'VERSION')
241
+ )).strip
242
+ get "/version"
243
+ expect(last_response.status).to eq(200)
244
+ expect(JSON.parse(last_response.body)).to eq({"server_version" => version, "api" => {"v0" => "/"}})
245
+ end
246
+
247
+ it "should return the list of apps" do
248
+ DH.add_app("firstapp", "testrole")
249
+ DH.add_app("secondapp", "testrole")
250
+ apps_list = {"firstapp" => {"role" => "testrole"},
251
+ "secondapp" =>{"role" => "testrole"}}
252
+ get "/apps"
253
+ expect(last_response.status).to eq(200)
254
+ expect(JSON.parse(last_response.body)).to eq(apps_list)
255
+ end
256
+ end
data/test/base_test.rb ADDED
@@ -0,0 +1,16 @@
1
+ require_relative 'test_helper'
2
+
3
+ describe "ping should work unauthenticated" do
4
+ it "should return PONG" do
5
+ get '/ping'
6
+ expect(last_response.status).to eq(200)
7
+ expect(last_response.body).to eq("PONG")
8
+ end
9
+ end
10
+
11
+ describe "unauthenticated" do
12
+ it "should return 401 error" do
13
+ get '/'
14
+ expect(last_response.status).to eq(401)
15
+ end
16
+ end
data/test/data_test.rb ADDED
@@ -0,0 +1,118 @@
1
+ require_relative 'test_helper'
2
+ require 'json'
3
+
4
+ describe "data helpers" do
5
+
6
+ before(:each) do
7
+ $redis.flushall
8
+ DH.set_config('chef_repo', 'myrepo')
9
+ DH.set_config('chef_branch', 'master')
10
+ end
11
+
12
+ def data
13
+ {
14
+ 'role' => "role",
15
+ 'environment' => "env"
16
+ }
17
+ end
18
+
19
+ def instid
20
+ 'i-1234567'
21
+ end
22
+
23
+ it "should add a server" do
24
+ expect { DH.addserver("i-1234567", {}, "secret") }.to raise_error(ArgumentError)
25
+ expect { DH.addserver('', data, "secret") }.to raise_error(ArgumentError)
26
+
27
+ DH.addserver(instid, data, "secret")
28
+ server = DH.get_server_data(instid)
29
+ expect(server).to eq(data.merge({
30
+ 'instance' => instid,
31
+ 'chef_repo' => 'myrepo',
32
+ 'chef_branch' => 'master',
33
+ 'registered' => 'false',
34
+ 'secret' => 'secret'
35
+ }))
36
+ end
37
+
38
+ it "should add a registered server" do
39
+ DH.addserver(instid, data, nil)
40
+ server = DH.get_server_data(instid)
41
+ expect(server).to eq(data.merge({
42
+ 'instance' => instid,
43
+ 'chef_repo' => 'myrepo',
44
+ 'chef_branch' => 'master'
45
+ }))
46
+ end
47
+
48
+ it "should register a server" do
49
+ DH.addserver(instid, data, "secret")
50
+ res = DH.register_server(data['role'], data['environment'], '')
51
+ expect(res).to be(nil)
52
+
53
+ res = DH.register_server(data['role'], data['environment'], 'secret')
54
+ expect(res).to eq(instid)
55
+ server = DH.get_server_data(instid)
56
+ expect(server).to eq(data.merge({
57
+ 'instance' => instid,
58
+ 'chef_repo' => 'myrepo',
59
+ 'chef_branch' => 'master'
60
+ }))
61
+ end
62
+
63
+ it "should remove a server" do
64
+ DH.addserver(instid, data, 'secret')
65
+ res = DH.register_server(data['role'], data['environment'], 'secret')
66
+ res = DH.rmserver(instid)
67
+ expect(res).to eq(instid)
68
+ server = DH.get_server_data(instid)
69
+ expect(server).to be(nil)
70
+
71
+ res = DH.rmserver(instid)
72
+ expect(res).to be(nil)
73
+ end
74
+
75
+ it "should set a config" do
76
+ c = DH.get_config('fakekey')
77
+ expect(c).to be(nil)
78
+
79
+ DH.set_config('fakekey', 'value')
80
+ c = DH.get_config('fakekey')
81
+ expect(c).to eq('value')
82
+ end
83
+
84
+ it "should return the initkey" do
85
+ DH.set_config('initkey', 'FAKEKEY')
86
+ DH.addserver(instid, data, nil)
87
+ server = DH.get_server_data(instid, initkey: true)
88
+ expect(server).to eq(data.merge({
89
+ 'instance' => instid,
90
+ 'chef_repo' => 'myrepo',
91
+ 'chef_branch' => 'master',
92
+ 'initkey' => 'FAKEKEY'
93
+ }))
94
+ end
95
+
96
+ it "should get the runlist for a node from the role" do
97
+ DH.save_role_data("role", chef_runlist: ["recipe[myrecipe]"].to_json)
98
+ DH.addserver(instid, data, nil)
99
+ role = DH.get_role_data("role")
100
+ expect(role).to eq({"chef_runlist"=> ["recipe[myrecipe]"].to_json,
101
+ "apps" => [],
102
+ "amis" => {}})
103
+ server = DH.get_server_data(instid)
104
+ expect(server).to eq(data.merge("instance" => instid,
105
+ "chef_runlist" => ["recipe[myrecipe]"],
106
+ "chef_repo" => "myrepo",
107
+ "chef_branch" => "master" ))
108
+ end
109
+
110
+ it "shoud get the ami for a node from the role" do
111
+ DH.save_role_data("role", ami: 'ami-1234567')
112
+ DH.addserver(instid, data, nil)
113
+ role = DH.get_role_data("role")
114
+ expect(role).to eq({'ami' => 'ami-1234567',
115
+ "apps" => [],
116
+ "amis" => {}})
117
+ end
118
+ end
@@ -0,0 +1,25 @@
1
+ ENV['RACK_ENV'] = 'test'
2
+ if ENV['COVERAGE']
3
+ require 'simplecov'
4
+ SimpleCov.start do
5
+ add_filter '/test/'
6
+ add_group 'helpers', 'lib/helpers'
7
+ end
8
+ end
9
+
10
+ libpath = File.realpath(File.join(File.dirname(__FILE__), "..", "lib"))
11
+ require 'rspec'
12
+ require 'rack/test'
13
+ require 'fakeredis/rspec'
14
+ require "#{libpath}/app.rb"
15
+
16
+ RSpec.configure do |conf|
17
+ conf.include Rack::Test::Methods
18
+ def app
19
+ GaptoolServer
20
+ end
21
+ end
22
+
23
+ DH = Gaptool::Data
24
+
25
+ $redis = Redis.new
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gaptool-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.19
4
+ version: 0.6.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Bailey
8
8
  - Francesco Laurita
9
+ - Giacomo Bagnoli
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2014-12-05 00:00:00.000000000 Z
13
+ date: 2014-10-14 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: sinatra
@@ -26,19 +27,33 @@ dependencies:
26
27
  - !ruby/object:Gem::Version
27
28
  version: '1.4'
28
29
  - !ruby/object:Gem::Dependency
29
- name: thin
30
+ name: sinatra-contrib
30
31
  requirement: !ruby/object:Gem::Requirement
31
32
  requirements:
32
33
  - - "~>"
33
34
  - !ruby/object:Gem::Version
34
- version: '1.5'
35
+ version: '1.4'
35
36
  type: :runtime
36
37
  prerelease: false
37
38
  version_requirements: !ruby/object:Gem::Requirement
38
39
  requirements:
39
40
  - - "~>"
40
41
  - !ruby/object:Gem::Version
41
- version: '1.5'
42
+ version: '1.4'
43
+ - !ruby/object:Gem::Dependency
44
+ name: unicorn
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '4.8'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '4.8'
42
57
  - !ruby/object:Gem::Dependency
43
58
  name: redis
44
59
  requirement: !ruby/object:Gem::Requirement
@@ -109,31 +124,129 @@ dependencies:
109
124
  - - "~>"
110
125
  - !ruby/object:Gem::Version
111
126
  version: '4.1'
127
+ - !ruby/object:Gem::Dependency
128
+ name: racksh
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '1.0'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: '1.0'
141
+ - !ruby/object:Gem::Dependency
142
+ name: pry
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - "~>"
146
+ - !ruby/object:Gem::Version
147
+ version: '0.10'
148
+ type: :runtime
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - "~>"
153
+ - !ruby/object:Gem::Version
154
+ version: '0.10'
155
+ - !ruby/object:Gem::Dependency
156
+ name: rspec
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - "~>"
160
+ - !ruby/object:Gem::Version
161
+ version: '3.1'
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - "~>"
167
+ - !ruby/object:Gem::Version
168
+ version: '3.1'
169
+ - !ruby/object:Gem::Dependency
170
+ name: rspec-mocks
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: '3.1'
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: '3.1'
183
+ - !ruby/object:Gem::Dependency
184
+ name: fakeredis
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
189
+ version: '0.5'
190
+ type: :development
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - "~>"
195
+ - !ruby/object:Gem::Version
196
+ version: '0.5'
197
+ - !ruby/object:Gem::Dependency
198
+ name: simplecov
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - "~>"
202
+ - !ruby/object:Gem::Version
203
+ version: '0.9'
204
+ type: :development
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - "~>"
209
+ - !ruby/object:Gem::Version
210
+ version: '0.9'
112
211
  description: gaptool-server for managing cloud resources
113
212
  email: ops@gild.com
114
213
  executables:
115
214
  - gaptool-server
215
+ - gaptool-shell
216
+ - gaptool_server_migrate_0.5-0.6
116
217
  extensions: []
117
218
  extra_rdoc_files:
118
219
  - LICENSE.txt
119
220
  - README.rdoc
120
221
  - VERSION
121
222
  files:
223
+ - Gemfile
122
224
  - LICENSE.txt
123
225
  - README.rdoc
226
+ - Rakefile
124
227
  - VERSION
125
228
  - bin/gaptool-server
229
+ - bin/gaptool-shell
230
+ - bin/gaptool_server_migrate_0.5-0.6
126
231
  - config.ru
127
232
  - lib/app.rb
128
- - lib/helpers/gaptool-base.rb
233
+ - lib/exceptions.rb
234
+ - lib/helpers/data.rb
235
+ - lib/helpers/ec2.rb
129
236
  - lib/helpers/init.rb
237
+ - lib/helpers/redis.rb
130
238
  - lib/helpers/rehash.rb
131
- - lib/public/css/common.css
132
- - lib/routes/init.rb
133
- - lib/routes/main.rb
134
- - lib/routes/rehash.rb
239
+ - lib/routes.rb
135
240
  - lib/views/init.erb
136
- homepage: http://github.com/mattbailey/gaptool-server
241
+ - tasks/app.rb
242
+ - tasks/docker.rb
243
+ - tasks/gem.rb
244
+ - tasks/user.rb
245
+ - test/api_test.rb
246
+ - test/base_test.rb
247
+ - test/data_test.rb
248
+ - test/test_helper.rb
249
+ homepage: http://github.com/gild/gaptool-server
137
250
  licenses:
138
251
  - MIT
139
252
  metadata: {}
@@ -143,9 +256,9 @@ require_paths:
143
256
  - lib
144
257
  required_ruby_version: !ruby/object:Gem::Requirement
145
258
  requirements:
146
- - - ">="
259
+ - - "~>"
147
260
  - !ruby/object:Gem::Version
148
- version: '0'
261
+ version: '2.1'
149
262
  required_rubygems_version: !ruby/object:Gem::Requirement
150
263
  requirements:
151
264
  - - ">="
@@ -153,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
266
  version: '0'
154
267
  requirements: []
155
268
  rubyforge_project:
156
- rubygems_version: 2.4.3
269
+ rubygems_version: 2.2.2
157
270
  signing_key:
158
271
  specification_version: 4
159
272
  summary: gaptool-server for managing cloud resources
@@ -1,38 +0,0 @@
1
- # encoding: utf-8
2
- module GaptoolBaseHelpers
3
- def hash2redis(key, hash)
4
- hash.keys.each do |hkey|
5
- $redis.hset key, hkey, hash[hkey]
6
- end
7
- end
8
-
9
- def putkey(host)
10
- @key = OpenSSL::PKey::RSA.new 2048
11
- @pubkey = "#{@key.ssh_type} #{[@key.to_blob].pack('m0')} GAPTOOL_GENERATED_KEY"
12
- ENV['SSH_AUTH_SOCK'] = ''
13
- Net::SSH.start(host, 'admin', :key_data => [$redis.hget('config', 'gaptoolkey')], :config => false, :keys_only => true, :paranoid => false) do |ssh|
14
- ssh.exec! "grep -v GAPTOOL_GENERATED_KEY ~/.ssh/authorized_keys > /tmp/pubkeys"
15
- ssh.exec! "cat /tmp/pubkeys > ~/.ssh/authorized_keys"
16
- ssh.exec! "rm /tmp/pubkeys"
17
- ssh.exec! "echo #{@pubkey} >> ~/.ssh/authorized_keys"
18
- end
19
- return @key.to_pem
20
- end
21
-
22
- def gt_securitygroup(role, environment, zone, groupname=nil)
23
- AWS.config(:access_key_id => $redis.hget('config', 'aws_id'), :secret_access_key => $redis.hget('config', 'aws_secret'), :ec2_endpoint => "ec2.#{zone.chop}.amazonaws.com")
24
- @ec2 = AWS::EC2.new
25
- groupname = groupname || "#{role}-#{environment}"
26
- default_list = [ 22 ]
27
- @ec2.security_groups.each do |group|
28
- if group.name == groupname
29
- return group.id
30
- end
31
- end
32
- internet = ['0.0.0.0/0']
33
- sg = @ec2.security_groups.create(groupname)
34
- sg.authorize_ingress :tcp, 22, *internet
35
- return sg.id
36
- end
37
-
38
- end
@@ -1,4 +0,0 @@
1
- html, body { background:#eee; margin:0; padding:0; color:#000 }
2
- h1,h2,h3,h4,h5,h6 { font-family:sans-serif; border-bottom:1px solid #aaa; margin:2em 0 0.5em 0 }
3
- h1#title { background:#333; margin-top:0; color:#ccc; padding:0.1em 0.5em; font-size:105% }
4
- #content { margin:1em 2em }
data/lib/routes/init.rb DELETED
@@ -1,3 +0,0 @@
1
- # encoding: utf-8
2
- require_relative 'main'
3
- require_relative 'rehash'