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