summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThong Kuah <tkuah@gitlab.com>2019-01-23 21:34:08 +1300
committerThong Kuah <tkuah@gitlab.com>2019-01-25 15:55:14 +1300
commit66201dec7c021f9defa2eaf46e94cc6ca161fcbc (patch)
treebc3fb14bb0a96ea959ba13af2be376d60d290d80
parentfb83a6365bd6eecaa49fe7c67a1946ec8eae51f3 (diff)
downloadgitlab-ce-66201dec7c021f9defa2eaf46e94cc6ca161fcbc.tar.gz
Allow UpdateService to be extensible by EE
The idea is that by default, #upgrade_command does not replace values, which is the case in CE. In EE, we allow that kwarg to replace values.
-rw-r--r--app/models/clusters/applications/prometheus.rb4
-rw-r--r--app/services/clusters/applications/base_helm_service.rb4
-rw-r--r--app/services/clusters/applications/update_service.rb2
-rw-r--r--spec/models/clusters/applications/prometheus_spec.rb16
-rw-r--r--spec/services/clusters/applications/update_service_spec.rb2
5 files changed, 19 insertions, 9 deletions
diff --git a/app/models/clusters/applications/prometheus.rb b/app/models/clusters/applications/prometheus.rb
index 26bf73f4dd8..e89d20a79ca 100644
--- a/app/models/clusters/applications/prometheus.rb
+++ b/app/models/clusters/applications/prometheus.rb
@@ -52,13 +52,13 @@ module Clusters
)
end
- def upgrade_command(values)
+ def upgrade_command(replaced_values: nil)
::Gitlab::Kubernetes::Helm::UpgradeCommand.new(
name,
version: VERSION,
chart: chart,
rbac: cluster.platform_kubernetes_rbac?,
- files: files_with_replaced_values(values)
+ files: replaced_values ? files_with_replaced_values(replaced_values) : files
)
end
diff --git a/app/services/clusters/applications/base_helm_service.rb b/app/services/clusters/applications/base_helm_service.rb
index 8a71730d5ec..c04fb8914f7 100644
--- a/app/services/clusters/applications/base_helm_service.rb
+++ b/app/services/clusters/applications/base_helm_service.rb
@@ -46,8 +46,8 @@ module Clusters
@install_command ||= app.install_command
end
- def upgrade_command(new_values = "")
- app.upgrade_command(new_values)
+ def upgrade_command(replaced_values: nil)
+ app.upgrade_command(replaced_values: replaced_values)
end
end
end
diff --git a/app/services/clusters/applications/update_service.rb b/app/services/clusters/applications/update_service.rb
index 1b0055a3e89..e533bdc24f2 100644
--- a/app/services/clusters/applications/update_service.rb
+++ b/app/services/clusters/applications/update_service.rb
@@ -15,7 +15,7 @@ module Clusters
begin
app.make_updating!
- helm_api.update(upgrade_command)
+ helm_api.update(upgrade_command(replaced_values: replaced_values))
::ClusterWaitForAppUpdateWorker.perform_in(::ClusterWaitForAppUpdateWorker::INTERVAL, app.name, app.id)
rescue Kubeclient::HttpError => e
diff --git a/spec/models/clusters/applications/prometheus_spec.rb b/spec/models/clusters/applications/prometheus_spec.rb
index e6271fb5bbd..33be30ba612 100644
--- a/spec/models/clusters/applications/prometheus_spec.rb
+++ b/spec/models/clusters/applications/prometheus_spec.rb
@@ -249,20 +249,30 @@ describe Clusters::Applications::Prometheus do
describe '#upgrade_command' do
let(:prometheus) { build(:clusters_applications_prometheus) }
- let(:values) { prometheus.values }
+ let(:replaced_values) { nil }
it 'returns an instance of Gitlab::Kubernetes::Helm::GetCommand' do
- expect(prometheus.upgrade_command(values)).to be_an_instance_of(::Gitlab::Kubernetes::Helm::UpgradeCommand)
+ expect(prometheus.upgrade_command(replaced_values: replaced_values)).to be_an_instance_of(::Gitlab::Kubernetes::Helm::UpgradeCommand)
end
it 'should be initialized with 3 arguments' do
- command = prometheus.upgrade_command(values)
+ command = prometheus.upgrade_command(replaced_values: replaced_values)
expect(command.name).to eq('prometheus')
expect(command.chart).to eq('stable/prometheus')
expect(command.version).to eq('6.7.3')
expect(command.files).to eq(prometheus.files)
end
+
+ context 'with replaced_values' do
+ let(:replaced_values) { {} }
+
+ it 'use the replaced values for values.yaml' do
+ command = prometheus.upgrade_command(replaced_values: replaced_values)
+
+ expect(command.files).to include('values.yaml': replaced_values)
+ end
+ end
end
describe '#update_in_progress?' do
diff --git a/spec/services/clusters/applications/update_service_spec.rb b/spec/services/clusters/applications/update_service_spec.rb
index 33df4eebc6a..fa43a034604 100644
--- a/spec/services/clusters/applications/update_service_spec.rb
+++ b/spec/services/clusters/applications/update_service_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
describe Clusters::Applications::UpdateService do
describe '#execute' do
let(:application) { create(:clusters_applications_prometheus, :installed) }
- let(:project) { application.cluster.project }
+ let(:project) { nil }
let(:service) { described_class.new(application, project) }
let(:helm_client) { instance_double(Gitlab::Kubernetes::Helm::Api) }