lib/routes.rb in gaptool-server-0.6.0.beta1 vs lib/routes.rb in gaptool-server-0.6.0
- old
+ new
@@ -29,30 +29,34 @@
secret = SecureRandom.hex(12)
security_group = data['security_group'] || Gaptool::Data::get_role_data(data['role'])["security_group"]
sgid = Gaptool::EC2::get_or_create_securitygroup(data['role'], data['environment'], data['zone'], security_group)
image_id = data['ami'] || Gaptool::Data::get_ami_for_role(data['role'], data['zone'].chop)
data['terminable'] = data['terminable'].nil? ? true : !!data['terminable']
+ data['secret'] = secret
- id = Gaptool::EC2::create_ec2_instance(
+ instance = Gaptool::EC2::create_ec2_instance(
{
:image_id => image_id,
:availability_zone => data['zone'],
:instance_type => data['itype'],
:key_name => "gaptool",
:security_group_ids => sgid,
- :user_data => "#!/bin/bash\ncurl --silent -H 'X-GAPTOOL-USER: #{env['HTTP_X_GAPTOOL_USER']}' -H 'X-GAPTOOL-KEY: #{env['HTTP_X_GAPTOOL_KEY']}' #{$redis.hget('config', 'url')}/register -X PUT --data '#{data.to_json}' | bash"
+ :user_data => "#!/bin/bash\ncurl --silent -H 'X-GAPTOOL-USER: #{env['HTTP_X_GAPTOOL_USER']}' -H 'X-GAPTOOL-KEY: #{env['HTTP_X_GAPTOOL_KEY']}' #{Gaptool::Data.get_config('url')}/register -X PUT --data '#{data.to_json}' | bash"
}, {
role: data['role'],
env: data['environment'],
zone: data['zone']
}
)
# Add host tag
- Gaptool::Data::addserver(id, data, secret)
- json({instance: id,
+ data.merge(instance.reject { |k, v| k == :id })
+ Gaptool::Data::addserver(instance[:id], data, secret)
+ json({instance: instance[:id],
ami: image_id,
role: data['role'],
+ hostname: instance[:hostname],
+ launch_time: instance[:launch_time],
environment: data['environment'],
secret: secret,
terminable: data['terminable'],
security_group: sgid})
end
@@ -75,17 +79,19 @@
instance_id = Gaptool::Data::register_server data['role'], data['environment'], data['secret']
raise Forbidden, "Can't register instance: wrong secret or missing role/environment" unless instance_id
hostname = Gaptool::EC2::get_ec2_instance_data(data['zone'].chop, instance_id)[:hostname]
+ Gaptool::Data.set_server_data_attr(instance_id, "hostname", hostname)
host_data = Gaptool::Data::get_server_data instance_id, initkey: true, force_runlist: true
chef_repo = host_data['chef_repo']
chef_branch = host_data['chef_branch']
+ chef_environment = host_data['environment']
# FIXME: remove init key from redis
- initkey = host_data['init_key']
- run_list = host_data['chef_runlist'].to_json
+ initkey = Gaptool::Data::get_config("initkey")
+ run_list = host_data['chef_runlist']
jdata = {
'hostname' => hostname,
'recipe' => 'init',
'number' => instance_id,
@@ -102,55 +108,57 @@
erb :init, locals: {
initkey: initkey,
chef_branch: chef_branch,
chef_repo: chef_repo,
+ chef_environment: chef_environment,
+ chef_version: Gaptool::Data::ensure_config("chef_version", "11.16.4"),
json: jdata
}
end
get '/hosts' do
servers = Gaptool::Data::servers.map do |inst|
Gaptool::Data::get_server_data inst
- end
+ end.select{ |s| !s['registered']}
json servers
end
get '/apps' do
out = {}
Gaptool::Data.apps.each do |app|
- out[app] = Gaptool::Data::get_app_data(app)
+ out["app:#{app}"] = Gaptool::Data::get_app_data(app)
end
json out
end
get '/hosts/:role' do
servers = Gaptool::Data::servers_in_role(params[:role]).map do |inst|
Gaptool::Data::get_server_data inst
- end
+ end.select{ |s| !s['registered'] }
json servers
end
get '/instance/:id' do
- json Gaptool::Data::get_server_data(params[:id])
+ json Gaptool::Data::stringify_apps(Gaptool::Data::get_server_data(params[:id]))
end
get '/hosts/:role/:environment' do
if params[:role] == 'ALL'
list = Gaptool::Data::servers_in_env params[:environment]
else
list = Gaptool::Data::servers_in_role_env params[:role], params[:environment]
end
servers = list.map do |inst|
- Gaptool::Data::get_server_data inst
+ Gaptool::Data::stringify_apps(Gaptool::Data::get_server_data(inst))
end
json servers
end
get '/host/:role/:environment/:instance' do
- json Gaptool::Data::get_server_data params[:instance]
+ json Gaptool::Data::stringify_apps(Gaptool::Data::get_server_data(params[:instance]))
end
get '/ssh/:role/:environment/:instance' do
data = Gaptool::Data::get_server_data params[:instance]
host = data['hostname']
@@ -164,9 +172,9 @@
)).strip
json server_version: version, api: {v0: "/"}
end
post '/rehash' do
- json Gaptool::Rehash::rehash()
+ json Gaptool::EC2::rehash()
end
end