diff --git a/devops-service/db/mongo/models/server.rb b/devops-service/db/mongo/models/server.rb index ad55a4d..a2d31a7 100644 --- a/devops-service/db/mongo/models/server.rb +++ b/devops-service/db/mongo/models/server.rb @@ -18,6 +18,10 @@ class Server < MongoModel :chef_node_name => {: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 self.static = false end @@ -41,7 +45,7 @@ class Server < MongoModel "static" => self.static, "key" => self.key, "reserved_by" => self.reserved_by - } + }.delete_if{|k,v| v.nil?} end def to_list_hash @@ -63,7 +67,7 @@ class Server < MongoModel server.private_ip = s["private_ip"] server.created_at = s["created_at"] server.created_by = s["created_by"] - server.static = s["static"] || false + server.static = s["static"] server.key = s["key"] server.reserved_by = s["reserved_by"] server diff --git a/devops-service/db/mongo/mongo_connector.rb b/devops-service/db/mongo/mongo_connector.rb index 2ee1794..2879678 100644 --- a/devops-service/db/mongo/mongo_connector.rb +++ b/devops-service/db/mongo/mongo_connector.rb @@ -191,16 +191,19 @@ class MongoConnector end end - def servers_find q - @servers.find(create_query(q)).to_a.map{|bs| Server.create_from_bson bs} + def servers_find q, fields + @servers.find(create_query(q), :fields => fields).to_a.map{|bs| Server.create_from_bson bs} end - def servers p=nil, env=nil, names=nil + def servers p=nil, env=nil, names=nil, fields=[] q = {} q["project"] = p unless p.nil? or p.empty? q["deploy_env"] = env unless env.nil? or env.empty? 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 def servers_by_names names diff --git a/devops-service/routes/v2.0/server.rb b/devops-service/routes/v2.0/server.rb index 7b4ec72..1bc6109 100644 --- a/devops-service/routes/v2.0/server.rb +++ b/devops-service/routes/v2.0/server.rb @@ -57,6 +57,8 @@ module Version2_0 # - method : GET # - headers : # - Accept: application/json + # - params : + # - project, deploy_env, provider, remote_user, private_ip, public_ip, created_at, created_by, static, key, reserved_by # # * *Returns* : # [ @@ -68,7 +70,11 @@ module Version2_0 get "/servers" do check_headers :accept 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 # Get chef nodes list