summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Fargher <proglottis@gmail.com>2019-05-24 09:59:32 +0100
committerJames Fargher <proglottis@gmail.com>2019-05-30 13:22:50 +0100
commitc234e7312357388c1e088876772ecae22cf06297 (patch)
tree2ae5f037b7cd7429d92ed02ad93fc9a178ec1fca
parent1a25ad3e578c9f3a0682551b7bef0a554c2763b8 (diff)
downloadgitlab-ce-migrate_k8s_service_integration.tar.gz
When an instance cluster already exists migrate disabledmigrate_k8s_service_integration
Assume that if an instance level cluster already exists, then the KubernetesService was not being used, but allow the admin to re-enable it if required
-rw-r--r--db/post_migrate/20190517153211_migrate_k8s_service_integration.rb4
-rw-r--r--spec/migrations/migrate_k8s_service_integration_spec.rb37
2 files changed, 40 insertions, 1 deletions
diff --git a/db/post_migrate/20190517153211_migrate_k8s_service_integration.rb b/db/post_migrate/20190517153211_migrate_k8s_service_integration.rb
index f9f13d64be9..4bd04edb239 100644
--- a/db/post_migrate/20190517153211_migrate_k8s_service_integration.rb
+++ b/db/post_migrate/20190517153211_migrate_k8s_service_integration.rb
@@ -75,11 +75,13 @@ class MigrateK8sServiceIntegration < ActiveRecord::Migration[5.1]
end
def up
+ has_instance_cluster = Cluster.instance_type.where(enabled: true).exists?
+
MigrateK8sServiceIntegration::Service.kubernetes_service_templates.find_each do |service|
next unless service.api_url && service.token
MigrateK8sServiceIntegration::Cluster.create!(
- enabled: service.active,
+ enabled: !has_instance_cluster && service.active,
managed: false,
name: 'KubernetesService',
cluster_type: 'instance_type',
diff --git a/spec/migrations/migrate_k8s_service_integration_spec.rb b/spec/migrations/migrate_k8s_service_integration_spec.rb
index 9195db55e86..4dd0c09632a 100644
--- a/spec/migrations/migrate_k8s_service_integration_spec.rb
+++ b/spec/migrations/migrate_k8s_service_integration_spec.rb
@@ -104,6 +104,43 @@ describe MigrateK8sServiceIntegration, :migration do
expect(platform.token).to eq('token-sample')
end
end
+
+ context 'when an instance cluster already exists' do
+ let!(:service) do
+ MigrateK8sServiceIntegration::Service.create!(
+ active: true,
+ template: true,
+ category: 'deployment',
+ type: 'KubernetesService',
+ properties: "{\"namespace\":\"prod\",\"api_url\":\"https://sample.kubernetes.com\",\"ca_pem\":\"ca_pem-sample\",\"token\":\"token-sample\"}"
+ )
+ end
+
+ let!(:existing_cluster) do
+ MigrateK8sServiceIntegration::Cluster.create!(
+ name: 'test-cluster',
+ cluster_type: :instance_type,
+ managed: true,
+ provider_type: :user,
+ platform_type: :kubernetes
+ )
+ end
+ let(:new_cluster) { MigrateK8sServiceIntegration::Cluster.instance_type.last! }
+ let(:platform) { new_cluster.platform_kubernetes }
+
+ it 'migrates the KubernetesService template to disabled Platform::Kubernetes' do
+ expect { migrate! }.to change { MigrateK8sServiceIntegration::Cluster.count }.by(1)
+
+ expect(new_cluster).not_to be_enabled
+ expect(new_cluster).to be_user
+ expect(new_cluster).not_to be_managed
+ expect(new_cluster.environment_scope).to eq('*')
+ expect(platform.api_url).to eq('https://sample.kubernetes.com')
+ expect(platform.ca_cert).to eq('ca_pem-sample')
+ expect(platform.namespace).to eq('prod')
+ expect(platform.token).to eq('token-sample')
+ end
+ end
end
context 'non-template service' do