From c7ea85c84cea4aa006b1ff717b47d95824089979 Mon Sep 17 00:00:00 2001 From: amartynov Date: Fri, 11 Sep 2015 12:22:58 +0300 Subject: [PATCH] #666: done --- devops-service/app/api2/handlers/deploy.rb | 4 ++++ devops-service/app/api2/parsers/deploy.rb | 2 ++ devops-service/app/api2/parsers/project.rb | 3 ++- devops-service/app/api2/routes/deploy.rb | 3 ++- devops-service/lib/executors/server_executor.rb | 4 ++++ 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/devops-service/app/api2/handlers/deploy.rb b/devops-service/app/api2/handlers/deploy.rb index d5e97a9..2e42e2f 100644 --- a/devops-service/app/api2/handlers/deploy.rb +++ b/devops-service/app/api2/handlers/deploy.rb @@ -18,6 +18,7 @@ module Devops body = parser.deploy names = body["names"] tags = body["tags"] || [] + run_list = body["run_list"] dir = DevopsConfig.config[:report_dir_v2] files = [] jid = nil @@ -33,6 +34,7 @@ module Devops end begin deploy_info = create_deploy_info(s, project, body["build_number"]) + deploy_info["run_list"] = run_list if run_list uri = Worker.start_async(DeployWorker, @request, server_attrs: s.to_hash, @@ -70,6 +72,7 @@ module Devops body = parser.deploy names = body["names"] tags = body["tags"] || [] + run_list = body["run_list"] status = [] owner = parser.current_user @deploy_info_buf = {} @@ -83,6 +86,7 @@ module Devops end begin deploy_info = create_deploy_info(s, project, body["build_number"]) + deploy_info["run_list"] = run_list if run_list res = Devops::Executor::ServerExecutor.new(s, out).deploy_server_with_tags(tags, deploy_info) status.push(res) rescue DeployInfoError => e diff --git a/devops-service/app/api2/parsers/deploy.rb b/devops-service/app/api2/parsers/deploy.rb index 708009a..74a92db 100644 --- a/devops-service/app/api2/parsers/deploy.rb +++ b/devops-service/app/api2/parsers/deploy.rb @@ -10,6 +10,8 @@ module Devops names = check_array(r["names"], "Parameter 'names' should be a not empty array of strings") tags = check_array(r["tags"], "Parameter 'tags' should be an array of strings", String, true) build_number = check_string(r["build_number"], "Parameter 'build_number' should be a not empty string", true) + rl = check_array(r["run_list"], "Parameter 'run_list' should be an array of string", String, true) + Validators::Helpers::RunList.new(rl).validate! unless rl.nil? r end diff --git a/devops-service/app/api2/parsers/project.rb b/devops-service/app/api2/parsers/project.rb index 60782f9..657282e 100644 --- a/devops-service/app/api2/parsers/project.rb +++ b/devops-service/app/api2/parsers/project.rb @@ -34,7 +34,8 @@ module Devops body = create_object_from_json_body check_string(body["name"], "Parameter 'name' must be a not empty string") check_array(body["deploy_envs"], "Parameter 'deploy_envs' must be a not empty array of objects", Hash) - # check_array(body["run_list"], "Parameter 'run_list' must be a not empty array of string", String, false, true) + rl = check_array(body["run_list"], "Parameter 'run_list' should be an array of string", String, true) + Validators::Helpers::RunList.new(rl).validate! unless rl.nil? Devops::Model::Project.new(body) end diff --git a/devops-service/app/api2/routes/deploy.rb b/devops-service/app/api2/routes/deploy.rb index 907ce4b..8302e35 100644 --- a/devops-service/app/api2/routes/deploy.rb +++ b/devops-service/app/api2/routes/deploy.rb @@ -16,7 +16,8 @@ module Devops # { # "names": [], -> array of servers names to run chef-client # "tags": [], -> array of tags to apply on each server before running chef-client - # "build_number": "" -> string, build number to deploy + # "build_number": "", -> string, build number to deploy + # "run_list": [], -> array of strings to set run_list for chef-client # } # # * *Returns* : text stream diff --git a/devops-service/lib/executors/server_executor.rb b/devops-service/lib/executors/server_executor.rb index 6175609..1a5022c 100644 --- a/devops-service/lib/executors/server_executor.rb +++ b/devops-service/lib/executors/server_executor.rb @@ -365,6 +365,10 @@ module Devops def create_run_list out, deploy_info out << "\nGenerate run list hook...\n" + if deploy_info["run_list"] + out << "Deploy info already contains 'run_list': #{deploy_info["run_list"].join(",")}\n" + return + end out << "Project run list: #{@project.run_list.join(", ")}\n" out << "Deploy environment run list: #{@deploy_env.run_list.join(", ")}\n" out << "Server run list: #{@server.run_list.join(", ")}\n"