From 34df3f0ce0334cda538dc0e60542045965a71ef2 Mon Sep 17 00:00:00 2001 From: Anton Chuchkalov Date: Wed, 13 Apr 2016 16:09:25 +0300 Subject: [PATCH] CID-472: delete nodes from chef-server on delete --- devops-service/lib/executors/stack_executor.rb | 16 +++++++++++++--- .../spec/executors/stack_executor_spec.rb | 7 ++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/devops-service/lib/executors/stack_executor.rb b/devops-service/lib/executors/stack_executor.rb index 26684de..441dc25 100644 --- a/devops-service/lib/executors/stack_executor.rb +++ b/devops-service/lib/executors/stack_executor.rb @@ -58,14 +58,15 @@ module Devops def delete_stale_servers fetcher.stale_servers.each do |server| - server_executor = Devops::Executor::ServerExecutor.new(server, out) - server_executor.delete_server + proper_remove_server(server) end end def delete_stack stack.delete_stack_in_cloud! - mongo.stack_servers_delete(stack.name) + mongo.stack_servers(@stack.name).each do |server| + proper_remove_server(server) + end mongo.stack_delete(stack.id) end @@ -77,6 +78,15 @@ module Devops Devops::Db.connector end + def proper_remove_server(server) + begin + e = Devops::Executor::ServerExecutor.new(server, out) + e.delete_server + rescue StandardError => e + puts_and_flush [e.message, e.backtrace].join("\n") + end + end + def reload_stack @stack = mongo.stack(@stack.name) end diff --git a/devops-service/spec/executors/stack_executor_spec.rb b/devops-service/spec/executors/stack_executor_spec.rb index 9d4de92..52a5f81 100644 --- a/devops-service/spec/executors/stack_executor_spec.rb +++ b/devops-service/spec/executors/stack_executor_spec.rb @@ -123,9 +123,14 @@ class Devops::Executor::StackExecutor describe '#delete_stack', stubbed_connector: true do it 'deletes stack from cloud, then deletes stack servers, and then deletes stack itself' do + allow(stubbed_connector).to receive(:stack_servers) { [build(:server, id: 'i-persisted')] } expect(stack).to receive(:delete_stack_in_cloud!).ordered - expect(stubbed_connector).to receive(:stack_servers_delete).ordered + expect(stubbed_connector).to receive(:stack_servers).ordered expect(stubbed_connector).to receive(:stack_delete).ordered + + executor = instance_double(Devops::Executor::ServerExecutor, delete_server: nil) + allow(Devops::Executor::ServerExecutor).to receive(:new) { executor } + expect(executor).to receive(:delete_server) executor_with_stack.delete_stack end end