This commit is contained in:
amartynov 2015-09-22 15:23:25 +03:00
commit 762572553c
2 changed files with 20 additions and 23 deletions

View File

@ -8,6 +8,11 @@ module Devops
class ServerExecutor class ServerExecutor
include Hooks include Hooks
RESULT_CODES = {
server_bootstrap_fail: 2,
server_not_in_chef_nodes: 5
}
#params: #params:
# out - container for output data # out - container for output data
# deploy_info - hash with deploy data # deploy_info - hash with deploy data
@ -35,23 +40,16 @@ module Devops
@out.class.send(:define_method, :flush) { } unless @out.respond_to?(:flush) @out.class.send(:define_method, :flush) { } unless @out.respond_to?(:flush)
end end
def result_codes def self.result_code(symbolic_code)
self.class.result_codes RESULT_CODES.fetch(symbolic_code)
end end
def self.result_codes def self.symbolic_result_code(integer_code)
{ RESULT_CODES.key(integer_code) || :deploy_error
server_bootstrap_fail: 2,
server_not_in_chef_nodes: 5
}
end end
def self.result_code(code) def result_code(symbolic_code)
result_codes.fetch(code) self.class.result_code(symbolic_code)
end
def result_code(code)
self.class.result_code(code)
end end
def report= r def report= r

View File

@ -30,15 +30,15 @@ class StackBootstrapWorker < Worker
servers = persist_stack_servers!(stack, provider) servers = persist_stack_servers!(stack, provider)
bootstrap_servers!(servers, report) unless without_bootstrap bootstrap_servers!(servers, report) unless without_bootstrap
rescue BootstrapingStackServerError rescue BootstrapingStackServerError
@out.puts "An error occured during bootstraping stack servers. Initiating stack rollback.\n\n" @out.puts "\nAn error occured during bootstraping stack servers. Initiating stack rollback."
rollback_stack!(stack) rollback_stack!(stack)
1 1
rescue DeployingStackServerError => e rescue DeployingStackServerError => e
@out.puts "Stack was launched, but an error occured during deploying stack servers." @out.puts "\nStack was launched, but an error occured during deploying stack servers."
@out.puts "You can redeploy stack after fixing the error.\n\n" @out.puts "You can redeploy stack after fixing the error."
1 1
rescue StandardError => e rescue StandardError => e
@out.puts "An error occured. Initiating stack rollback.\n\n" @out.puts "\nAn error occured. Initiating stack rollback."
rollback_stack!(stack) rollback_stack!(stack)
raise e raise e
end end
@ -52,7 +52,7 @@ class StackBootstrapWorker < Worker
stack.delete_stack_in_cloud! stack.delete_stack_in_cloud!
Devops::Db.connector.stack_servers_delete(stack.name) Devops::Db.connector.stack_servers_delete(stack.name)
Devops::Db.connector.stack_delete(stack.id) Devops::Db.connector.stack_delete(stack.id)
@out.puts "\nRollback has been completed" @out.puts "Rollback has been completed"
end end
def create_stack(provider_name, stack_attrs) def create_stack(provider_name, stack_attrs)
@ -91,17 +91,16 @@ class StackBootstrapWorker < Worker
return 0 return 0
end end
@out.puts
results.each do |chef_node_name, code| results.each do |chef_node_name, code|
human_readable_code = Devops::Executor::ServerExecutor.result_codes.key(code) human_readable_code = Devops::Executor::ServerExecutor.symbolic_result_code(code)
@out.puts "Operation result for #{chef_node_name}: #{human_readable_code}" @out.puts "Operation result for #{chef_node_name}: #{human_readable_code}"
end end
if errors_in_bootstrapping_present?(results) if errors_in_bootstrapping_present?(results)
# An error occured during servers bootsraping, so rollback stack raise BootstrapingStackServerError # will cause rollback of a stack
raise BootstrapingStackServerError
else else
# An error occured during servers deploying, rollback isn't needed raise DeployingStackServerError #will not cause rollback of a stack
raise DeployingStackServerError
end end
end end