From a17b3d270c481dad35fe63905fa45f5f97845bbc Mon Sep 17 00:00:00 2001 From: Vasilii Iakliushin <viakliushin@gitlab.com> Date: Tue, 8 Jun 2021 17:21:51 +0200 Subject: [PATCH] Move prometheus service creation to the background job Remove feature flag `projects_post_creation_worker` Changelog: other --- app/services/projects/create_service.rb | 25 +------- .../projects_post_creation_worker.yml | 8 --- spec/services/projects/create_service_spec.rb | 63 ------------------- 3 files changed, 1 insertion(+), 95 deletions(-) delete mode 100644 config/feature_flags/development/projects_post_creation_worker.yml diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index 5a743804962..9a5c260e488 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -108,11 +108,7 @@ module Projects current_user.invalidate_personal_projects_count - if Feature.enabled?(:projects_post_creation_worker, current_user, default_enabled: :yaml) - Projects::PostCreationWorker.perform_async(@project.id) - else - create_prometheus_integration - end + Projects::PostCreationWorker.perform_async(@project.id) create_readme if @initialize_with_readme end @@ -191,25 +187,6 @@ module Projects @project end - # Deprecated: https://gitlab.com/gitlab-org/gitlab/-/issues/326665 - def create_prometheus_integration - integration = @project.find_or_initialize_integration(::Integrations::Prometheus.to_param) - - # If the service has already been inserted in the database, that - # means it came from a template, and there's nothing more to do. - return if integration.persisted? - - if integration.prometheus_available? - integration.save! - else - @project.prometheus_integration = nil - end - - rescue ActiveRecord::RecordInvalid => e - Gitlab::ErrorTracking.track_exception(e, extra: { project_id: project.id }) - @project.prometheus_integration = nil - end - def set_project_name_from_path # if both name and path set - everything is ok return if @project.name.present? && @project.path.present? diff --git a/config/feature_flags/development/projects_post_creation_worker.yml b/config/feature_flags/development/projects_post_creation_worker.yml deleted file mode 100644 index 5d07e71f907..00000000000 --- a/config/feature_flags/development/projects_post_creation_worker.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: projects_post_creation_worker -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58119 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/326665 -milestone: '13.11' -type: development -group: group::source code -default_enabled: true diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb index e99ac8bb3d9..defeadb479a 100644 --- a/spec/services/projects/create_service_spec.rb +++ b/spec/services/projects/create_service_spec.rb @@ -705,69 +705,6 @@ RSpec.describe Projects::CreateService, '#execute' do create_project(user, opts) end - context 'when project has access to shared integration' do - before do - stub_feature_flags(projects_post_creation_worker: false) - end - - context 'Prometheus integration is shared via group cluster' do - let(:cluster) { create(:cluster, :group, groups: [group]) } - let(:group) do - create(:group).tap do |group| - group.add_owner(user) - end - end - - before do - create(:clusters_integrations_prometheus, cluster: cluster) - end - - it 'creates Integrations::Prometheus record', :aggregate_failures do - project = create_project(user, opts.merge!(namespace_id: group.id)) - integration = project.prometheus_integration - - expect(integration.active).to be true - expect(integration.manual_configuration?).to be false - expect(integration.persisted?).to be true - end - end - - context 'Prometheus integration is shared via instance cluster' do - let(:cluster) { create(:cluster, :instance) } - - before do - create(:clusters_integrations_prometheus, cluster: cluster) - end - - it 'creates Integrations::Prometheus record', :aggregate_failures do - project = create_project(user, opts) - integration = project.prometheus_integration - - expect(integration.active).to be true - expect(integration.manual_configuration?).to be false - expect(integration.persisted?).to be true - end - - it 'cleans invalid record and logs warning', :aggregate_failures do - invalid_integration_record = build(:prometheus_integration, properties: { api_url: nil, manual_configuration: true }.to_json) - allow(::Integrations::Prometheus).to receive(:new).and_return(invalid_integration_record) - - expect(Gitlab::ErrorTracking).to receive(:track_exception).with(an_instance_of(ActiveRecord::RecordInvalid), include(extra: { project_id: a_kind_of(Integer) })) - project = create_project(user, opts) - - expect(project.prometheus_integration).to be_nil - end - end - - context 'shared Prometheus integration is not available' do - it 'does not persist Integrations::Prometheus record' do - project = create_project(user, opts) - - expect(project.prometheus_integration).to be_nil - end - end - end - context 'with external authorization enabled' do before do enable_external_authorization_service_check -- 2.30.9