summaryrefslogtreecommitdiff
path: root/spec/models
diff options
context:
space:
mode:
authorThong Kuah <tkuah@gitlab.com>2018-11-15 22:17:41 +1300
committerThong Kuah <tkuah@gitlab.com>2018-12-05 10:16:44 +1300
commitd54791e0942ae774876db22675cde1b54f35109d (patch)
tree0921f14ff534d058b321d008c2ff570d043d4cfc /spec/models
parent8419b7dd2b85fbe9216a31ce84d5ecb234a8b90a (diff)
downloadgitlab-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 'spec/models')
-rw-r--r--spec/models/clusters/cluster_spec.rb20
-rw-r--r--spec/models/project_spec.rb18
2 files changed, 38 insertions, 0 deletions
diff --git a/spec/models/clusters/cluster_spec.rb b/spec/models/clusters/cluster_spec.rb
index 244cd125967..229956b56b2 100644
--- a/spec/models/clusters/cluster_spec.rb
+++ b/spec/models/clusters/cluster_spec.rb
@@ -92,6 +92,26 @@ describe Clusters::Cluster do
it { is_expected.to contain_exactly(cluster) }
end
+ describe '.missing_kubernetes_namespace' do
+ let!(:cluster) { create(:cluster, :provided_by_gcp, :project) }
+ let(:project) { cluster.project }
+ let(:kubernetes_namespaces) { project.kubernetes_namespaces }
+
+ subject do
+ described_class.joins(:projects).where(projects: { id: project.id }).missing_kubernetes_namespace(kubernetes_namespaces)
+ end
+
+ it { is_expected.to contain_exactly(cluster) }
+
+ context 'kubernetes namespace exists' do
+ before do
+ create(:cluster_kubernetes_namespace, project: project, cluster: cluster)
+ end
+
+ it { is_expected.to be_empty }
+ end
+ end
+
describe 'validation' do
subject { cluster.valid? }
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 5cce8d87c96..8b1743def72 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -155,6 +155,24 @@ describe Project do
it { is_expected.to include_module(Sortable) }
end
+ describe '.missing_kubernetes_namespace' do
+ let!(:project) { create(:project) }
+ let!(:cluster) { create(:cluster, :provided_by_user, :group) }
+ let(:kubernetes_namespaces) { project.kubernetes_namespaces }
+
+ subject { described_class.missing_kubernetes_namespace(kubernetes_namespaces) }
+
+ it { is_expected.to contain_exactly(project) }
+
+ context 'kubernetes namespace exists' do
+ before do
+ create(:cluster_kubernetes_namespace, project: project, cluster: cluster)
+ end
+
+ it { is_expected.to be_empty }
+ end
+ end
+
describe 'validation' do
let!(:project) { create(:project) }