diff options
author | Thong Kuah <tkuah@gitlab.com> | 2019-08-07 07:40:30 +0300 |
---|---|---|
committer | Thong Kuah <tkuah@gitlab.com> | 2019-08-07 07:40:30 +0300 |
commit | 3f392969902e91f8ace18891544e9357a69bfd08 (patch) | |
tree | e568be9b9b80626b60f8e0e445ea95ee570e9523 /app/models/clusters/kubernetes_namespace.rb | |
parent | 54377159730c676bd40b64e66acfb57faf90eabf (diff) | |
parent | 36a01a88ce4c35f3d2b455c7943eeb9649b51163 (diff) |
Merge branch '52494-separate-namespace-per-project-environment-slug' into 'master'
Provide separate namespaces for each project environment
See merge request gitlab-org/gitlab-ce!30711
Diffstat (limited to 'app/models/clusters/kubernetes_namespace.rb')
-rw-r--r-- | app/models/clusters/kubernetes_namespace.rb | 31 |
1 files changed, 3 insertions, 28 deletions
diff --git a/app/models/clusters/kubernetes_namespace.rb b/app/models/clusters/kubernetes_namespace.rb index b0c4900546e..69a2b99fcb6 100644 --- a/app/models/clusters/kubernetes_namespace.rb +++ b/app/models/clusters/kubernetes_namespace.rb @@ -9,12 +9,12 @@ module Clusters belongs_to :cluster_project, class_name: 'Clusters::Project' belongs_to :cluster, class_name: 'Clusters::Cluster' belongs_to :project, class_name: '::Project' + belongs_to :environment, optional: true has_one :platform_kubernetes, through: :cluster - before_validation :set_defaults - validates :namespace, presence: true validates :namespace, uniqueness: { scope: :cluster_id } + validates :environment_id, uniqueness: { scope: [:cluster_id, :project_id] }, allow_nil: true validates :service_account_name, presence: true @@ -27,6 +27,7 @@ module Clusters algorithm: 'aes-256-cbc' scope :has_service_account_token, -> { where.not(encrypted_service_account_token: nil) } + scope :with_environment_slug, -> (slug) { joins(:environment).where(environments: { slug: slug }) } def token_name "#{namespace}-token" @@ -42,34 +43,8 @@ module Clusters end end - def set_defaults - self.namespace ||= default_platform_kubernetes_namespace - self.namespace ||= default_project_namespace - self.service_account_name ||= default_service_account_name - end - private - def default_service_account_name - return unless namespace - - "#{namespace}-service-account" - end - - def default_platform_kubernetes_namespace - platform_kubernetes&.namespace.presence - end - - def default_project_namespace - Gitlab::NamespaceSanitizer.sanitize(project_slug) if project_slug - end - - def project_slug - return unless project - - "#{project.path}-#{project.id}".downcase - end - def kubeconfig to_kubeconfig( url: api_url, |