summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessio Caiazza <acaiazza@gitlab.com>2017-11-07 09:16:57 +0100
committerAlessio Caiazza <acaiazza@gitlab.com>2017-11-07 09:16:57 +0100
commit86d8531748208efdbc430c552bbb89567c86378d (patch)
treeb6a7616ffe8d7e0fbab3ff75f0cab708925c5a41
parenta46d32412ec93be2d6d10bd4bcbdd23b69d31865 (diff)
downloadgitlab-ce-86d8531748208efdbc430c552bbb89567c86378d.tar.gz
Remove Clusters::Applications::FinalizeInstallationService
-rw-r--r--app/services/clusters/applications/check_installation_progress_service.rb30
-rw-r--r--app/services/clusters/applications/finalize_installation_service.rb11
-rw-r--r--spec/services/clusters/applications/check_installation_progress_service_spec.rb17
-rw-r--r--spec/services/clusters/applications/finalize_installation_service_spec.rb32
4 files changed, 36 insertions, 54 deletions
diff --git a/app/services/clusters/applications/check_installation_progress_service.rb b/app/services/clusters/applications/check_installation_progress_service.rb
index 1bd5dae0584..69bd3613cce 100644
--- a/app/services/clusters/applications/check_installation_progress_service.rb
+++ b/app/services/clusters/applications/check_installation_progress_service.rb
@@ -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
diff --git a/app/services/clusters/applications/finalize_installation_service.rb b/app/services/clusters/applications/finalize_installation_service.rb
deleted file mode 100644
index 292c789b67b..00000000000
--- a/app/services/clusters/applications/finalize_installation_service.rb
+++ /dev/null
@@ -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
diff --git a/spec/services/clusters/applications/check_installation_progress_service_spec.rb b/spec/services/clusters/applications/check_installation_progress_service_spec.rb
index fe04fac9613..faa5b469069 100644
--- a/spec/services/clusters/applications/check_installation_progress_service_spec.rb
+++ b/spec/services/clusters/applications/check_installation_progress_service_spec.rb
@@ -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
diff --git a/spec/services/clusters/applications/finalize_installation_service_spec.rb b/spec/services/clusters/applications/finalize_installation_service_spec.rb
deleted file mode 100644
index 08b7a80dfcd..00000000000
--- a/spec/services/clusters/applications/finalize_installation_service_spec.rb
+++ /dev/null
@@ -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