Remove Clusters::Applications::FinalizeInstallationService
This commit is contained in:
parent
a46d32412e
commit
86d8531748
|
@ -6,7 +6,7 @@ module Clusters
|
|||
|
||||
case installation_phase
|
||||
when Gitlab::Kubernetes::Pod::SUCCEEDED
|
||||
finalize_installation
|
||||
on_success
|
||||
when Gitlab::Kubernetes::Pod::FAILED
|
||||
on_failed
|
||||
else
|
||||
|
@ -18,23 +18,39 @@ module Clusters
|
|||
|
||||
private
|
||||
|
||||
def on_success
|
||||
app.make_installed!
|
||||
ensure
|
||||
remove_installation_pod
|
||||
end
|
||||
|
||||
def on_failed
|
||||
app.make_errored!(installation_errors || 'Installation silently failed')
|
||||
finalize_installation
|
||||
ensure
|
||||
remove_installation_pod
|
||||
end
|
||||
|
||||
def check_timeout
|
||||
if Time.now.utc - app.updated_at.to_time.utc > ClusterWaitForAppInstallationWorker::TIMEOUT
|
||||
app.make_errored!('Installation timeouted')
|
||||
finalize_installation
|
||||
if timeouted?
|
||||
begin
|
||||
app.make_errored!('Installation timeouted')
|
||||
ensure
|
||||
remove_installation_pod
|
||||
end
|
||||
else
|
||||
ClusterWaitForAppInstallationWorker.perform_in(
|
||||
ClusterWaitForAppInstallationWorker::INTERVAL, app.name, app.id)
|
||||
end
|
||||
end
|
||||
|
||||
def finalize_installation
|
||||
FinalizeInstallationService.new(app).execute
|
||||
def timeouted?
|
||||
Time.now.utc - app.updated_at.to_time.utc > ClusterWaitForAppInstallationWorker::TIMEOUT
|
||||
end
|
||||
|
||||
def remove_installation_pod
|
||||
helm_api.delete_installation_pod!(app)
|
||||
rescue
|
||||
# no-op
|
||||
end
|
||||
|
||||
def installation_phase
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
module Clusters
|
||||
module Applications
|
||||
class FinalizeInstallationService < BaseHelmService
|
||||
def execute
|
||||
helm_api.delete_installation_pod!(app)
|
||||
|
||||
app.make_installed! if app.installing?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -9,8 +9,8 @@ describe Clusters::Applications::CheckInstallationProgressService do
|
|||
let(:errors) { nil }
|
||||
|
||||
shared_examples 'a terminated installation' do
|
||||
it 'finalize the installation' do
|
||||
expect(service).to receive(:finalize_installation).once
|
||||
it 'removes the installation POD' do
|
||||
expect(service).to receive(:remove_installation_pod).once
|
||||
|
||||
service.execute
|
||||
end
|
||||
|
@ -23,7 +23,7 @@ describe Clusters::Applications::CheckInstallationProgressService do
|
|||
context 'when not timeouted' do
|
||||
it 'reschedule a new check' do
|
||||
expect(ClusterWaitForAppInstallationWorker).to receive(:perform_in).once
|
||||
expect(service).not_to receive(:finalize_installation)
|
||||
expect(service).not_to receive(:remove_installation_pod)
|
||||
|
||||
service.execute
|
||||
|
||||
|
@ -53,7 +53,7 @@ describe Clusters::Applications::CheckInstallationProgressService do
|
|||
expect(service).to receive(:installation_phase).once.and_return(phase)
|
||||
|
||||
allow(service).to receive(:installation_errors).and_return(errors)
|
||||
allow(service).to receive(:finalize_installation).and_return(nil)
|
||||
allow(service).to receive(:remove_installation_pod).and_return(nil)
|
||||
end
|
||||
|
||||
describe '#execute' do
|
||||
|
@ -61,6 +61,15 @@ describe Clusters::Applications::CheckInstallationProgressService do
|
|||
let(:phase) { Gitlab::Kubernetes::Pod::SUCCEEDED }
|
||||
|
||||
it_behaves_like 'a terminated installation'
|
||||
|
||||
it 'make the application installed' do
|
||||
expect(ClusterWaitForAppInstallationWorker).not_to receive(:perform_in)
|
||||
|
||||
service.execute
|
||||
|
||||
expect(application).to be_installed
|
||||
expect(application.status_reason).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when installation POD failed' do
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Clusters::Applications::FinalizeInstallationService do
|
||||
describe '#execute' do
|
||||
let(:application) { create(:applications_helm, :installing) }
|
||||
let(:service) { described_class.new(application) }
|
||||
|
||||
before do
|
||||
expect_any_instance_of(Gitlab::Kubernetes::Helm).to receive(:delete_installation_pod!).with(application)
|
||||
end
|
||||
|
||||
context 'when installation POD succeeded' do
|
||||
it 'make the application installed' do
|
||||
service.execute
|
||||
|
||||
expect(application).to be_installed
|
||||
expect(application.status_reason).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when installation POD failed' do
|
||||
let(:application) { create(:applications_helm, :errored) }
|
||||
|
||||
it 'make the application errored' do
|
||||
service.execute
|
||||
|
||||
expect(application).to be_errored
|
||||
expect(application.status_reason).not_to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue