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:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/concerns/import_state/sidekiq_job_tracker.rb2
-rw-r--r--app/models/jira_import_data.rb46
-rw-r--r--app/models/jira_import_state.rb11
-rw-r--r--app/models/project.rb14
4 files changed, 15 insertions, 58 deletions
diff --git a/app/models/concerns/import_state/sidekiq_job_tracker.rb b/app/models/concerns/import_state/sidekiq_job_tracker.rb
index 6bb07b7c06a..55f171d158d 100644
--- a/app/models/concerns/import_state/sidekiq_job_tracker.rb
+++ b/app/models/concerns/import_state/sidekiq_job_tracker.rb
@@ -16,7 +16,7 @@ module ImportState
end
def self.jid_by(project_id:, status:)
- select(:jid).with_status(status).find_by(project_id: project_id)
+ select(:jid).where(status: status).find_by(project_id: project_id)
end
end
end
diff --git a/app/models/jira_import_data.rb b/app/models/jira_import_data.rb
deleted file mode 100644
index b39ca7290be..00000000000
--- a/app/models/jira_import_data.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-# frozen_string_literal: true
-
-class JiraImportData < ProjectImportData
- JiraProjectDetails = Struct.new(:key, :scheduled_at, :scheduled_by)
-
- FORCE_IMPORT_KEY = 'force-import'
-
- def projects
- return [] unless data
-
- projects = data.dig('jira', 'projects')&.map do |p|
- JiraProjectDetails.new(p['key'], p['scheduled_at'], p['scheduled_by'])
- end
-
- projects&.sort_by { |jp| jp.scheduled_at } || []
- end
-
- def <<(project)
- self.data ||= { 'jira' => { 'projects' => [] } }
- self.data['jira'] ||= { 'projects' => [] }
- self.data['jira']['projects'] = [] if data['jira']['projects'].blank? || !data['jira']['projects'].is_a?(Array)
-
- self.data['jira']['projects'] << project.to_h
- self.data.deep_stringify_keys!
- end
-
- def force_import!
- self.data ||= {}
- self.data.deep_merge!({ 'jira' => { FORCE_IMPORT_KEY => true } })
- self.data.deep_stringify_keys!
- end
-
- def force_import?
- !!data&.dig('jira', FORCE_IMPORT_KEY) && !projects.blank?
- end
-
- def finish_import!
- return if data&.dig('jira', FORCE_IMPORT_KEY).nil?
-
- data['jira'].delete(FORCE_IMPORT_KEY)
- end
-
- def current_project
- projects.last
- end
-end
diff --git a/app/models/jira_import_state.rb b/app/models/jira_import_state.rb
index 713feec013f..ec1b8f03d36 100644
--- a/app/models/jira_import_state.rb
+++ b/app/models/jira_import_state.rb
@@ -22,6 +22,8 @@ class JiraImportState < ApplicationRecord
message: _('Cannot have multiple Jira imports running at the same time')
}
+ alias_method :scheduled_by, :user
+
state_machine :status, initial: :initial do
event :schedule do
transition initial: :scheduled
@@ -46,6 +48,11 @@ class JiraImportState < ApplicationRecord
end
end
+ before_transition any => :finished do |state, _|
+ InternalId.flush_records!(project: state.project)
+ state.project.update_project_counter_caches
+ end
+
after_transition any => :finished do |state, _|
if state.jid.present?
Gitlab::SidekiqStatus.unset(state.jid)
@@ -67,4 +74,8 @@ class JiraImportState < ApplicationRecord
def in_progress?
scheduled? || started?
end
+
+ def non_initial?
+ !initial?
+ end
end
diff --git a/app/models/project.rb b/app/models/project.rb
index 15b8d5db214..1f968cdfad1 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -859,9 +859,7 @@ class Project < ApplicationRecord
end
def jira_import_status
- return import_status if jira_force_import?
-
- import_data&.becomes(JiraImportData)&.projects.blank? ? 'none' : 'finished'
+ latest_jira_import&.status || 'initial'
end
def human_import_status_name
@@ -875,8 +873,6 @@ class Project < ApplicationRecord
elsif gitlab_project_import?
# Do not retry on Import/Export until https://gitlab.com/gitlab-org/gitlab-foss/issues/26189 is solved.
RepositoryImportWorker.set(retry: false).perform_async(self.id)
- elsif jira_import?
- Gitlab::JiraImport::Stage::StartImportWorker.perform_async(self.id)
else
RepositoryImportWorker.perform_async(self.id)
end
@@ -909,7 +905,7 @@ class Project < ApplicationRecord
# This method is overridden in EE::Project model
def remove_import_data
- import_data&.destroy unless jira_import?
+ import_data&.destroy
end
def ci_config_path=(value)
@@ -972,11 +968,7 @@ class Project < ApplicationRecord
end
def jira_import?
- import_type == 'jira' && Feature.enabled?(:jira_issue_import, self)
- end
-
- def jira_force_import?
- jira_import? && import_data&.becomes(JiraImportData)&.force_import?
+ import_type == 'jira' && latest_jira_import.present? && Feature.enabled?(:jira_issue_import, self)
end
def gitlab_project_import?