diff --git a/devops-service/commands/stack.rb b/devops-service/commands/stack.rb index e8443fe..489a4cf 100644 --- a/devops-service/commands/stack.rb +++ b/devops-service/commands/stack.rb @@ -14,16 +14,23 @@ module StackCommands sleep sleep_time stack.sync_details! puts stack.stack_status - if stack.stack_status != 'CREATE_IN_PROGRESS' + case + when 'CREATE_IN_PROGRESS' + out << "." + out.flush + when 'CREATE_COMPLETE' mongo.stack_update(stack) out << "\nStack '#{stack.id}' status is now #{stack.stack_status}\n" out.flush - break - end - out << "." - out.flush + return 0 + when 'ROLLBACK_COMPLETE' + out << "\nStack '#{stack.id}' status is rolled back\n" + return 1 + else + out << "\nUnknown status: '#{stack.stack_status}'" + return 2 + end end - out << "\n" rescue StandardError => e logger.error e.message out << "Error: #{e.message}\n" diff --git a/devops-service/lib/executors/server_executor.rb b/devops-service/lib/executors/server_executor.rb index 8996f52..2b21580 100644 --- a/devops-service/lib/executors/server_executor.rb +++ b/devops-service/lib/executors/server_executor.rb @@ -151,9 +151,9 @@ module Devops bootstrap_options = [ "-x #{@server.remote_user}", "-i #{options[:cert_path]}", - "--json-attributes '#{attributes.to_json}'", - "-N #{@server.chef_node_name}" + "--json-attributes '#{attributes.to_json}'" ] + bootstrap_options.push "-N #{@server.chef_node_name}" if @server.chef_node_name bootstrap_options.push "--sudo" unless @server.remote_user == "root" bootstrap_options.push "-t #{options[:bootstrap_template]}" if options[:bootstrap_template] rl = options[:run_list] diff --git a/devops-service/workers/stack_bootstrap_worker.rb b/devops-service/workers/stack_bootstrap_worker.rb index 960e5aa..77a1734 100644 --- a/devops-service/workers/stack_bootstrap_worker.rb +++ b/devops-service/workers/stack_bootstrap_worker.rb @@ -28,14 +28,16 @@ class StackBootstrapWorker < Worker # stack.owner = attrs['owner'] mongo.stack_insert(stack) - sync_bootstrap_proc.call(out, stack, mongo) - out << "\nStack '#{stack.name}' has been created\n" - out.flush - servers = persist_stack_servers!(stack, provider) - out << "\n" - unless attrs['without_bootstrap'] - statuses = servers.map do |s| - Devops::Executor::ServerExecutor.new(s, out).two_phase_bootstrap({}) + r = sync_bootstrap_proc.call(out, stack, mongo) + if r == 0 + out << "\nStack '#{stack.name}' has been created\n" + out.flush + servers = persist_stack_servers!(stack, provider) + out << "\n" + unless attrs['without_bootstrap'] + statuses = servers.map do |s| + Devops::Executor::ServerExecutor.new(s, out).two_phase_bootstrap({}) + end end end end @@ -66,6 +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 end end