refactore operation results
This commit is contained in:
parent
39253e8605
commit
a71a6edf45
@ -3,6 +3,7 @@ require "lib/executors/expiration_scheduler"
|
||||
require "lib/puts_and_flush"
|
||||
require "hooks"
|
||||
require 'net/ssh'
|
||||
require_relative 'server_operation_result'
|
||||
|
||||
module Devops
|
||||
module Executor
|
||||
@ -10,18 +11,6 @@ module Devops
|
||||
include Hooks
|
||||
include PutsAndFlush
|
||||
|
||||
ERROR_CODES = {
|
||||
server_bootstrap_fail: 2,
|
||||
server_cannot_update_tags: 3,
|
||||
server_bootstrap_private_ip_unset: 4,
|
||||
server_not_in_chef_nodes: 5,
|
||||
server_bootstrap_unknown_error: 7,
|
||||
deploy_unknown_error: 6,
|
||||
deploy_failed: 8,
|
||||
creating_server_unknown_error: 9,
|
||||
creating_server_in_cloud_failed: 10
|
||||
}
|
||||
|
||||
# waiting for 5*60 seconds (5 min)
|
||||
MAX_SSH_RETRIES_AMOUNT = 60
|
||||
|
||||
@ -56,21 +45,8 @@ module Devops
|
||||
@current_user = options[:current_user]
|
||||
end
|
||||
|
||||
def self.error_code(reason)
|
||||
ERROR_CODES.fetch(reason)
|
||||
end
|
||||
|
||||
def self.reason_from_error_code(integer_code)
|
||||
ERROR_CODES.key(integer_code) || :unknown_error
|
||||
end
|
||||
|
||||
def self.error_occured_during_bootstrap?(code)
|
||||
reason = reason_from_error_code(code)
|
||||
[:server_bootstrap_fail, :server_not_in_chef_nodes, :server_bootstrap_unknown_error].include?(reason)
|
||||
end
|
||||
|
||||
def error_code(reason)
|
||||
self.class.error_code(reason)
|
||||
ServerOperationResult.code_of_reason(reason)
|
||||
end
|
||||
|
||||
def create_server_object options
|
||||
|
||||
41
devops-service/lib/executors/server_operation_result.rb
Normal file
41
devops-service/lib/executors/server_operation_result.rb
Normal file
@ -0,0 +1,41 @@
|
||||
module Devops
|
||||
module Executor
|
||||
class ServerOperationResult
|
||||
RESULT_CODES = {
|
||||
ok: 0,
|
||||
server_bootstrap_fail: 2,
|
||||
server_cannot_update_tags: 3,
|
||||
server_bootstrap_private_ip_unset: 4,
|
||||
server_not_in_chef_nodes: 5,
|
||||
server_bootstrap_unknown_error: 7,
|
||||
deploy_unknown_error: 6,
|
||||
deploy_failed: 8,
|
||||
creating_server_unknown_error: 9,
|
||||
creating_server_in_cloud_failed: 10
|
||||
}
|
||||
|
||||
attr_reader :code
|
||||
|
||||
def initialize(error_code)
|
||||
@code = error_code
|
||||
end
|
||||
|
||||
def ok?
|
||||
@code == 0
|
||||
end
|
||||
|
||||
def reason
|
||||
RESULT_CODES.key(@code) || :unknown_error
|
||||
end
|
||||
|
||||
def occured_during_bootstrap?(code)
|
||||
[:server_bootstrap_fail, :server_not_in_chef_nodes, :server_bootstrap_unknown_error].include?(reason)
|
||||
end
|
||||
|
||||
def self.code_of_reason(reason)
|
||||
RESULT_CODES.fetch(reason)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -53,18 +53,6 @@ RSpec.describe Devops::Executor::ServerExecutor, type: :executor, stubbed_connec
|
||||
end
|
||||
|
||||
|
||||
describe '.reason_from_error_code' do
|
||||
it 'returns symbol given an integer' do
|
||||
expect(described_class.reason_from_error_code(2)).to eq :server_bootstrap_fail
|
||||
end
|
||||
|
||||
it "returns :unknown_error if can't recognize error code" do
|
||||
expect(described_class.reason_from_error_code(123)).to eq :unknown_error
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
describe '#create_server_object' do
|
||||
it 'builds Server object' do
|
||||
server = executor.create_server_object('created_by' => 'me')
|
||||
|
||||
@ -28,15 +28,16 @@ class StackServersBootstrapper
|
||||
private
|
||||
|
||||
def check_bootstrap_result!(server_id, result_code, job_id)
|
||||
if result_code == 0
|
||||
operation_result = Devops::Executor::ServerOperationResult.new(result_code)
|
||||
|
||||
if operation_result.ok?
|
||||
puts_and_flush "Server '#{server_id}' has been bootstraped (job #{job_id})."
|
||||
return
|
||||
end
|
||||
|
||||
reason = Devops::Executor::ServerExecutor.reason_from_error_code(result_code)
|
||||
puts_and_flush "Server '#{server_id}' bootstraped failed (job #{job_id}). Reason: #{reason}"
|
||||
puts_and_flush "Server '#{server_id}' bootstraped failed (job #{job_id}). Reason: #{operation_result.reason}"
|
||||
|
||||
if Devops::Executor::ServerExecutor.error_occured_during_bootstrap?(result_code)
|
||||
if operation_result.occured_during_bootstrap?(operation_result.code)
|
||||
raise StackServerBootstrapError # will cause rollback of a stack
|
||||
else
|
||||
raise StackServerDeployError # will not cause rollback of a stack
|
||||
|
||||
Loading…
Reference in New Issue
Block a user