gitlab-org--gitlab-foss/lib/gitlab/phabricator_import/importer.rb
Bob Van Landuyt 589b2db06c Setup Phabricator import
This sets up all the basics for importing Phabricator tasks into
GitLab issues.

To import all tasks from a Phabricator instance into GitLab, we'll
import all of them into a new project that will have its repository
disabled.

The import is hooked into a regular ProjectImport setup, but similar
to the GitHub parallel importer takes care of all the imports itself.

In this iteration, we're importing each page of tasks in a separate
sidekiq job.

The first thing we do when requesting a new page of tasks is schedule
the next page to be imported. But to avoid deadlocks, we only allow a
single job per worker type to run at the same time.

For now we're only importing basic Issue information, this should be
extended to richer information.
2019-05-31 09:40:54 +02:00

44 lines
851 B
Ruby

# frozen_string_literal: true
module Gitlab
module PhabricatorImport
class Importer
def self.async?
true
end
def self.imports_repository?
# This does not really import a repository, but we want to skip all
# repository related tasks in the `Projects::ImportService`
true
end
def initialize(project)
@project = project
end
def execute
Gitlab::Import::SetAsyncJid.set_jid(project)
schedule_first_tasks_page
true
rescue => e
fail_import(e.message)
false
end
private
attr_reader :project
def schedule_first_tasks_page
ImportTasksWorker.schedule(project.id)
end
def fail_import(message)
project.import_state.mark_as_failed(message)
end
end
end
end