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