BigW Consortium Gitlab

Commit 6e782aa3 by Yorick Peterse Committed by Robert Speicher

Merge branch '43802-ensure-foreign-keys-on-clusters-applications' into 'master'

Resolve "Add missing foreign key constraint in clusters_applications_ingress" Closes #43802 See merge request gitlab-org/gitlab-ce!17488
parent 0528fe99
---
title: Ensure foreign keys on clusters applications
merge_request: 17488
author:
type: other
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab.
class EnsureForeignKeysOnClustersApplications < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
disable_ddl_transaction!
def up
existing = Clusters::Cluster
.joins(:application_ingress)
.where('clusters.id = clusters_applications_ingress.cluster_id')
Clusters::Applications::Ingress.where('NOT EXISTS (?)', existing).in_batches do |batch|
batch.delete_all
end
unless foreign_keys_for(:clusters_applications_ingress, :cluster_id).any?
add_concurrent_foreign_key :clusters_applications_ingress, :clusters,
column: :cluster_id,
on_delete: :cascade
end
existing = Clusters::Cluster
.joins(:application_prometheus)
.where('clusters.id = clusters_applications_prometheus.cluster_id')
Clusters::Applications::Ingress.where('NOT EXISTS (?)', existing).in_batches do |batch|
batch.delete_all
end
unless foreign_keys_for(:clusters_applications_prometheus, :cluster_id).any?
add_concurrent_foreign_key :clusters_applications_prometheus, :clusters,
column: :cluster_id,
on_delete: :cascade
end
end
def down
if foreign_keys_for(:clusters_applications_ingress, :cluster_id).any?
remove_foreign_key :clusters_applications_ingress, column: :cluster_id
end
if foreign_keys_for(:clusters_applications_prometheus, :cluster_id).any?
remove_foreign_key :clusters_applications_prometheus, column: :cluster_id
end
end
end
......@@ -2032,6 +2032,8 @@ ActiveRecord::Schema.define(version: 20180308052825) do
add_foreign_key "cluster_providers_gcp", "clusters", on_delete: :cascade
add_foreign_key "clusters", "users", on_delete: :nullify
add_foreign_key "clusters_applications_helm", "clusters", on_delete: :cascade
add_foreign_key "clusters_applications_ingress", "clusters", name: "fk_753a7b41c1", on_delete: :cascade
add_foreign_key "clusters_applications_prometheus", "clusters", name: "fk_557e773639", on_delete: :cascade
add_foreign_key "clusters_applications_runners", "ci_runners", column: "runner_id", name: "fk_02de2ded36", on_delete: :nullify
add_foreign_key "clusters_applications_runners", "clusters", on_delete: :cascade
add_foreign_key "container_repositories", "projects"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment