Do not rescue errors from state transitions

As this are un-expected errors which we should hear about from Sentry.

Still rescue StandardError when operating a Helm action as we can get
non Kubeclient errors such as SSL certificate or network errors
This commit is contained in:
Thong Kuah 2019-04-12 13:22:11 +00:00 committed by Kamil Trzciński
parent d30ac3259f
commit 8dfec0cedd
6 changed files with 42 additions and 31 deletions

View file

@ -7,6 +7,13 @@ module Clusters
return unless app.scheduled?
app.make_installing!
install
end
private
def install
log_event(:begin_install)
helm_api.install(install_command)
@ -18,7 +25,7 @@ module Clusters
app.make_errored!("Kubernetes error: #{e.error_code}")
rescue StandardError => e
log_error(e)
app.make_errored!("Can't start installation process.")
app.make_errored!('Failed to install.')
end
end
end

View file

@ -8,6 +8,12 @@ module Clusters
app.make_updating!
patch
end
private
def patch
log_event(:begin_patch)
helm_api.update(update_command)
@ -16,10 +22,10 @@ module Clusters
ClusterWaitForAppInstallationWorker::INTERVAL, app.name, app.id)
rescue Kubeclient::HttpError => e
log_error(e)
app.make_update_errored!("Kubernetes error: #{e.error_code}")
app.make_errored!("Kubernetes error: #{e.error_code}")
rescue StandardError => e
log_error(e)
app.make_update_errored!("Can't start update process.")
app.make_errored!('Failed to update.')
end
end
end

View file

@ -6,12 +6,17 @@ module Clusters
def execute
return unless app.scheduled?
begin
app.make_updating!
log_event(:begin_upgrade)
upgrade
end
private
def upgrade
# install_command works with upgrades too
# as it basically does `helm upgrade --install`
log_event(:begin_upgrade)
helm_api.update(install_command)
log_event(:schedule_wait_for_upgrade)
@ -19,11 +24,10 @@ module Clusters
ClusterWaitForAppInstallationWorker::INTERVAL, app.name, app.id)
rescue Kubeclient::HttpError => e
log_error(e)
app.make_update_errored!("Kubernetes error: #{e.error_code}")
app.make_errored!("Kubernetes error: #{e.error_code}")
rescue StandardError => e
log_error(e)
app.make_update_errored!("Can't start upgrade process.")
end
app.make_errored!('Failed to upgrade.')
end
end
end

View file

@ -58,7 +58,7 @@ describe Clusters::Applications::InstallService do
let(:error) { StandardError.new('something bad happened') }
before do
expect(application).to receive(:make_installing!).once.and_raise(error)
expect(helm_client).to receive(:install).with(install_command).and_raise(error)
end
include_examples 'logs kubernetes errors' do
@ -68,12 +68,10 @@ describe Clusters::Applications::InstallService do
end
it 'make the application errored' do
expect(helm_client).not_to receive(:install)
service.execute
expect(application).to be_errored
expect(application.status_reason).to eq("Can't start installation process.")
expect(application.status_reason).to eq('Failed to install.')
end
end
end

View file

@ -66,16 +66,14 @@ describe Clusters::Applications::PatchService do
end
before do
expect(application).to receive(:make_updating!).once.and_raise(error)
expect(helm_client).to receive(:update).with(update_command).and_raise(error)
end
it 'make the application errored' do
expect(helm_client).not_to receive(:update)
service.execute
expect(application).to be_update_errored
expect(application.status_reason).to eq("Can't start update process.")
expect(application.status_reason).to eq('Failed to update.')
end
end
end

View file

@ -60,7 +60,7 @@ describe Clusters::Applications::UpgradeService do
let(:error) { StandardError.new('something bad happened') }
before do
expect(application).to receive(:make_updating!).once.and_raise(error)
expect(helm_client).to receive(:update).with(install_command).and_raise(error)
end
include_examples 'logs kubernetes errors' do
@ -70,12 +70,10 @@ describe Clusters::Applications::UpgradeService do
end
it 'make the application errored' do
expect(helm_client).not_to receive(:update)
service.execute
expect(application).to be_update_errored
expect(application.status_reason).to eq("Can't start upgrade process.")
expect(application.status_reason).to eq('Failed to upgrade.')
end
end
end