diff --git a/devops-client/lib/devops-client/output/project.rb b/devops-client/lib/devops-client/output/project.rb index 2acfb4c..e6b060b 100644 --- a/devops-client/lib/devops-client/output/project.rb +++ b/devops-client/lib/devops-client/output/project.rb @@ -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 diff --git a/devops-client/lib/devops-client/version.rb b/devops-client/lib/devops-client/version.rb index b8abdc4..c68adb3 100644 --- a/devops-client/lib/devops-client/version.rb +++ b/devops-client/lib/devops-client/version.rb @@ -1,3 +1,3 @@ module DevopsClient - VERSION = "2.1.32" + VERSION = "2.1.33" end diff --git a/devops-service/db/mongo/models/project.rb b/devops-service/db/mongo/models/project.rb index aca9de1..416a267 100644 --- a/devops-service/db/mongo/models/project.rb +++ b/devops-service/db/mongo/models/project.rb @@ -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 diff --git a/devops-service/db/mongo/mongo_connector.rb b/devops-service/db/mongo/mongo_connector.rb index 2879678..0ac21c7 100644 --- a/devops-service/db/mongo/mongo_connector.rb +++ b/devops-service/db/mongo/mongo_connector.rb @@ -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 diff --git a/devops-service/routes/v2.0/project.rb b/devops-service/routes/v2.0/project.rb index ce32a8f..dd826c2 100644 --- a/devops-service/routes/v2.0/project.rb +++ b/devops-service/routes/v2.0/project.rb @@ -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