From 947c7cdac4b35091b70c6794476afc6f3501df3c Mon Sep 17 00:00:00 2001 From: Anton Martynov Date: Fri, 18 Sep 2015 10:32:50 +0300 Subject: [PATCH] #731: fixed --- devops-service/app/api2/handlers/project.rb | 43 +++++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/devops-service/app/api2/handlers/project.rb b/devops-service/app/api2/handlers/project.rb index 7a33657..f69e568 100644 --- a/devops-service/app/api2/handlers/project.rb +++ b/devops-service/app/api2/handlers/project.rb @@ -165,42 +165,56 @@ module Devops end def deploy_project_stream out, id + # check if project exist + project = Devops::Db.connector.project(id) deploy_env, servers = parser.deploy keys = {} - dbserver = servers(id, deploy_env, servers) + dbserver = Devops::Db.connector.servers(id, deploy_env, servers, true) out << (dbservers.empty? ? "No reserved servers to deploy\n" : "Deploy servers: '#{dbservers.map{|s| s.chef_node_name}.join("', '")}'\n") status = [] - servers.each do |s| - project = begin + deploy_info_buf = {} + dbservers.each do |s| + begin Devops::Db.connector.check_project_auth s.project, s.deploy_env, parser.current_user rescue InvalidPrivileges, RecordNotFound => e out << e.message + "\n" status.push 2 next end - deploy_info = project.deploy_info(s.deploy_env, nil) + deploy_env_model = project.deploy_env(s.deploy_env) + deploy_info = if deploy_info_buf[s.deploy_env] + deploy_info_buf[s.deploy_env] + else + # мы не можем указать один build_number для всех окружений, поэтому nil + deploy_info_buf[s.deploy_env] = project.deploy_info(deploy_env_model, nil) + end status.push(Devops::Executor::ServerExecutor.new(s, out).deploy_server(deploy_info)) end status end def deploy_project id + # check if project exist + project_model = Devops::Db.connector.project(id) deploy_env, servers = parser.deploy files = [] - servers(id, deploy_env, servers).each do |s| + dbservers = Devops::Db.connector.servers(id, deploy_env, servers, true) + out << (dbservers.empty? ? "No reserved servers to deploy\n" : "Deploy servers: '#{dbservers.map{|s| s.chef_node_name}.join("', '")}'\n") + deploy_info_buf = {} + dbservers.each do |s| begin Devops::Db.connector.check_project_auth s.project, s.deploy_env, parser.current_user rescue InvalidPrivileges, RecordNotFound => e next end - project_model = project(s.project) - deploy_env_model = project_model.deploy_env(deploy_env) - - puts '!!! WARNING !!!' - puts 'build_number is set to empty string' - build_number = '' - deploy_info = project_model.deploy_info(deploy_env_model, build_number) + deploy_env_model = project_model.deploy_env(s.deploy_env) + deploy_info = if deploy_info_buf[s.deploy_env] + deploy_info_buf[s.deploy_env] + else + # мы не можем указать один build_number для всех окружений, поэтому nil + deploy_info_buf[s.deploy_env] = project_model.deploy_info(deploy_env_model, nil) + end uri = Worker.start_async(DeployWorker, @request, server_attrs: s.to_hash, @@ -213,11 +227,6 @@ module Devops files end - def servers project_id, deploy_env, servers - project = Devops::Db.connector.project(project_id) - dbservers = Devops::Db.connector.servers(project_id, deploy_env, servers, true) - end - def archive_project id project = Devops::Db.connector.project(id) Devops::Db.connector.archive_project(id)