Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-03-18 15:09:13 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-03-18 15:09:13 +0300
commit1363ca12f1f07c634647cf55c4c16b7401098673 (patch)
treed932caf09c8148322edb51ae954ed159ff7d00f8 /app/workers/gitlab
parent6763d2787670bc03a36a8eb601703e88fc70dece (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/workers/gitlab')
-rw-r--r--app/workers/gitlab/github_import/advance_stage_worker.rb4
-rw-r--r--app/workers/gitlab/jira_import/advance_stage_worker.rb26
-rw-r--r--app/workers/gitlab/jira_import/stage/finish_import_worker.rb20
-rw-r--r--app/workers/gitlab/jira_import/stage/import_attachments_worker.rb22
-rw-r--r--app/workers/gitlab/jira_import/stage/import_issues_worker.rb22
-rw-r--r--app/workers/gitlab/jira_import/stage/import_labels_worker.rb20
-rw-r--r--app/workers/gitlab/jira_import/stage/import_notes_worker.rb22
-rw-r--r--app/workers/gitlab/jira_import/stage/start_import_worker.rb44
8 files changed, 178 insertions, 2 deletions
diff --git a/app/workers/gitlab/github_import/advance_stage_worker.rb b/app/workers/gitlab/github_import/advance_stage_worker.rb
index 8fbf88a1762..8bbfb10ed6e 100644
--- a/app/workers/gitlab/github_import/advance_stage_worker.rb
+++ b/app/workers/gitlab/github_import/advance_stage_worker.rb
@@ -13,8 +13,6 @@ module Gitlab
sidekiq_options dead: false
feature_category :importers
- private
-
# The known importer stages and their corresponding Sidekiq workers.
STAGES = {
issues_and_diff_notes: Stage::ImportIssuesAndDiffNotesWorker,
@@ -23,6 +21,8 @@ module Gitlab
finish: Stage::FinishImportWorker
}.freeze
+ private
+
def next_stage_worker(next_stage)
STAGES.fetch(next_stage.to_sym)
end
diff --git a/app/workers/gitlab/jira_import/advance_stage_worker.rb b/app/workers/gitlab/jira_import/advance_stage_worker.rb
new file mode 100644
index 00000000000..1b6fc54151e
--- /dev/null
+++ b/app/workers/gitlab/jira_import/advance_stage_worker.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module JiraImport
+ class AdvanceStageWorker # rubocop:disable Scalability/IdempotentWorker
+ include ApplicationWorker
+ include QueueOptions
+ include ::Gitlab::Import::AdvanceStage
+
+ # The known importer stages and their corresponding Sidekiq workers.
+ STAGES = {
+ labels: Gitlab::JiraImport::Stage::ImportLabelsWorker,
+ issues: Gitlab::JiraImport::Stage::ImportIssuesWorker,
+ attachments: Gitlab::JiraImport::Stage::ImportAttachmentsWorker,
+ notes: Gitlab::JiraImport::Stage::ImportNotesWorker,
+ finish: Gitlab::JiraImport::Stage::FinishImportWorker
+ }.freeze
+
+ private
+
+ def next_stage_worker(next_stage)
+ STAGES.fetch(next_stage.to_sym)
+ end
+ end
+ end
+end
diff --git a/app/workers/gitlab/jira_import/stage/finish_import_worker.rb b/app/workers/gitlab/jira_import/stage/finish_import_worker.rb
new file mode 100644
index 00000000000..5b1661d68c6
--- /dev/null
+++ b/app/workers/gitlab/jira_import/stage/finish_import_worker.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module JiraImport
+ module Stage
+ class FinishImportWorker # rubocop:disable Scalability/IdempotentWorker
+ include Gitlab::JiraImport::ImportWorker
+
+ private
+
+ def import(project)
+ project.after_import
+ ensure
+ project.import_data.becomes(JiraImportData).finish_import!
+ project.import_data.save!
+ end
+ end
+ end
+ end
+end
diff --git a/app/workers/gitlab/jira_import/stage/import_attachments_worker.rb b/app/workers/gitlab/jira_import/stage/import_attachments_worker.rb
new file mode 100644
index 00000000000..3b209a279b5
--- /dev/null
+++ b/app/workers/gitlab/jira_import/stage/import_attachments_worker.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module JiraImport
+ module Stage
+ class ImportAttachmentsWorker # rubocop:disable Scalability/IdempotentWorker
+ include Gitlab::JiraImport::ImportWorker
+
+ private
+
+ def import(project)
+ # fake a attahcments import workers for now.
+ # new job waiter will have zero jobs_remaining by default, so it will just pass on to next stage
+ fake_waiter = JobWaiter.new
+
+ project.import_state.refresh_jid_expiration
+ Gitlab::JiraImport::AdvanceStageWorker.perform_async(project.id, { fake_waiter.key => fake_waiter.jobs_remaining }, :notes)
+ end
+ end
+ end
+ end
+end
diff --git a/app/workers/gitlab/jira_import/stage/import_issues_worker.rb b/app/workers/gitlab/jira_import/stage/import_issues_worker.rb
new file mode 100644
index 00000000000..79ed8e1f2da
--- /dev/null
+++ b/app/workers/gitlab/jira_import/stage/import_issues_worker.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module JiraImport
+ module Stage
+ class ImportIssuesWorker # rubocop:disable Scalability/IdempotentWorker
+ include Gitlab::JiraImport::ImportWorker
+
+ private
+
+ def import(project)
+ # fake issues import workers for now
+ # new job waiter will have zero jobs_remaining by default, so it will just pass on to next stage
+ jobs_waiter = JobWaiter.new
+ project.import_state.refresh_jid_expiration
+
+ Gitlab::JiraImport::AdvanceStageWorker.perform_async(project.id, { jobs_waiter.key => jobs_waiter.jobs_remaining }, :attachments)
+ end
+ end
+ end
+ end
+end
diff --git a/app/workers/gitlab/jira_import/stage/import_labels_worker.rb b/app/workers/gitlab/jira_import/stage/import_labels_worker.rb
new file mode 100644
index 00000000000..b96bb1bbdda
--- /dev/null
+++ b/app/workers/gitlab/jira_import/stage/import_labels_worker.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module JiraImport
+ module Stage
+ class ImportLabelsWorker # rubocop:disable Scalability/IdempotentWorker
+ include Gitlab::JiraImport::ImportWorker
+
+ private
+
+ def import(project)
+ # fake labels import workers for now
+ # new job waiter will have zero jobs_remaining by default, so it will just pass on to next stage
+ fake_waiter = JobWaiter.new
+ Gitlab::JiraImport::AdvanceStageWorker.perform_async(project.id, { fake_waiter.key => fake_waiter.jobs_remaining }, :issues)
+ end
+ end
+ end
+ end
+end
diff --git a/app/workers/gitlab/jira_import/stage/import_notes_worker.rb b/app/workers/gitlab/jira_import/stage/import_notes_worker.rb
new file mode 100644
index 00000000000..9eef0d31a8c
--- /dev/null
+++ b/app/workers/gitlab/jira_import/stage/import_notes_worker.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module JiraImport
+ module Stage
+ class ImportNotesWorker # rubocop:disable Scalability/IdempotentWorker
+ include Gitlab::JiraImport::ImportWorker
+
+ private
+
+ def import(project)
+ # fake notes import workers for now
+ # new job waiter will have zero jobs_remaining by default, so it will just pass on to next stage
+ jobs_waiter = JobWaiter.new
+ project.import_state.refresh_jid_expiration
+
+ Gitlab::JiraImport::AdvanceStageWorker.perform_async(project.id, { jobs_waiter.key => jobs_waiter.jobs_remaining }, :finish)
+ end
+ end
+ end
+ end
+end
diff --git a/app/workers/gitlab/jira_import/stage/start_import_worker.rb b/app/workers/gitlab/jira_import/stage/start_import_worker.rb
new file mode 100644
index 00000000000..8abbfab647b
--- /dev/null
+++ b/app/workers/gitlab/jira_import/stage/start_import_worker.rb
@@ -0,0 +1,44 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module JiraImport
+ module Stage
+ class StartImportWorker # rubocop:disable Scalability/IdempotentWorker
+ include ApplicationWorker
+ include ProjectStartImport
+ include ProjectImportOptions
+ include Gitlab::JiraImport::QueueOptions
+
+ attr_reader :project
+
+ def perform(project_id)
+ @project = Project.find_by(id: project_id) # rubocop: disable CodeReuse/ActiveRecord
+
+ return unless start_import
+
+ Gitlab::Import::SetAsyncJid.set_jid(project)
+
+ Gitlab::JiraImport::Stage::ImportLabelsWorker.perform_async(project.id)
+ end
+
+ private
+
+ def start_import
+ return false unless project
+ return false if Feature.disabled?(:jira_issue_import, project)
+ return true if start(project.import_state)
+
+ Gitlab::Import::Logger.info(
+ {
+ project_id: project.id,
+ project_path: project.full_path,
+ state: project&.import_status,
+ message: 'inconsistent state while importing'
+ }
+ )
+ false
+ end
+ end
+ end
+ end
+end