Commit b57293d4 authored by charlie ablett's avatar charlie ablett

Merge branch 'cleanup-create_project_namespace_on_project_create_ff' into 'master'

Cleanup create_project_namespace_on_project_create FF

See merge request gitlab-org/gitlab!81906
parents b8e76c78 e5561b73
...@@ -509,10 +509,6 @@ class Namespace < ApplicationRecord ...@@ -509,10 +509,6 @@ class Namespace < ApplicationRecord
Feature.enabled?(:block_issue_repositioning, self, type: :ops, default_enabled: :yaml) Feature.enabled?(:block_issue_repositioning, self, type: :ops, default_enabled: :yaml)
end end
def project_namespace_creation_enabled?
Feature.enabled?(:create_project_namespace_on_project_create, self, default_enabled: :yaml)
end
def storage_enforcement_date def storage_enforcement_date
# should return something like Date.new(2022, 02, 03) # should return something like Date.new(2022, 02, 03)
# TBD: https://gitlab.com/gitlab-org/gitlab/-/issues/350632 # TBD: https://gitlab.com/gitlab-org/gitlab/-/issues/350632
......
...@@ -506,7 +506,7 @@ class Project < ApplicationRecord ...@@ -506,7 +506,7 @@ class Project < ApplicationRecord
validates :project_feature, presence: true validates :project_feature, presence: true
validates :namespace, presence: true validates :namespace, presence: true
validates :project_namespace, presence: true, on: :create, if: -> { self.namespace && self.root_namespace.project_namespace_creation_enabled? } validates :project_namespace, presence: true, on: :create, if: -> { self.namespace }
validates :project_namespace, presence: true, on: :update, if: -> { self.project_namespace_id_changed?(to: nil) } validates :project_namespace, presence: true, on: :update, if: -> { self.project_namespace_id_changed?(to: nil) }
validates :name, uniqueness: { scope: :namespace_id } validates :name, uniqueness: { scope: :namespace_id }
validates :import_url, public_url: { schemes: ->(project) { project.persisted? ? VALID_MIRROR_PROTOCOLS : VALID_IMPORT_PROTOCOLS }, validates :import_url, public_url: { schemes: ->(project) { project.persisted? ? VALID_MIRROR_PROTOCOLS : VALID_IMPORT_PROTOCOLS },
...@@ -3018,16 +3018,15 @@ class Project < ApplicationRecord ...@@ -3018,16 +3018,15 @@ class Project < ApplicationRecord
end end
def ensure_project_namespace_in_sync def ensure_project_namespace_in_sync
# create project_namespace when project is created if create_project_namespace_on_project_create FF is enabled # create project_namespace when project is created
build_project_namespace if project_namespace_creation_enabled? build_project_namespace if project_namespace_creation_enabled?
# regardless of create_project_namespace_on_project_create FF we need # we need to keep project and project namespace in sync if there is one
# to keep project and project namespace in sync if there is one
sync_attributes(project_namespace) if sync_project_namespace? sync_attributes(project_namespace) if sync_project_namespace?
end end
def project_namespace_creation_enabled? def project_namespace_creation_enabled?
new_record? && !project_namespace && self.namespace && self.root_namespace.project_namespace_creation_enabled? new_record? && !project_namespace && self.namespace
end end
def sync_project_namespace? def sync_project_namespace?
......
---
name: create_project_namespace_on_project_create
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/70972
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/344954
milestone: '14.5'
type: development
group: group::workspace
default_enabled: true
...@@ -246,20 +246,6 @@ RSpec.describe Project, factory_default: :keep do ...@@ -246,20 +246,6 @@ RSpec.describe Project, factory_default: :keep do
expect(project.project_namespace).to be_in_sync_with_project(project) expect(project.project_namespace).to be_in_sync_with_project(project)
expect(project.reload.project_namespace.traversal_ids).to eq([project.namespace.traversal_ids, project.project_namespace.id].flatten.compact) expect(project.reload.project_namespace.traversal_ids).to eq([project.namespace.traversal_ids, project.project_namespace.id].flatten.compact)
end end
context 'with FF disabled' do
before do
stub_feature_flags(create_project_namespace_on_project_create: false)
end
it 'does not create a project namespace' do
project = build(:project, path: 'hopefully-valid-path2')
project.save!
expect(project).to be_persisted
expect(project.project_namespace).to be_nil
end
end
end end
it_behaves_like 'creates project namespace' it_behaves_like 'creates project namespace'
...@@ -306,35 +292,6 @@ RSpec.describe Project, factory_default: :keep do ...@@ -306,35 +292,6 @@ RSpec.describe Project, factory_default: :keep do
end end
end end
end end
context 'with create_project_namespace_on_project_create FF enabled' do
it_behaves_like 'project update'
it 'keeps project namespace in sync with project' do
project = create(:project)
project.update!(path: 'hopefully-valid-path1')
expect(project).to be_persisted
expect(project.project_namespace).to be_persisted
expect(project.project_namespace).to be_in_sync_with_project(project)
end
end
context 'with create_project_namespace_on_project_create FF disabled' do
before do
stub_feature_flags(create_project_namespace_on_project_create: false)
end
it_behaves_like 'project update'
it 'does not create a project namespace when project is updated' do
project = create(:project)
project.update!(path: 'hopefully-valid-path1')
expect(project).to be_persisted
expect(project.project_namespace).to be_nil
end
end
end end
context 'updating cd_cd_settings' do context 'updating cd_cd_settings' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment