diff --git a/devops-service/db/mongo/mongo_connector.rb b/devops-service/db/mongo/mongo_connector.rb index 0ac21c7..5a94f3f 100644 --- a/devops-service/db/mongo/mongo_connector.rb +++ b/devops-service/db/mongo/mongo_connector.rb @@ -195,11 +195,12 @@ class MongoConnector @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, fields=[] + def servers p=nil, env=nil, names=nil, reserved=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 + q["reserved_by"] = {"$ne" => nil} unless reserved.nil? ["_id", "chef_node_name"].each do |k| fields.push(k) unless fields.include?(k) end diff --git a/devops-service/routes/v2.0/project.rb b/devops-service/routes/v2.0/project.rb index dd826c2..620a8fd 100644 --- a/devops-service/routes/v2.0/project.rb +++ b/devops-service/routes/v2.0/project.rb @@ -42,7 +42,7 @@ module Version2_0 # - headers : # - Accept: application/json # - params : - # - deploy_envs, type + # - fields - show server fields, available values: deploy_envs, type # # * *Returns* : # [ @@ -53,8 +53,10 @@ module Version2_0 check_headers :accept check_privileges("project", "r") fields = [] - Project.fields.each do |k| - fields.push k if params.key?(k) + if params.key?("fields") and params["fields"].is_a?(Array) + Project.fields.each do |k| + fields.push k if params["fields"].include?(k) + end end json BaseRoutes.mongo.projects(nil, nil, fields).map {|p| p.to_hash} end diff --git a/devops-service/routes/v2.0/server.rb b/devops-service/routes/v2.0/server.rb index 1bc6109..7ed6fc4 100644 --- a/devops-service/routes/v2.0/server.rb +++ b/devops-service/routes/v2.0/server.rb @@ -58,7 +58,7 @@ module Version2_0 # - headers : # - Accept: application/json # - params : - # - project, deploy_env, provider, remote_user, private_ip, public_ip, created_at, created_by, static, key, reserved_by + # - fields - show server fields, available values: project, deploy_env, provider, remote_user, private_ip, public_ip, created_at, created_by, static, key, reserved_by # # * *Returns* : # [ @@ -71,10 +71,13 @@ module Version2_0 check_headers :accept check_privileges("server", "r") fields = [] - Server.fields.each do |k| - fields.push k if params.key?(k) + if params.key?("fields") and params["fields"].is_a?(Array) + Server.fields.each do |k| + fields.push k if params["fields"].include?(k) + end end - json BaseRoutes.mongo.servers(nil, nil, nil, fields).map {|s| s.to_hash} + reserved = (params.key?("reserved") ? true : nil) + json BaseRoutes.mongo.servers(nil, nil, nil, reserved, fields).map {|s| s.to_hash} end # Get chef nodes list