CID-472: move unlocking to StackBootstrapWorker from executor
This commit is contained in:
parent
0e299149bf
commit
d570def716
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
|
||||
@ -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}")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user