diff options
author | Thong Kuah <tkuah@gitlab.com> | 2018-11-15 22:17:41 +1300 |
---|---|---|
committer | Thong Kuah <tkuah@gitlab.com> | 2018-12-05 10:16:44 +1300 |
commit | d54791e0942ae774876db22675cde1b54f35109d (patch) | |
tree | 0921f14ff534d058b321d008c2ff570d043d4cfc /app/models/clusters/cluster.rb | |
parent | 8419b7dd2b85fbe9216a31ce84d5ecb234a8b90a (diff) | |
download | gitlab-ce-d54791e0942ae774876db22675cde1b54f35109d.tar.gz |
Create k8s namespace for project in group clusters
AFAIK the only relevant place is Projects::CreateService, this gets
called when user creates a new project, forks a new project and does
those things via the api.
Also create k8s namespace for new group hierarchy
when transferring project between groups
Uses new Refresh service to create k8s namespaces
- Ensure we use Cluster#cluster_project
If a project has multiple clusters (EE), using Project#cluster_project
is not guaranteed to return the cluster_project for this cluster. So
switch to using Cluster#cluster_project - at this stage a cluster can
only have 1 cluster_project.
Also, remove rescue so that sidekiq can retry
Diffstat (limited to 'app/models/clusters/cluster.rb')
-rw-r--r-- | app/models/clusters/cluster.rb | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/app/models/clusters/cluster.rb b/app/models/clusters/cluster.rb index 54314f69c3d..73cae8d3b25 100644 --- a/app/models/clusters/cluster.rb +++ b/app/models/clusters/cluster.rb @@ -87,6 +87,12 @@ module Clusters scope :default_environment, -> { where(environment_scope: DEFAULT_ENVIRONMENT) } + scope :missing_kubernetes_namespace, -> (kubernetes_namespaces) do + subquery = kubernetes_namespaces.select('1').where('clusters_kubernetes_namespaces.cluster_id = clusters.id') + + where('NOT EXISTS (?)', subquery) + end + # Returns an ordered list of group clusters order from clusters of closest # group up to furthest ancestor group def self.ordered_group_clusters_for_project(project_id) @@ -161,11 +167,17 @@ module Clusters platform_kubernetes.kubeclient if kubernetes? end - def find_or_initialize_kubernetes_namespace(cluster_project) - kubernetes_namespaces.find_or_initialize_by( - project: cluster_project.project, - cluster_project: cluster_project - ) + def find_or_initialize_kubernetes_namespace_for_project(project) + if project_type? + kubernetes_namespaces.find_or_initialize_by( + project: project, + cluster_project: cluster_project + ) + else + kubernetes_namespaces.find_or_initialize_by( + project: project + ) + end end def allow_user_defined_namespace? |