summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiger <twatson@gitlab.com>2019-05-31 14:58:47 -0500
committerTiger <twatson@gitlab.com>2019-06-12 13:56:39 +1000
commit68e625373fecd113ccf6a030413983e1d7fd84c1 (patch)
treeae2fa0599249148ee044d6ce4b2a59ab44a72680
parent20bdbc3d0cd716ba49e64db37254ed249cd0c683 (diff)
downloadgitlab-ce-52494-add-environment-id-to-clusters-kubernetes-namespaces.tar.gz
Add environment_id to clusters_kubernetes_namespaces52494-add-environment-id-to-clusters-kubernetes-namespaces
Enables support for creating a Kubernetes namespace per deployed environment while maintaining backwards compatibility with environments that were deployed to when a single namespace was used for all environments. https://gitlab.com/gitlab-org/gitlab-ce/issues/52494
-rw-r--r--changelogs/unreleased/52494-add-environment-id-to-clusters-kubernetes-namespaces.yml5
-rw-r--r--db/migrate/20190531191040_add_environment_id_to_clusters_kubernetes_namespaces.rb15
-rw-r--r--db/migrate/20190531191129_index_clusters_kubernetes_namespaces_on_cluster_id_and_environment_id.rb22
-rw-r--r--db/migrate/20190531191429_remove_redundant_clusters_kubernetes_namespaces_index.rb20
-rw-r--r--db/schema.rb5
5 files changed, 66 insertions, 1 deletions
diff --git a/changelogs/unreleased/52494-add-environment-id-to-clusters-kubernetes-namespaces.yml b/changelogs/unreleased/52494-add-environment-id-to-clusters-kubernetes-namespaces.yml
new file mode 100644
index 00000000000..c819bad43c4
--- /dev/null
+++ b/changelogs/unreleased/52494-add-environment-id-to-clusters-kubernetes-namespaces.yml
@@ -0,0 +1,5 @@
+---
+title: Add environment_id to clusters_kubernetes_namespaces
+merge_request: 29038
+author:
+type: other
diff --git a/db/migrate/20190531191040_add_environment_id_to_clusters_kubernetes_namespaces.rb b/db/migrate/20190531191040_add_environment_id_to_clusters_kubernetes_namespaces.rb
new file mode 100644
index 00000000000..c530225c9bc
--- /dev/null
+++ b/db/migrate/20190531191040_add_environment_id_to_clusters_kubernetes_namespaces.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+# See http://doc.gitlab.com/ce/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class AddEnvironmentIdToClustersKubernetesNamespaces < ActiveRecord::Migration[5.1]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def change
+ add_reference :clusters_kubernetes_namespaces, :environment,
+ index: true, type: :integer, foreign_key: { on_delete: :cascade }
+ end
+end
diff --git a/db/migrate/20190531191129_index_clusters_kubernetes_namespaces_on_cluster_id_and_environment_id.rb b/db/migrate/20190531191129_index_clusters_kubernetes_namespaces_on_cluster_id_and_environment_id.rb
new file mode 100644
index 00000000000..90643ece871
--- /dev/null
+++ b/db/migrate/20190531191129_index_clusters_kubernetes_namespaces_on_cluster_id_and_environment_id.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+# See http://doc.gitlab.com/ce/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class IndexClustersKubernetesNamespacesOnClusterIdAndEnvironmentId < ActiveRecord::Migration[5.1]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_NAME = 'index_clusters_kubernetes_namespaces_on_cluster_and_environment'
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :clusters_kubernetes_namespaces, [:cluster_id, :environment_id],
+ unique: true, name: INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index :clusters_kubernetes_namespaces, name: INDEX_NAME
+ end
+end
diff --git a/db/migrate/20190531191429_remove_redundant_clusters_kubernetes_namespaces_index.rb b/db/migrate/20190531191429_remove_redundant_clusters_kubernetes_namespaces_index.rb
new file mode 100644
index 00000000000..60410d840b4
--- /dev/null
+++ b/db/migrate/20190531191429_remove_redundant_clusters_kubernetes_namespaces_index.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+# See http://doc.gitlab.com/ce/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class RemoveRedundantClustersKubernetesNamespacesIndex < ActiveRecord::Migration[5.1]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ remove_concurrent_index :clusters_kubernetes_namespaces, :cluster_id
+ end
+
+ def down
+ add_concurrent_index :clusters_kubernetes_namespaces, :cluster_id
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 1755730bb72..63ffff00df8 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -794,9 +794,11 @@ ActiveRecord::Schema.define(version: 20190611161641) do
t.string "encrypted_service_account_token_iv"
t.string "namespace", null: false
t.string "service_account_name"
+ t.integer "environment_id"
+ t.index ["cluster_id", "environment_id"], name: "index_clusters_kubernetes_namespaces_on_cluster_and_environment", unique: true, using: :btree
t.index ["cluster_id", "namespace"], name: "kubernetes_namespaces_cluster_and_namespace", unique: true, using: :btree
- t.index ["cluster_id"], name: "index_clusters_kubernetes_namespaces_on_cluster_id", using: :btree
t.index ["cluster_project_id"], name: "index_clusters_kubernetes_namespaces_on_cluster_project_id", using: :btree
+ t.index ["environment_id"], name: "index_clusters_kubernetes_namespaces_on_environment_id", using: :btree
t.index ["project_id"], name: "index_clusters_kubernetes_namespaces_on_project_id", using: :btree
end
@@ -2509,6 +2511,7 @@ ActiveRecord::Schema.define(version: 20190611161641) do
add_foreign_key "clusters_applications_runners", "clusters", on_delete: :cascade
add_foreign_key "clusters_kubernetes_namespaces", "cluster_projects", on_delete: :nullify
add_foreign_key "clusters_kubernetes_namespaces", "clusters", on_delete: :cascade
+ add_foreign_key "clusters_kubernetes_namespaces", "environments", on_delete: :cascade
add_foreign_key "clusters_kubernetes_namespaces", "projects", on_delete: :nullify
add_foreign_key "container_repositories", "projects"
add_foreign_key "deploy_keys_projects", "projects", name: "fk_58a901ca7e", on_delete: :cascade