Class: Core::Filtering::ValidationJobRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/core/filtering/validation_job_runner.rb

Instance Method Summary collapse

Constructor Details

#initialize(connector_settings) ⇒ ValidationJobRunner

Returns a new instance of ValidationJobRunner.



15
16
17
18
19
20
# File 'lib/core/filtering/validation_job_runner.rb', line 15

def initialize(connector_settings)
  @connector_settings = connector_settings
  @connector_class = Connectors::REGISTRY.connector_class(connector_settings.service_type)
  @validation_finished = false
  @status = { :error => nil }
end

Instance Method Details

#executeObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/core/filtering/validation_job_runner.rb', line 22

def execute
  Utility::Logger.info("Starting a validation job for connector #{@connector_settings.id}.")

  validation_result = @connector_class.validate_filtering(@connector_settings.filtering[:draft])

  # currently only used for connectors -> DEFAULT domain can be assumed (will be changed with the integration of crawler)
  ElasticConnectorActions.update_filtering_validation(@connector_settings.id, { Core::Filtering::DEFAULT_DOMAIN => validation_result })

  @validation_finished = true
rescue StandardError => e
  Utility::ExceptionTracking.log_exception(e)
  validation_failed_result = { :state => Core::Filtering::ValidationStatus::INVALID,
                               :errors => [
                                 { :ids => [], :messages => ['Unknown problem occurred while validating, see logs for details.'] }
                               ] }
  ElasticConnectorActions.update_filtering_validation(@connector_settings.id, { DEFAULT_DOMAIN => validation_failed_result })
ensure
  if !@validation_finished && !@status[:error].present?
    @status[:error] = 'Validation thread did not finish execution. Check connector logs for more details.'
  end

  if @status[:error]
    Utility::Logger.warn("Failed to validate filtering for connector #{@connector_settings.id} with error '#{@status[:error]}'.")
  else
    Utility::Logger.info("Successfully validated filtering for connector #{@connector_settings.id}.")
  end
end