gaptool-server 0.7.4 → 0.8.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/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
|