lib/routes.rb in gaptool-server-0.6.6 vs lib/routes.rb in gaptool-server-0.7.0
- old
+ new
@@ -65,11 +65,11 @@
)
end
end
# Add host tag
- data.merge(instance.reject { |k, v| [:id, :instance].include?(k) })
+ data.merge!(Hash[instance.reject { |k, v| [:id, :instance].include?(k) }.map {|k, v| [k.to_s, v]}])
Gaptool::Data::addserver(instance[:id], data, secret)
json({instance: instance[:id],
ami: image_id,
role: data['role'],
hostname: instance[:hostname],
@@ -134,28 +134,41 @@
json: jdata
}
end
get '/hosts' do
- servers = Gaptool::Data::servers.map do |inst|
+ filter = !!params['hidden'] ? Proc.new {|s| !s['registered']} : Proc.new { |s| !s['registered'] && !s['hidden'] == true}
+ json(Gaptool::Data::servers.map do |inst|
Gaptool::Data::get_server_data inst
- end.select{ |s| !s['registered']}
- json servers
+ end.select(&filter))
end
get '/apps' do
- out = {}
- Gaptool::Data.apps.each do |app|
- out["app:#{app}"] = Gaptool::Data::get_app_data(app)
+ json(Hash[Gaptool::Data.apps.map {|a| ["app:#{a}", Gaptool::Data::get_app_data(a)]}])
+ end
+
+ get '/app/:app/:environment/hosts' do
+ app_data = Gaptool::Data::get_app_data(params[:app])
+ unless app_data
+ status 404
+ error_response "app '#{params[:apps]}' not found"
end
- json out
+
+ role = app_data[params[:environment]]
+ list = Gaptool::Data::servers_in_role_env role, params[:environment]
+ filter = !!params['hidden'] ? Proc.new {|s| false } : Proc.new { |s| s['hidden']}
+ json(list.map do |inst|
+ data = Gaptool::Data::get_server_data(inst)
+ Gaptool::Data::stringify_apps(data)
+ end.delete_if(&filter))
end
get '/hosts/:role' do
+ filter = !!params['hidden'] ? Proc.new {|s| !s['registered']} : Proc.new { |s| !s['registered'] && !s['hidden'] == true}
servers = Gaptool::Data::servers_in_role(params[:role]).map do |inst|
- Gaptool::Data::get_server_data inst
- end.select{ |s| !s['registered'] }
+ Gaptool::Data::get_server_data(inst)
+ end.select(&filter)
json servers
end
get '/instance/:id' do
rs = Gaptool::Data::get_server_data(params[:id])
@@ -165,18 +178,40 @@
else
json Gaptool::Data::stringify_apps(rs)
end
end
+ patch '/instance/:id' do
+ rs = Gaptool::Data::get_server_data(params[:id])
+ if rs.nil?
+ status 404
+ error_response "instance with id '#{params[:id]}' not found"
+ else
+ data = JSON.parse(request.body.read)
+ if !data['hidden'].nil?
+ hidden = !!data['hidden']
+ rs["hidden"] = hidden if hidden == true
+ rs.delete("hidden") if hidden == false
+ end
+ if !data['terminable'].nil?
+ rs["terminable"] = !!data['terminable']
+ end
+ Gaptool::Data::save_server_data params[:id], rs
+ json Gaptool::Data::stringify_apps(rs)
+ end
+ 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
+ filter = !!params['hidden'] ? Proc.new {|s| false } : Proc.new { |s| s['hidden']}
servers = list.map do |inst|
- Gaptool::Data::stringify_apps(Gaptool::Data::get_server_data(inst))
- end
+ data = Gaptool::Data::get_server_data(inst)
+ Gaptool::Data::stringify_apps(data)
+ end.delete_if(&filter)
json servers
end
get '/host/:role/:environment/:instance' do