CID-472: move unlocking to StackBootstrapWorker from executor

This commit is contained in:
Anton Chuchkalov 2016-04-15 17:05:50 +03:00
parent 0e299149bf
commit d570def716
6 changed files with 10 additions and 24 deletions

View File

@ -25,9 +25,7 @@ module Devops
end
def wait_till_stack_is_created
wait_result = waiter.wait
stack.unlock_persisting!
wait_result.ok?
waiter.wait.ok?
end
def persist_new_servers

View File

@ -10,7 +10,8 @@ class Devops::Executor::StackExecutor
def initialize(stack, out)
@stack, @out = stack, out
@by_state = {NEW => [], PERSISTED => [], STALE => []}
fetch
@servers_info = @stack.provider_instance.stack_servers(@stack)
set_states
end
@ -37,6 +38,7 @@ class Devops::Executor::StackExecutor
end
def set_states
@by_state = {NEW => [], PERSISTED => [], STALE => []}
persisted = Devops::Db.connector.stack_servers(@stack.name)
persisted_ids = persisted.map(&:id)
in_cloud_ids = @servers_info.map {|info| info['id']}
@ -57,11 +59,6 @@ class Devops::Executor::StackExecutor
private
def fetch
@servers_info = @stack.provider_instance.stack_servers(@stack)
reset_states
end
def priority_from_info(provider_info)
if provider_info['tags']
priority = provider_info['tags']['cid:priority'].to_i

View File

@ -323,7 +323,8 @@ module Provider
stack_id_tag['Value']
end
rescue StandardError => e
puts "An error occured while analyzing group '#{id}': #{[e.name, e.message, e.backtrace].join("\n")}"
puts "An error occured while analyzing group '#{id}'"
puts response.body
nil
end

View File

@ -17,7 +17,6 @@ class Devops::Executor::StackExecutor
servers_to_persist: new_servers_by_priorities.values.flatten,
new_servers_by_priorities: new_servers_by_priorities,
stale_servers: build_list(:server, 2),
fetch: nil,
reset_states: nil
)
}
@ -36,16 +35,10 @@ class Devops::Executor::StackExecutor
before do
allow(executor_with_stack).to receive(:waiter) { waiter }
allow(stack).to receive(:unlock_persisting!)
end
it 'waites till stack is created, then fetches stack servers and unlocks stack persisting' do
expect(waiter).to receive(:wait).ordered
expect(stack).to receive(:unlock_persisting!).ordered
executor_with_stack.wait_till_stack_is_created
end
it "return true if syncer returns ok" do
expect(waiter).to receive(:wait)
expect(executor_with_stack.wait_till_stack_is_created).to be true
end

View File

@ -23,6 +23,7 @@ RSpec.describe StackBootstrapWorker, type: :worker, stubbed_connector: true, ini
before do
allow(worker).to receive(:update_report)
allow(worker).to receive(:executor) { executor }
allow(stubbed_connector).to receive(:unlock_persisting_stack)
end

View File

@ -15,7 +15,7 @@ class StackBootstrapWorker < Worker
save_report(stack_attrs)
create_stack(stack_attrs)
@stack = executor.create_stack(stack_attrs)
if !executor.wait_till_stack_is_created
puts_and_flush "Stack creating error"
return 1
@ -23,6 +23,7 @@ class StackBootstrapWorker < Worker
begin
executor.persist_new_servers
@stack.unlock_persisting!
if without_bootstrap
puts_and_flush "\n\nBootstrap has been skipped. Stack has been successfully created."
0
@ -43,11 +44,6 @@ class StackBootstrapWorker < Worker
@executor ||= Devops::Executor::StackExecutor.new(out: out)
end
# let it stay inside method to improve readability of #perform method
def create_stack(stack_attrs)
@stack = executor.create_stack(stack_attrs)
end
def bootstrap_or_rollback_if_failed(options)
bootstrap_result = executor.bootstrap_just_persisted(jid)
puts_and_flush Devops::Messages.t("worker.stack_bootstrap.bootstrap_result.#{bootstrap_result.reason}")