projects GET params

This commit is contained in:
amartynov 2014-08-26 10:45:47 +04:00
parent 324d4fd581
commit 8c4453ef39
5 changed files with 25 additions and 13 deletions

View File

@ -50,7 +50,7 @@ module Output
def json
JSON.pretty_generate(case ARGV[1]
when "list"
@list
@list.map {|l| l["name"]}
when "show"
@show
when "servers"
@ -63,7 +63,7 @@ module Output
private
def create_list list
abort(I18n.t("output.not_found.project.list")) if list.empty?
rows = list.map {|l| [l]}
rows = list.map {|l| [l["name"]]}
headers = [ I18n.t("output.table_header.id") ]
return headers, rows
end

View File

@ -1,3 +1,3 @@
module DevopsClient
VERSION = "2.1.32"
VERSION = "2.1.33"
end

View File

@ -15,16 +15,21 @@ class Project < MongoModel
MULTI_TYPE = "multi"
def self.fields
["deploy_envs", "type"]
end
def initialize p={}
self.id = p["name"]
raise InvalidRecord.new "No deploy envirenments for project #{self.id}" if p["deploy_envs"].nil? or p["deploy_envs"].empty?
self.deploy_envs = []
#raise InvalidRecord.new "No deploy envirenments for project #{self.id}" if p["deploy_envs"].nil? or p["deploy_envs"].empty?
self.type = p["type"]
env_class = ( self.multi? ? DeployEnvMulti : DeployEnv )
p["deploy_envs"].each do |e|
env = env_class.create(e)
self.deploy_envs.push env
unless p["deploy_envs"].nil?
self.deploy_envs = []
p["deploy_envs"].each do |e|
env = env_class.create(e)
self.deploy_envs.push env
end
end
end
@ -109,7 +114,8 @@ class Project < MongoModel
end
def to_hash_without_id
h = {"deploy_envs" => self.deploy_envs.map {|e| e.to_hash}}
h = {}
h["deploy_envs"] = self.deploy_envs.map {|e| e.to_hash} unless self.deploy_envs.nil?
if self.multi?
h["type"] = MULTI_TYPE
end

View File

@ -119,7 +119,7 @@ class MongoConnector
p.to_a.map {|bp| Project.create_from_bson bp}
end
def projects list=nil, type=nil
def projects list=nil, type=nil, fields=[]
q = (list.nil? ? {} : {"_id" => {"$in" => list}})
case type
when :multi
@ -127,7 +127,7 @@ class MongoConnector
#else
# q["type"] = {"$exists" => false}
end
res = @projects.find(create_query(q))
res = @projects.find(create_query(q), :fields => fields)
a = res.to_a
a.map {|bp| Project.create_from_bson bp}
end

View File

@ -41,6 +41,8 @@ module Version2_0
# - method : GET
# - headers :
# - Accept: application/json
# - params :
# - deploy_envs, type
#
# * *Returns* :
# [
@ -50,7 +52,11 @@ module Version2_0
get "/projects" do
check_headers :accept
check_privileges("project", "r")
json BaseRoutes.mongo.projects.map {|p| p.id}
fields = []
Project.fields.each do |k|
fields.push k if params.key?(k)
end
json BaseRoutes.mongo.projects(nil, nil, fields).map {|p| p.to_hash}
end
# Get project by id