Class: Core::ConnectorSettings

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

Defined Under Namespace

Classes: ConnectorNotFoundError

Constant Summary collapse

DEFAULT_REQUEST_PIPELINE =
'ent-search-generic-ingestion'
DEFAULT_EXTRACT_BINARY_CONTENT =
true
DEFAULT_REDUCE_WHITESPACE =
true
DEFAULT_RUN_ML_INFERENCE =
true
DEFAULT_PAGE_SIZE =
100

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(es_response, connectors_meta) ⇒ ConnectorSettings

Returns a new instance of ConnectorSettings.



35
36
37
38
# File 'lib/core/connector_settings.rb', line 35

def initialize(es_response, connectors_meta)
  @elasticsearch_response = es_response.with_indifferent_access
  @connectors_meta = connectors_meta.with_indifferent_access
end

Class Method Details

.fetch_by_id(connector_id) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/core/connector_settings.rb', line 27

def self.fetch_by_id(connector_id)
  es_response = ElasticConnectorActions.get_connector(connector_id)
  connectors_meta = ElasticConnectorActions.connectors_meta

  raise ConnectorNotFoundError.new("Connector with id=#{connector_id} was not found.") unless es_response[:found]
  new(es_response, connectors_meta)
end

.fetch_crawler_connectors(page_size = DEFAULT_PAGE_SIZE) ⇒ Object



45
46
47
48
# File 'lib/core/connector_settings.rb', line 45

def self.fetch_crawler_connectors(page_size = DEFAULT_PAGE_SIZE)
  query = { term: { service_type: Utility::Constants::CRAWLER_SERVICE_TYPE } }
  fetch_connectors_by_query(query, page_size)
end

.fetch_native_connectors(page_size = DEFAULT_PAGE_SIZE) ⇒ Object



40
41
42
43
# File 'lib/core/connector_settings.rb', line 40

def self.fetch_native_connectors(page_size = DEFAULT_PAGE_SIZE)
  query = { term: { is_native: true } }
  fetch_connectors_by_query(query, page_size)
end

Instance Method Details

#[](property_name) ⇒ Object



54
55
56
57
# File 'lib/core/connector_settings.rb', line 54

def [](property_name)
  # TODO: handle not found
  @elasticsearch_response[:_source][property_name]
end

#configurationObject



75
76
77
# File 'lib/core/connector_settings.rb', line 75

def configuration
  self[:configuration]
end

#connector_statusObject



63
64
65
# File 'lib/core/connector_settings.rb', line 63

def connector_status
  self[:status]
end

#connector_status_allows_sync?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/core/connector_settings.rb', line 67

def connector_status_allows_sync?
  Connectors::ConnectorStatus::STATUSES_ALLOWING_SYNC.include?(connector_status)
end

#extract_binary_content?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/core/connector_settings.rb', line 87

def extract_binary_content?
  return_if_present(@elasticsearch_response.dig(:pipeline, :extract_binary_content), @connectors_meta.dig(:pipeline, :default_extract_binary_content), DEFAULT_EXTRACT_BINARY_CONTENT)
end

#formattedObject



99
100
101
102
103
# File 'lib/core/connector_settings.rb', line 99

def formatted
  properties = ["ID: #{id}"]
  properties << "Service type: #{service_type}" if service_type
  "connector (#{properties.join(', ')})"
end

#idObject



50
51
52
# File 'lib/core/connector_settings.rb', line 50

def id
  @elasticsearch_response[:_id]
end

#index_nameObject



59
60
61
# File 'lib/core/connector_settings.rb', line 59

def index_name
  self[:index_name]
end

#needs_service_type?Boolean

Returns:

  • (Boolean)


105
106
107
# File 'lib/core/connector_settings.rb', line 105

def needs_service_type?
  service_type.to_s.strip.empty?
end

#reduce_whitespace?Boolean

Returns:

  • (Boolean)


91
92
93
# File 'lib/core/connector_settings.rb', line 91

def reduce_whitespace?
  return_if_present(@elasticsearch_response.dig(:pipeline, :reduce_whitespace), @connectors_meta.dig(:pipeline, :default_reduce_whitespace), DEFAULT_REDUCE_WHITESPACE)
end

#request_pipelineObject



83
84
85
# File 'lib/core/connector_settings.rb', line 83

def request_pipeline
  return_if_present(@elasticsearch_response.dig(:pipeline, :name), @connectors_meta.dig(:pipeline, :default_name), DEFAULT_REQUEST_PIPELINE)
end

#run_ml_inference?Boolean

Returns:

  • (Boolean)


95
96
97
# File 'lib/core/connector_settings.rb', line 95

def run_ml_inference?
  return_if_present(@elasticsearch_response.dig(:pipeline, :run_ml_inference), @connectors_meta.dig(:pipeline, :default_run_ml_inference), DEFAULT_RUN_ML_INFERENCE)
end

#scheduling_settingsObject



79
80
81
# File 'lib/core/connector_settings.rb', line 79

def scheduling_settings
  self[:scheduling]
end

#service_typeObject



71
72
73
# File 'lib/core/connector_settings.rb', line 71

def service_type
  self[:service_type]
end

#valid_index_name?Boolean

Returns:

  • (Boolean)


109
110
111
# File 'lib/core/connector_settings.rb', line 109

def valid_index_name?
  index_name&.start_with?(Utility::Constants::CONTENT_INDEX_PREFIX)
end