From d570def71609353226b04e89960ce107689efcb2 Mon Sep 17 00:00:00 2001 From: Anton Chuchkalov Date: Fri, 15 Apr 2016 17:05:50 +0300 Subject: [PATCH] CID-472: move unlocking to StackBootstrapWorker from executor --- devops-service/lib/executors/stack_executor.rb | 4 +--- .../executors/stack_executor/stack_servers_fetcher.rb | 9 +++------ devops-service/providers/ec2.rb | 3 ++- devops-service/spec/executors/stack_executor_spec.rb | 9 +-------- .../spec/workers/stack_bootstrap_worker_spec.rb | 1 + devops-service/workers/stack_bootstrap_worker.rb | 8 ++------ 6 files changed, 10 insertions(+), 24 deletions(-) diff --git a/devops-service/lib/executors/stack_executor.rb b/devops-service/lib/executors/stack_executor.rb index 2cae103..c106afc 100644 --- a/devops-service/lib/executors/stack_executor.rb +++ b/devops-service/lib/executors/stack_executor.rb @@ -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 diff --git a/devops-service/lib/executors/stack_executor/stack_servers_fetcher.rb b/devops-service/lib/executors/stack_executor/stack_servers_fetcher.rb index c7ab48a..6520dbc 100644 --- a/devops-service/lib/executors/stack_executor/stack_servers_fetcher.rb +++ b/devops-service/lib/executors/stack_executor/stack_servers_fetcher.rb @@ -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 diff --git a/devops-service/providers/ec2.rb b/devops-service/providers/ec2.rb index 47e1445..cc0ea2b 100644 --- a/devops-service/providers/ec2.rb +++ b/devops-service/providers/ec2.rb @@ -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 diff --git a/devops-service/spec/executors/stack_executor_spec.rb b/devops-service/spec/executors/stack_executor_spec.rb index c2652f0..0ae24e9 100644 --- a/devops-service/spec/executors/stack_executor_spec.rb +++ b/devops-service/spec/executors/stack_executor_spec.rb @@ -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 diff --git a/devops-service/spec/workers/stack_bootstrap_worker_spec.rb b/devops-service/spec/workers/stack_bootstrap_worker_spec.rb index 93038a2..d0b9f8f 100644 --- a/devops-service/spec/workers/stack_bootstrap_worker_spec.rb +++ b/devops-service/spec/workers/stack_bootstrap_worker_spec.rb @@ -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 diff --git a/devops-service/workers/stack_bootstrap_worker.rb b/devops-service/workers/stack_bootstrap_worker.rb index af263a0..d726e7e 100644 --- a/devops-service/workers/stack_bootstrap_worker.rb +++ b/devops-service/workers/stack_bootstrap_worker.rb @@ -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}")