servers GET params

This commit is contained in:
amartynov 2014-08-26 10:09:30 +04:00
parent d9f0780554
commit 324d4fd581
3 changed files with 20 additions and 7 deletions

View File

@ -18,6 +18,10 @@ class Server < MongoModel
:chef_node_name => {:type => String, :empty => true}, :chef_node_name => {:type => String, :empty => true},
:reserved_by => {:type => String, :empty => true} :reserved_by => {:type => String, :empty => true}
def self.fields
["chef_node_name", "project", "deploy_env", "provider", "remote_user", "private_ip", "public_ip", "created_at", "created_by", "static", "key", "reserved_by"]
end
def initialize def initialize
self.static = false self.static = false
end end
@ -41,7 +45,7 @@ class Server < MongoModel
"static" => self.static, "static" => self.static,
"key" => self.key, "key" => self.key,
"reserved_by" => self.reserved_by "reserved_by" => self.reserved_by
} }.delete_if{|k,v| v.nil?}
end end
def to_list_hash def to_list_hash
@ -63,7 +67,7 @@ class Server < MongoModel
server.private_ip = s["private_ip"] server.private_ip = s["private_ip"]
server.created_at = s["created_at"] server.created_at = s["created_at"]
server.created_by = s["created_by"] server.created_by = s["created_by"]
server.static = s["static"] || false server.static = s["static"]
server.key = s["key"] server.key = s["key"]
server.reserved_by = s["reserved_by"] server.reserved_by = s["reserved_by"]
server server

View File

@ -191,16 +191,19 @@ class MongoConnector
end end
end end
def servers_find q def servers_find q, fields
@servers.find(create_query(q)).to_a.map{|bs| Server.create_from_bson bs} @servers.find(create_query(q), :fields => fields).to_a.map{|bs| Server.create_from_bson bs}
end end
def servers p=nil, env=nil, names=nil def servers p=nil, env=nil, names=nil, fields=[]
q = {} q = {}
q["project"] = p unless p.nil? or p.empty? q["project"] = p unless p.nil? or p.empty?
q["deploy_env"] = env unless env.nil? or env.empty? q["deploy_env"] = env unless env.nil? or env.empty?
q["chef_node_name"] = {"$in" => names} unless names.nil? or names.class != Array q["chef_node_name"] = {"$in" => names} unless names.nil? or names.class != Array
servers_find(q) ["_id", "chef_node_name"].each do |k|
fields.push(k) unless fields.include?(k)
end
servers_find(q, fields)
end end
def servers_by_names names def servers_by_names names

View File

@ -57,6 +57,8 @@ module Version2_0
# - method : GET # - method : GET
# - headers : # - headers :
# - Accept: application/json # - Accept: application/json
# - params :
# - project, deploy_env, provider, remote_user, private_ip, public_ip, created_at, created_by, static, key, reserved_by
# #
# * *Returns* : # * *Returns* :
# [ # [
@ -68,7 +70,11 @@ module Version2_0
get "/servers" do get "/servers" do
check_headers :accept check_headers :accept
check_privileges("server", "r") check_privileges("server", "r")
json BaseRoutes.mongo.servers.map {|s| s.to_list_hash} fields = []
Server.fields.each do |k|
fields.push k if params.key?(k)
end
json BaseRoutes.mongo.servers(nil, nil, nil, fields).map {|s| s.to_hash}
end end
# Get chef nodes list # Get chef nodes list