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
	 Anton Chuchkalov
						Anton Chuchkalov