Merge branch 'ac-k8s-namespace-validator' into 'master'
Sanitize k8s default_namespace Closes #38692 See merge request gitlab-org/gitlab-ce!15053
This commit is contained in:
commit
172ebcb8bb
3 changed files with 32 additions and 34 deletions
|
@ -153,7 +153,10 @@ class KubernetesService < DeploymentService
|
|||
end
|
||||
|
||||
def default_namespace
|
||||
"#{project.path}-#{project.id}" if project.present?
|
||||
return unless project
|
||||
|
||||
slug = "#{project.path}-#{project.id}".downcase
|
||||
slug.gsub(/[^-a-z0-9]/, '-').gsub(/^-+/, '')
|
||||
end
|
||||
|
||||
def build_kubeclient!(api_path: 'api', api_version: 'v1')
|
||||
|
|
6
changelogs/unreleased/mr-14642.yml
Normal file
6
changelogs/unreleased/mr-14642.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
title: Auto Devops kubernetes default namespace is now correctly built out of gitlab
|
||||
project group-name
|
||||
merge_request: 14642
|
||||
author: Mircea Danila Dumitrescu
|
||||
type: fixed
|
|
@ -99,8 +99,25 @@ describe KubernetesService, :use_clean_rails_memory_store_caching do
|
|||
describe '#actual_namespace' do
|
||||
subject { service.actual_namespace }
|
||||
|
||||
it "returns the default namespace" do
|
||||
is_expected.to eq(service.send(:default_namespace))
|
||||
shared_examples 'a correctly formatted namespace' do
|
||||
it 'returns a valid Kubernetes namespace name' do
|
||||
expect(subject).to match(Gitlab::Regex.kubernetes_namespace_regex)
|
||||
expect(subject).to eq(expected_namespace)
|
||||
end
|
||||
end
|
||||
|
||||
it_behaves_like 'a correctly formatted namespace' do
|
||||
let(:expected_namespace) { service.send(:default_namespace) }
|
||||
end
|
||||
|
||||
context 'when the project path contains forbidden characters' do
|
||||
before do
|
||||
project.path = '-a_Strange.Path--forSure'
|
||||
end
|
||||
|
||||
it_behaves_like 'a correctly formatted namespace' do
|
||||
let(:expected_namespace) { "a-strange-path--forsure-#{project.id}" }
|
||||
end
|
||||
end
|
||||
|
||||
context 'when namespace is specified' do
|
||||
|
@ -108,8 +125,8 @@ describe KubernetesService, :use_clean_rails_memory_store_caching do
|
|||
service.namespace = 'my-namespace'
|
||||
end
|
||||
|
||||
it "returns the user-namespace" do
|
||||
is_expected.to eq('my-namespace')
|
||||
it_behaves_like 'a correctly formatted namespace' do
|
||||
let(:expected_namespace) { 'my-namespace' }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -118,35 +135,7 @@ describe KubernetesService, :use_clean_rails_memory_store_caching do
|
|||
service.project = nil
|
||||
end
|
||||
|
||||
it "does not return namespace" do
|
||||
is_expected.to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#actual_namespace' do
|
||||
subject { service.actual_namespace }
|
||||
|
||||
it "returns the default namespace" do
|
||||
is_expected.to eq(service.send(:default_namespace))
|
||||
end
|
||||
|
||||
context 'when namespace is specified' do
|
||||
before do
|
||||
service.namespace = 'my-namespace'
|
||||
end
|
||||
|
||||
it "returns the user-namespace" do
|
||||
is_expected.to eq('my-namespace')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when service is not assigned to project' do
|
||||
before do
|
||||
service.project = nil
|
||||
end
|
||||
|
||||
it "does not return namespace" do
|
||||
it 'does not return namespace' do
|
||||
is_expected.to be_nil
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue