From 83cb04ab852c2785f22cff8c82749cb8012261d4 Mon Sep 17 00:00:00 2001 From: Anton Martynov Date: Fri, 21 Aug 2015 15:17:42 +0300 Subject: [PATCH] before deploy hook: generate run list --- devops-service/db/mongo/models/project.rb | 3 +- .../lib/executors/server_executor.rb | 33 ++++++++++++++----- .../workers/stack_bootstrap_worker.rb | 2 +- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/devops-service/db/mongo/models/project.rb b/devops-service/db/mongo/models/project.rb index 7f500cf..a66dc29 100644 --- a/devops-service/db/mongo/models/project.rb +++ b/devops-service/db/mongo/models/project.rb @@ -139,7 +139,8 @@ module Devops def deploy_info deploy_env, build_number { - "run_list" => deploy_env.run_list, + "use_json_file" => true, +# "run_list" => Set.new.merge(self.run_list).merge(deploy_env.run_list).to_a, "project" => self.id, "project_info" => { "project" => self.id, diff --git a/devops-service/lib/executors/server_executor.rb b/devops-service/lib/executors/server_executor.rb index ff49db3..fb158da 100644 --- a/devops-service/lib/executors/server_executor.rb +++ b/devops-service/lib/executors/server_executor.rb @@ -20,6 +20,8 @@ module Devops define_hook :before_bootstrap define_hook :after_bootstrap + before_deploy :create_run_list + def initialize server, out if server @project = Devops::Db.connector.project(server.project) @@ -72,8 +74,6 @@ module Devops @out.flush DevopsLogger.logger.info "Server with parameters: #{@server.to_hash.inspect} is running" unless options["without_bootstrap"] - @server.run_list = Set.new.merge(@project.run_list).merge(@deploy_env.run_list).merge(@server.run_list).to_a - @server.chef_node_name = provider.create_default_chef_node_name(@server) if @server.chef_node_name.nil? bootstrap_options = { bootstrap_template: i.bootstrap_template } @@ -132,6 +132,7 @@ module Devops retry end + @server.chef_node_name = provider.create_default_chef_node_name(@server) if @server.chef_node_name.nil? r = @knife_instance.knife_bootstrap(@out, ip, self.bootstrap_options(ja, options)) if r == 0 @out << "Chef node name: #{@server.chef_node_name}\n" @@ -142,6 +143,7 @@ module Devops @out << "Done\n" DevopsLogger.logger.info "Server with id '#{@server.id}' is bootstraped" else + @out << "Can not bootstrap node '#{@server.id}', error code: #{r}" end @out.flush r @@ -178,13 +180,13 @@ module Devops @out << "\n" @out.flush - run_list = @server.run_list + provider.run_list - @out << "\nRun list: #{run_list.inspect}" - # s.options[:run_list] += run_list - @knife_instance.set_run_list(@server.chef_node_name, run_list) - status = deploy_server({}) +# run_list = @server.run_list + provider.run_list +# @out << "\nRun list: #{run_list.inspect}" +# s.options[:run_list] += run_list +# @knife_instance.set_run_list(@server.chef_node_name, run_list) + status = deploy_server(@project.deploy_info(@deploy_env)) if status != 0 - msg = "Failed on chef-client with project run list, server with id '#{@server.id}'" + msg = "Failed on chef-client with run list, server with id '#{@server.id}'" DevopsLogger.logger.error msg @out << "\n" + msg + "\n" end @@ -347,6 +349,21 @@ module Devops end end + def create_run_list out, deploy_info + out << "\nGenerate run list hook...\n" + 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" + rlist = Set.new.merge(@project.run_list).merge(@deploy_env.run_list).merge(@server.run_list) + if @server.stack + stack = Devops::Db.stack(@server.stack) + out << "Stack run list: #{stack.run_list.join(", ")}\n" + rlist.merge(stack.run_list) + end + deploy_info["run_list"] = rlist.to_a + out << "New deploy run list: #{deploy_info["run_list"].join(", ")}\nRun list has been generated\n\n" + end + end end end diff --git a/devops-service/workers/stack_bootstrap_worker.rb b/devops-service/workers/stack_bootstrap_worker.rb index b515ee8..18b266b 100644 --- a/devops-service/workers/stack_bootstrap_worker.rb +++ b/devops-service/workers/stack_bootstrap_worker.rb @@ -68,7 +68,7 @@ class StackBootstrapWorker < Worker server = ::Devops::Model::Server.new(server_attrs) mongo.server_insert(server) - server.chef_node_name = provider.create_default_chef_node_name(server) +# server.chef_node_name = provider.create_default_chef_node_name(server) server end end