gaptool-server 0.7.4 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +19 -21
- data/VERSION +1 -1
- data/bin/gaptool-server +2 -2
- data/bin/gaptool-shell +2 -2
- data/config.ru +3 -4
- data/lib/app.rb +76 -66
- data/lib/exceptions.rb +4 -4
- data/lib/routes.rb +212 -203
- data/tasks/app.rb +12 -12
- data/tasks/config.rb +8 -8
- data/tasks/docker.rb +19 -19
- data/tasks/ec2.rb +14 -16
- data/tasks/gem.rb +7 -8
- data/tasks/role.rb +19 -19
- data/tasks/server.rb +7 -7
- data/tasks/user.rb +9 -9
- data/test/api_test.rb +212 -146
- data/test/base_test.rb +5 -5
- data/test/data_test.rb +56 -75
- data/test/test_helper.rb +11 -9
- metadata +3 -3
data/tasks/ec2.rb
CHANGED
@@ -1,42 +1,41 @@
|
|
1
1
|
namespace :ec2 do
|
2
|
-
|
3
|
-
|
4
|
-
task :retag do |t|
|
2
|
+
desc 'Tag all (untagged) instances with role and environment'
|
3
|
+
task :retag do |_t|
|
5
4
|
EC2.retag
|
6
5
|
end
|
7
6
|
|
8
|
-
desc
|
9
|
-
task :rehash do |
|
7
|
+
desc 'Rehash instances'
|
8
|
+
task :rehash do |_t|
|
10
9
|
EC2.rehash
|
11
10
|
end
|
12
11
|
|
13
|
-
desc
|
14
|
-
task :rehash_attr_all, [:property] do |
|
12
|
+
desc 'Rehash single attribute of all instances'
|
13
|
+
task :rehash_attr_all, [:property] do |_t, args|
|
15
14
|
if args[:property].nil?
|
16
|
-
puts
|
15
|
+
puts 'Missing property'
|
17
16
|
return 1
|
18
17
|
end
|
19
18
|
EC2.rehash_property(args[:property])
|
20
19
|
end
|
21
20
|
|
22
|
-
desc
|
23
|
-
task :rehash_attrs_for, [:instance] do |
|
21
|
+
desc 'Rehash ec2 attributes for a single instance'
|
22
|
+
task :rehash_attrs_for, [:instance] do |_t, args|
|
24
23
|
if args[:instance].nil?
|
25
|
-
puts
|
24
|
+
puts 'Missing instance'
|
26
25
|
return 1
|
27
26
|
end
|
28
27
|
res = EC2.rehash_properties_for_instance(args[:instance])
|
29
28
|
return 1 unless res
|
30
29
|
end
|
31
30
|
|
32
|
-
desc
|
33
|
-
task :rehash_attr_for, [:instance, :property] do |
|
31
|
+
desc 'Rehash a single property for an instance'
|
32
|
+
task :rehash_attr_for, [:instance, :property] do |_t, args|
|
34
33
|
if args[:instance].nil?
|
35
|
-
puts
|
34
|
+
puts 'Missing instance'
|
36
35
|
return 1
|
37
36
|
end
|
38
37
|
if args[:property].nil?
|
39
|
-
puts
|
38
|
+
puts 'Missing property'
|
40
39
|
return 1
|
41
40
|
end
|
42
41
|
res = EC2.rehash_property_for_instance(args[:property], args[:instance])
|
@@ -46,5 +45,4 @@ namespace :ec2 do
|
|
46
45
|
return 1
|
47
46
|
end
|
48
47
|
end
|
49
|
-
|
50
48
|
end
|
data/tasks/gem.rb
CHANGED
@@ -1,21 +1,20 @@
|
|
1
|
-
unless File.
|
1
|
+
unless File.exist?('/.dockerenv')
|
2
2
|
namespace :gem do
|
3
|
-
|
4
|
-
|
5
|
-
task :build => :clean do
|
3
|
+
desc 'Build the gem'
|
4
|
+
task build: :clean do
|
6
5
|
sys(%w(gem build gaptool-server.gemspec))
|
7
6
|
end
|
8
7
|
|
9
|
-
desc
|
8
|
+
desc 'Clean built file'
|
10
9
|
task :clean do
|
11
|
-
Dir.glob(
|
10
|
+
Dir.glob('*.gem') do |f|
|
12
11
|
puts " * #{f}"
|
13
12
|
File.unlink(f)
|
14
13
|
end
|
15
14
|
end
|
16
15
|
|
17
|
-
desc
|
18
|
-
task :
|
16
|
+
desc 'Push'
|
17
|
+
task push: :build do
|
19
18
|
version = File.read('VERSION').strip
|
20
19
|
sys(%W(gem push gaptool-server-#{version}.gem))
|
21
20
|
end
|
data/tasks/role.rb
CHANGED
@@ -1,35 +1,35 @@
|
|
1
1
|
require 'pp'
|
2
2
|
|
3
3
|
namespace :role do
|
4
|
-
desc
|
5
|
-
task :set_sg, [:role, :environment, :security_group] do |
|
6
|
-
abort(
|
4
|
+
desc 'Set security group for a role'
|
5
|
+
task :set_sg, [:role, :environment, :security_group] do |_t, args|
|
6
|
+
abort('Missing parameters') if args[:role].nil? || args[:environment].nil? || args[:role].empty? || args[:environment].empty? || args[:security_group].nil? || args[:security_group].empty?
|
7
7
|
role = DH.get_role_data(args[:role], args[:environment])
|
8
8
|
role['sg'].merge!(args[:environment] => args[:security_group])
|
9
9
|
DH.save_role_data(args[:role], role)
|
10
10
|
end
|
11
11
|
|
12
|
-
desc
|
13
|
-
task :set_amis, [:role, :region, :ami_id] do |
|
14
|
-
abort(
|
12
|
+
desc 'Set ami for role'
|
13
|
+
task :set_amis, [:role, :region, :ami_id] do |_t, args|
|
14
|
+
abort('Missing parameters') if args[:role].nil? || args[:region].nil? || args[:role].empty? || args[:region].empty? || args[:ami_id].nil? || args[:ami_id].empty?
|
15
15
|
role = DH.get_role_data(args[:role])
|
16
16
|
role['amis'].merge!(args[:region], args[:ami_id])
|
17
17
|
DH.save_role_data(args[:role], role)
|
18
18
|
end
|
19
19
|
|
20
20
|
desc "Set runlist for role; Runlist must be a comma separated string of recipes and roles. e.g. 'recipe[recipe],role[otherrole]'"
|
21
|
-
task :set_chef_runlist, [:role, :chef_runlist] do |
|
22
|
-
abort(
|
21
|
+
task :set_chef_runlist, [:role, :chef_runlist] do |_t, args|
|
22
|
+
abort('Missing parameters') if args[:role].nil? || args[:chef_runlist].nil? || args[:role].empty? || args[:chef_runlist].empty?
|
23
23
|
role = DH.get_role_data(args[:role])
|
24
|
-
rl = args[:chef_runlist].strip.split(
|
24
|
+
rl = args[:chef_runlist].strip.split(',').map(&:strip).to_json
|
25
25
|
role['chef_runlist'] = rl
|
26
26
|
DH.save_role_data(args[:role], role)
|
27
27
|
puts "Added runlist for role #{role}"
|
28
28
|
end
|
29
29
|
|
30
|
-
desc
|
31
|
-
task :remove, [:role] do |
|
32
|
-
abort(
|
30
|
+
desc 'Remove a role, if there are no instances running'
|
31
|
+
task :remove, [:role] do |_t, args|
|
32
|
+
abort('Missing parameters') if args[:role].nil? || args[:role].empty?
|
33
33
|
res = DH.remove_role(args[:role])
|
34
34
|
if res == true
|
35
35
|
puts "Removed role #{args[:role]}"
|
@@ -39,15 +39,15 @@ namespace :role do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
desc
|
43
|
-
task :role, [:environment] do |
|
42
|
+
desc 'List all roles (environment is optional but needed to display apps)'
|
43
|
+
task :role, [:environment] do |_t, args|
|
44
44
|
env = args[:environment]
|
45
|
-
puts
|
45
|
+
puts 'Roles:'
|
46
46
|
DH.roles(env).each do |role, info|
|
47
47
|
puts "* #{role}:"
|
48
|
-
puts " - apps: #{info['apps'].join(
|
49
|
-
puts " - sg: #{info['sg'].values.join(
|
50
|
-
puts " - amis: #{info['amis'].map{|k,v| "#{v} (#{k})"}.join(
|
51
|
-
puts " - runlist: #{info['chef_runlist'].to_a.join(
|
48
|
+
puts " - apps: #{info['apps'].join(', ')}"
|
49
|
+
puts " - sg: #{info['sg'].values.join(', ')}"
|
50
|
+
puts " - amis: #{info['amis'].map { |k, v| "#{v} (#{k})" }.join(', ')}"
|
51
|
+
puts " - runlist: #{info['chef_runlist'].to_a.join(', ')}"
|
52
52
|
end
|
53
53
|
end
|
data/tasks/server.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
namespace :server do
|
2
|
-
desc
|
3
|
-
task :set_terminable, [:instance, :value] do |
|
2
|
+
desc 'Set terminable flag to true/false for the instance :instance'
|
3
|
+
task :set_terminable, [:instance, :value] do |_t, args|
|
4
4
|
if args[:instance].nil? || args[:value].nil?
|
5
|
-
puts
|
5
|
+
puts 'You must specify instance and true/false'
|
6
6
|
return
|
7
7
|
end
|
8
|
-
DH.set_server_data_attr args[:instance], 'terminable', (args[:value] ==
|
8
|
+
DH.set_server_data_attr args[:instance], 'terminable', (args[:value] == 'true' ? 'true' : 'false')
|
9
9
|
puts DH.get_server_data args[:instance]
|
10
10
|
end
|
11
11
|
|
12
|
-
desc
|
13
|
-
task :rm, [:instance] do |
|
12
|
+
desc 'Remove a server from the gaptool database (no actions on AWS)'
|
13
|
+
task :rm, [:instance] do |_t, args|
|
14
14
|
if args[:instance].nil?
|
15
|
-
puts
|
15
|
+
puts 'You must select an instance'
|
16
16
|
return 1
|
17
17
|
end
|
18
18
|
DH.rmserver(args[:instance])
|
data/tasks/user.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
namespace :user do
|
2
|
-
desc
|
3
|
-
task :create, [:username] do |
|
2
|
+
desc 'Add a new user. rake user:create <username>'
|
3
|
+
task :create, [:username] do |_t, args|
|
4
4
|
puts DH.useradd(args[:username])[:key]
|
5
5
|
end
|
6
6
|
|
7
|
-
desc
|
8
|
-
task :rename, [:oldname, :newname] do |
|
7
|
+
desc 'Rename a user. rake user:rename <oldname> <newname>'
|
8
|
+
task :rename, [:oldname, :newname] do |_t, args|
|
9
9
|
user = DH.user(args[:oldname])
|
10
10
|
abort("Unknown user #{args[:oldname]}") if user.nil?
|
11
11
|
DH.userdel(user[:username])
|
@@ -13,20 +13,20 @@ namespace :user do
|
|
13
13
|
puts "User #{args[:oldname]} renamed to #{args[:newname]}"
|
14
14
|
end
|
15
15
|
|
16
|
-
desc
|
17
|
-
task :delete, [:username] do |
|
16
|
+
desc 'Delete a user. rake user:delete <username>'
|
17
|
+
task :delete, [:username] do |_t, args|
|
18
18
|
DH.userdel(args[:username])
|
19
19
|
end
|
20
20
|
|
21
|
-
desc
|
22
|
-
task :setkey, [:username, :key] do |
|
21
|
+
desc 'Set user key. rake user:setkey <username> <key>'
|
22
|
+
task :setkey, [:username, :key] do |_t, args|
|
23
23
|
user = DH.user(args[:username])
|
24
24
|
abort("Unknown user #{args[:username]}") if user.nil?
|
25
25
|
puts DH.useradd(args[:username], args[:key])
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
desc
|
29
|
+
desc 'List users'
|
30
30
|
task :user do
|
31
31
|
puts DH.users.keys.sort.join("\n")
|
32
32
|
end
|