connectors_utility 8.6.0.6 → 8.6.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ed5c6236d953eba059acb0392bf4a7c29377ac73b5b80d1816da1d445259be60
4
- data.tar.gz: d890bf0f8fda93e6c3f34a996a9726488352de8f3a7a7671a6573d626bbcbdb6
3
+ metadata.gz: d2406276300699ebf07cc2890f994c3a1a9fecb9127793bcad68fb69a4f49111
4
+ data.tar.gz: 0a35b249367837148c2f7fe2eac30f74de37c5fd5610f30859c703bfbcbb76be
5
5
  SHA512:
6
- metadata.gz: 02bafd26c7eba58103820a7d086942765fd8f8b6f85c532cc09f819855c2f992417909c1e04a45912163f7bd0ac5eeba90fabcb58b0f34b7c7b2f9b21aaa1988
7
- data.tar.gz: 9be7b19622c7c252c28a7ec1bad9d59cfc7e511f13b18b3002a89813fdabb0cdc43573710b23b66f0c239f447c7002fd7f80cb4964cbf689f884044d69031a73
6
+ metadata.gz: e0cca6acc1faffd3312213d807e77425ed006f44313c3b49faf01c8f3b31817ef7a194249581d6058cc8309773fa1142f5daf8994a2a8e24533f1b3f08f73efd
7
+ data.tar.gz: '078ebf6f05133d0b3ffe252157e72bcfaee89fb98e65d8ffde1a400c69a95f1ea4edfd7dfd66a626955aa24a0e29217cb6f51ead3e30c1c1d2792d52c7ffbb33'
@@ -0,0 +1,14 @@
1
+ #
2
+ # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ # or more contributor license agreements. Licensed under the Elastic License;
4
+ # you may not use this file except in compliance with the Elastic License.
5
+ #
6
+
7
+ # frozen_string_literal: true
8
+
9
+ module Connectors
10
+ class JobTriggerMethod
11
+ ON_DEMAND = 'on_demand'
12
+ SCHEDULED = 'scheduled'
13
+ end
14
+ end
@@ -9,8 +9,11 @@
9
9
  require_relative 'utility'
10
10
 
11
11
  require_relative 'connectors/connector_status'
12
+ require_relative 'connectors/crawler/scheduler'
13
+ require_relative 'connectors/job_trigger_method'
12
14
  require_relative 'connectors/sync_status'
13
- require_relative 'core/scheduler'
15
+ require_relative 'core/connector_job'
16
+ require_relative 'core/connector_settings'
14
17
  require_relative 'core/elastic_connector_actions'
15
-
16
- require_relative 'connectors/crawler/scheduler'
18
+ require_relative 'core/filtering/validation_status'
19
+ require_relative 'core/scheduler'
@@ -142,7 +142,19 @@ module Core
142
142
  end
143
143
 
144
144
  def pipeline
145
- connector_snapshot[:pipeline]
145
+ connector_snapshot[:pipeline] || {}
146
+ end
147
+
148
+ def extract_binary_content?
149
+ pipeline[:extract_binary_content]
150
+ end
151
+
152
+ def reduce_whitespace?
153
+ pipeline[:reduce_whitespace]
154
+ end
155
+
156
+ def run_ml_inference?
157
+ pipeline[:run_ml_inference]
146
158
  end
147
159
 
148
160
  def connector
@@ -8,6 +8,7 @@
8
8
 
9
9
  require 'active_support/core_ext/hash/indifferent_access'
10
10
  require 'connectors/connector_status'
11
+ require 'connectors/sync_status'
11
12
  require 'core/elastic_connector_actions'
12
13
  require 'utility'
13
14
 
@@ -87,6 +88,10 @@ module Core
87
88
  self[:scheduling]
88
89
  end
89
90
 
91
+ def sync_now?
92
+ self[:sync_now] == true
93
+ end
94
+
90
95
  def filtering
91
96
  # assume for now, that first object in filtering array or a filter object itself is the only filtering object
92
97
  filtering = @elasticsearch_response.dig(:_source, :filtering)
@@ -98,18 +103,6 @@ module Core
98
103
  Utility::Common.return_if_present(@elasticsearch_response.dig(:_source, :pipeline, :name), @connectors_meta.dig(:pipeline, :default_name), DEFAULT_REQUEST_PIPELINE)
99
104
  end
100
105
 
101
- def extract_binary_content?
102
- Utility::Common.return_if_present(@elasticsearch_response.dig(:_source, :pipeline, :extract_binary_content), @connectors_meta.dig(:pipeline, :default_extract_binary_content), DEFAULT_EXTRACT_BINARY_CONTENT)
103
- end
104
-
105
- def reduce_whitespace?
106
- Utility::Common.return_if_present(@elasticsearch_response.dig(:_source, :pipeline, :reduce_whitespace), @connectors_meta.dig(:pipeline, :default_reduce_whitespace), DEFAULT_REDUCE_WHITESPACE)
107
- end
108
-
109
- def run_ml_inference?
110
- Utility::Common.return_if_present(@elasticsearch_response.dig(:_source, :pipeline, :run_ml_inference), @connectors_meta.dig(:pipeline, :default_run_ml_inference), DEFAULT_RUN_ML_INFERENCE)
111
- end
112
-
113
106
  def formatted
114
107
  properties = ["ID: #{id}"]
115
108
  properties << "Service type: #{service_type}" if service_type
@@ -139,10 +132,12 @@ module Core
139
132
  job_status = job&.status || Connectors::SyncStatus::ERROR
140
133
  job_error = job.nil? ? 'Could\'t find the job' : job.error
141
134
  job_error ||= 'unknown error' if job_status == Connectors::SyncStatus::ERROR
135
+ connector_status = (job_status == Connectors::SyncStatus::ERROR ? Connectors::ConnectorStatus::ERROR : Connectors::ConnectorStatus::CONNECTED)
142
136
  doc = {
143
137
  :last_sync_status => job_status,
144
138
  :last_synced => Time.now,
145
139
  :last_sync_error => job_error,
140
+ :status => connector_status,
146
141
  :error => job_error
147
142
  }
148
143
  if job&.terminated?
@@ -8,6 +8,7 @@
8
8
  #
9
9
  require 'active_support/core_ext/hash'
10
10
  require 'connectors/connector_status'
11
+ require 'connectors/job_trigger_method'
11
12
  require 'connectors/sync_status'
12
13
  require 'utility'
13
14
  require 'elastic-transport'
@@ -189,13 +190,15 @@ module Core
189
190
  status: Connectors::SyncStatus::PENDING,
190
191
  created_at: Time.now,
191
192
  last_seen: Time.now,
193
+ trigger_method: connector_settings.sync_now? ? Connectors::JobTriggerMethod::ON_DEMAND : Connectors::JobTriggerMethod::SCHEDULED,
192
194
  connector: {
193
195
  id: connector_settings.id,
194
196
  filtering: convert_connector_filtering_to_job_filtering(connector_settings.filtering),
195
197
  index_name: connector_settings.index_name,
196
198
  language: connector_settings[:language],
197
199
  pipeline: connector_settings[:pipeline],
198
- service_type: connector_settings.service_type
200
+ service_type: connector_settings.service_type,
201
+ configuration: connector_settings.configuration
199
202
  }
200
203
  }
201
204
 
@@ -78,7 +78,7 @@ module Core
78
78
  end
79
79
 
80
80
  # Sync when sync_now flag is true for the connector
81
- if connector_settings[:sync_now] == true
81
+ if connector_settings.sync_now?
82
82
  Utility::Logger.info("#{connector_settings.formatted.capitalize} is manually triggered to sync now.")
83
83
  return true
84
84
  end
@@ -51,7 +51,7 @@ module Utility
51
51
  def note_success
52
52
  @consecutive_error_count = 0
53
53
  @success_count += 1
54
- increment_window_index
54
+ track_window_error(false)
55
55
  end
56
56
 
57
57
  def note_error(error, id: Time.now.to_i)
@@ -60,10 +60,9 @@ module Utility
60
60
  Utility::Logger.debug("Message id: #{id} - #{error_message}\n#{stack_trace}")
61
61
  @total_error_count += 1
62
62
  @consecutive_error_count += 1
63
- @window_errors[@window_index] = true
64
63
  @error_queue << DocumentError.new(error.class.name, error_message, stack_trace, id)
65
64
  @error_queue = @error_queue.drop(1) if @error_queue.size > @error_queue_size
66
- increment_window_index
65
+ track_window_error(true)
67
66
  @last_error = error
68
67
 
69
68
  raise_if_necessary
@@ -92,10 +91,32 @@ module Utility
92
91
  end
93
92
 
94
93
  def num_errors_in_window
95
- @window_errors.count(&:itself).to_f
94
+ @window_errors.count(true).to_f
96
95
  end
97
96
 
98
- def increment_window_index
97
+ def track_window_error(is_error)
98
+ # We keep the errors array of the size @window_size this way, imagine @window_size = 5
99
+ # Error array inits as falses:
100
+ # [ false, false, false, false, false ]
101
+ # Third document raises an error:
102
+ # [ false, false, true, false, false ]
103
+ # ^^^^
104
+ # 2 % 5 == 2
105
+ # Fifth document raises an error:
106
+ # [ false, false, true, false, true ]
107
+ # ^^^^
108
+ # 4 % 5 == 4
109
+ # Sixth document raises an error:
110
+ # [ true, false, true, false, true ]
111
+ # ^^^^
112
+ # 5 % 5 == 0
113
+ #
114
+ # Eigth document is successful:
115
+ # [ true, false, false, false, true ]
116
+ # ^^^^^
117
+ # 7 % 5 == 2
118
+ # And so on.
119
+ @window_errors[@window_index] = is_error
99
120
  @window_index = (@window_index + 1) % @window_size
100
121
  end
101
122
 
@@ -17,6 +17,10 @@ module Utility
17
17
 
18
18
  filter.present? ? filter : {}
19
19
  end
20
+
21
+ def rule_pre_processing_active?(filter)
22
+ !filter.dig('advanced_snippet', 'value')&.present?
23
+ end
20
24
  end
21
25
  end
22
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: connectors_utility
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.6.0.6
4
+ version: 8.6.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-21 00:00:00.000000000 Z
11
+ date: 2022-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -104,6 +104,7 @@ files:
104
104
  - NOTICE.txt
105
105
  - lib/connectors/connector_status.rb
106
106
  - lib/connectors/crawler/scheduler.rb
107
+ - lib/connectors/job_trigger_method.rb
107
108
  - lib/connectors/sync_status.rb
108
109
  - lib/connectors_utility.rb
109
110
  - lib/core/connector_job.rb
@@ -131,8 +132,8 @@ homepage: https://github.com/elastic/connectors-ruby
131
132
  licenses:
132
133
  - Elastic-2.0
133
134
  metadata:
134
- revision: 39cbb85dbae57a2c92e6e0da272d05aa24ca99a9
135
- repository: git@github.com:elastic/connectors-ruby.git
135
+ revision: 86b6c162f41d3a837841d0df2430cbc26b57eb33
136
+ repository: https://github.com/elastic/connectors-ruby
136
137
  post_install_message:
137
138
  rdoc_options: []
138
139
  require_paths: