Class: Gitlab::Import::ImportFailureService

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/import/import_failure_service.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(exception:, import_state: nil, project_id: nil, error_source: nil, fail_import: false, metrics: false, external_identifiers: {}) ⇒ ImportFailureService

Returns a new instance of ImportFailureService.



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/gitlab/import/import_failure_service.rb', line 26

def initialize(
  exception:,
  import_state: nil,
  project_id: nil,
  error_source: nil,
  fail_import: false,
  metrics: false,
  external_identifiers: {}
)

  if import_state.blank? && project_id.blank?
    raise ArgumentError, 'import_state OR project_id must be provided'
  end

  if project_id.blank?
    @import_state = import_state
    @project = import_state.project
  else
    @project = Project.find(project_id)
    @import_state = @project.import_state
  end

  @exception = exception
  @error_source = error_source
  @fail_import = fail_import
  @metrics = metrics
  @external_identifiers = external_identifiers
end

Class Method Details

.track(exception:, import_state: nil, project_id: nil, error_source: nil, fail_import: false, metrics: false, external_identifiers: {}) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/gitlab/import/import_failure_service.rb', line 6

def self.track(
  exception:,
  import_state: nil,
  project_id: nil,
  error_source: nil,
  fail_import: false,
  metrics: false,
  external_identifiers: {}
)
  new(
    exception: exception,
    import_state: import_state,
    project_id: project_id,
    error_source: error_source,
    fail_import: fail_import,
    metrics: metrics,
    external_identifiers: external_identifiers
  ).execute
end

Instance Method Details

#executeObject



55
56
57
58
59
60
61
# File 'lib/gitlab/import/import_failure_service.rb', line 55

def execute
  track_exception
  persist_failure.tap do
    import_state.mark_as_failed(exception.message) if fail_import
    track_metrics if metrics
  end
end