CID-472: move unlocking to StackBootstrapWorker from executor
This commit is contained in:
parent
0e299149bf
commit
d570def716
@ -25,9 +25,7 @@ module Devops
|
|||||||
end
|
end
|
||||||
|
|
||||||
def wait_till_stack_is_created
|
def wait_till_stack_is_created
|
||||||
wait_result = waiter.wait
|
waiter.wait.ok?
|
||||||
stack.unlock_persisting!
|
|
||||||
wait_result.ok?
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def persist_new_servers
|
def persist_new_servers
|
||||||
|
|||||||
@ -10,7 +10,8 @@ class Devops::Executor::StackExecutor
|
|||||||
def initialize(stack, out)
|
def initialize(stack, out)
|
||||||
@stack, @out = stack, out
|
@stack, @out = stack, out
|
||||||
@by_state = {NEW => [], PERSISTED => [], STALE => []}
|
@by_state = {NEW => [], PERSISTED => [], STALE => []}
|
||||||
fetch
|
@servers_info = @stack.provider_instance.stack_servers(@stack)
|
||||||
|
set_states
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -37,6 +38,7 @@ class Devops::Executor::StackExecutor
|
|||||||
end
|
end
|
||||||
|
|
||||||
def set_states
|
def set_states
|
||||||
|
@by_state = {NEW => [], PERSISTED => [], STALE => []}
|
||||||
persisted = Devops::Db.connector.stack_servers(@stack.name)
|
persisted = Devops::Db.connector.stack_servers(@stack.name)
|
||||||
persisted_ids = persisted.map(&:id)
|
persisted_ids = persisted.map(&:id)
|
||||||
in_cloud_ids = @servers_info.map {|info| info['id']}
|
in_cloud_ids = @servers_info.map {|info| info['id']}
|
||||||
@ -57,11 +59,6 @@ class Devops::Executor::StackExecutor
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def fetch
|
|
||||||
@servers_info = @stack.provider_instance.stack_servers(@stack)
|
|
||||||
reset_states
|
|
||||||
end
|
|
||||||
|
|
||||||
def priority_from_info(provider_info)
|
def priority_from_info(provider_info)
|
||||||
if provider_info['tags']
|
if provider_info['tags']
|
||||||
priority = provider_info['tags']['cid:priority'].to_i
|
priority = provider_info['tags']['cid:priority'].to_i
|
||||||
|
|||||||
@ -323,7 +323,8 @@ module Provider
|
|||||||
stack_id_tag['Value']
|
stack_id_tag['Value']
|
||||||
end
|
end
|
||||||
rescue StandardError => e
|
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
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,6 @@ class Devops::Executor::StackExecutor
|
|||||||
servers_to_persist: new_servers_by_priorities.values.flatten,
|
servers_to_persist: new_servers_by_priorities.values.flatten,
|
||||||
new_servers_by_priorities: new_servers_by_priorities,
|
new_servers_by_priorities: new_servers_by_priorities,
|
||||||
stale_servers: build_list(:server, 2),
|
stale_servers: build_list(:server, 2),
|
||||||
fetch: nil,
|
|
||||||
reset_states: nil
|
reset_states: nil
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -36,16 +35,10 @@ class Devops::Executor::StackExecutor
|
|||||||
|
|
||||||
before do
|
before do
|
||||||
allow(executor_with_stack).to receive(:waiter) { waiter }
|
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
|
end
|
||||||
|
|
||||||
it "return true if syncer returns ok" do
|
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
|
expect(executor_with_stack.wait_till_stack_is_created).to be true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -23,6 +23,7 @@ RSpec.describe StackBootstrapWorker, type: :worker, stubbed_connector: true, ini
|
|||||||
before do
|
before do
|
||||||
allow(worker).to receive(:update_report)
|
allow(worker).to receive(:update_report)
|
||||||
allow(worker).to receive(:executor) { executor }
|
allow(worker).to receive(:executor) { executor }
|
||||||
|
allow(stubbed_connector).to receive(:unlock_persisting_stack)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,7 @@ class StackBootstrapWorker < Worker
|
|||||||
|
|
||||||
save_report(stack_attrs)
|
save_report(stack_attrs)
|
||||||
|
|
||||||
create_stack(stack_attrs)
|
@stack = executor.create_stack(stack_attrs)
|
||||||
if !executor.wait_till_stack_is_created
|
if !executor.wait_till_stack_is_created
|
||||||
puts_and_flush "Stack creating error"
|
puts_and_flush "Stack creating error"
|
||||||
return 1
|
return 1
|
||||||
@ -23,6 +23,7 @@ class StackBootstrapWorker < Worker
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
executor.persist_new_servers
|
executor.persist_new_servers
|
||||||
|
@stack.unlock_persisting!
|
||||||
if without_bootstrap
|
if without_bootstrap
|
||||||
puts_and_flush "\n\nBootstrap has been skipped. Stack has been successfully created."
|
puts_and_flush "\n\nBootstrap has been skipped. Stack has been successfully created."
|
||||||
0
|
0
|
||||||
@ -43,11 +44,6 @@ class StackBootstrapWorker < Worker
|
|||||||
@executor ||= Devops::Executor::StackExecutor.new(out: out)
|
@executor ||= Devops::Executor::StackExecutor.new(out: out)
|
||||||
end
|
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)
|
def bootstrap_or_rollback_if_failed(options)
|
||||||
bootstrap_result = executor.bootstrap_just_persisted(jid)
|
bootstrap_result = executor.bootstrap_just_persisted(jid)
|
||||||
puts_and_flush Devops::Messages.t("worker.stack_bootstrap.bootstrap_result.#{bootstrap_result.reason}")
|
puts_and_flush Devops::Messages.t("worker.stack_bootstrap.bootstrap_result.#{bootstrap_result.reason}")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user