elasticgraph-local 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5db3551c8cb7a26221f84490e13d32efe98440a5ecf889d5845023fbdd132bf0
|
4
|
+
data.tar.gz: e63e4a7a0c295635293e3fac7a4b9b058e3beb07d678a5323be4f232ff2f1803
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '009fffb0231e765a6f229912b9f2f384fb6e32828d83bd26563a6a06477681d2eb0ebd87ae436440564b0f20fa13913a950f929c54f5092b713cc1b603ad2187'
|
7
|
+
data.tar.gz: c5c0d13753f4943bc002172041f7aaab411d07e5010553a8d59c4d75bf1d24a664b541c940b6d14220bbdd7f39962566458f2cf1c9de1f92265d464b4f9a7731
|
@@ -11,7 +11,9 @@ require "elastic_graph/graphql"
|
|
11
11
|
require "elastic_graph/indexer"
|
12
12
|
require "elastic_graph/indexer/test_support/converters"
|
13
13
|
require "elastic_graph/indexer/spec_support/event_matcher"
|
14
|
+
require "elastic_graph/support/json_schema/validator"
|
14
15
|
require "factory_bot"
|
16
|
+
require "json_schemer"
|
15
17
|
|
16
18
|
RSpec.shared_examples "an ElasticGraph project" do |repo_root: Dir.pwd,
|
17
19
|
settings_dir: "config/settings",
|
@@ -42,8 +44,22 @@ RSpec.shared_examples "an ElasticGraph project" do |repo_root: Dir.pwd,
|
|
42
44
|
expect(settings_files).not_to be_empty
|
43
45
|
end
|
44
46
|
|
47
|
+
config_schema = ::YAML.load_file(::File.join(__dir__, "config_schema.yaml"))
|
48
|
+
|
49
|
+
validator = ::ElasticGraph::Support::JSONSchema::Validator.new(
|
50
|
+
schema: ::JSONSchemer.schema(config_schema, meta_schema: config_schema.fetch("$schema")),
|
51
|
+
sanitize_pii: false
|
52
|
+
)
|
53
|
+
|
45
54
|
settings_files.each do |file_name|
|
46
55
|
describe "the `#{file_name}` settings file" do
|
56
|
+
it "valid according to ElasticGraph's configuration JSON schema" do
|
57
|
+
settings = ::YAML.safe_load_file(file_name, aliases: true)
|
58
|
+
error = validator.validate_with_error_message(settings)
|
59
|
+
|
60
|
+
expect(error).to eq(nil), error
|
61
|
+
end
|
62
|
+
|
47
63
|
it "can boot each part of ElasticGraph and has `number_of_shards` configured on every index definition" do
|
48
64
|
all_components = [::ElasticGraph::Admin, ::ElasticGraph::GraphQL, ::ElasticGraph::Indexer].map do |klass|
|
49
65
|
klass.from_yaml_file(file_name)
|
@@ -89,10 +105,10 @@ RSpec.shared_examples "an ElasticGraph project" do |repo_root: Dir.pwd,
|
|
89
105
|
end
|
90
106
|
end.to_h
|
91
107
|
|
92
|
-
|
93
|
-
|
94
|
-
all_defs =
|
95
|
-
.json_schemas_for(
|
108
|
+
all_type_names, event_types = Dir.chdir(repo_root) do
|
109
|
+
schema_artifacts = ::ElasticGraph::SchemaArtifacts.from_yaml_file(settings_yaml_file_to_use)
|
110
|
+
all_defs = schema_artifacts
|
111
|
+
.json_schemas_for(schema_artifacts.latest_json_schema_version)
|
96
112
|
.fetch("$defs")
|
97
113
|
|
98
114
|
event_types = all_defs
|
@@ -102,10 +118,12 @@ RSpec.shared_examples "an ElasticGraph project" do |repo_root: Dir.pwd,
|
|
102
118
|
.fetch("enum")
|
103
119
|
.to_set
|
104
120
|
|
105
|
-
[
|
121
|
+
[all_defs.keys.to_set, event_types]
|
106
122
|
end
|
107
123
|
|
108
124
|
describe "Factories" do
|
125
|
+
let(:indexer) { ::ElasticGraph::Indexer.from_yaml_file(settings_yaml_file_to_use) }
|
126
|
+
|
109
127
|
specify "all factories have valid `__typename` values" do
|
110
128
|
unknown_type_names_by_factory_name = typenames_by_factory_name.reject { |k, v| all_type_names.include?(v) }
|
111
129
|
|
@@ -0,0 +1,688 @@
|
|
1
|
+
---
|
2
|
+
"$schema": http://json-schema.org/draft-07/schema#
|
3
|
+
title: ElasticGraph Configuration
|
4
|
+
description: Complete configuration schema for ElasticGraph applications
|
5
|
+
type: object
|
6
|
+
required:
|
7
|
+
- datastore
|
8
|
+
- graphql
|
9
|
+
- indexer
|
10
|
+
- schema_artifacts
|
11
|
+
- logger
|
12
|
+
properties:
|
13
|
+
datastore:
|
14
|
+
description: Configuration for datastore connections and index definitions used
|
15
|
+
by all parts of ElasticGraph.
|
16
|
+
properties:
|
17
|
+
client_faraday_adapter:
|
18
|
+
type: object
|
19
|
+
description: Configuration of the faraday adapter to use with the datastore
|
20
|
+
client.
|
21
|
+
properties:
|
22
|
+
name:
|
23
|
+
type:
|
24
|
+
- string
|
25
|
+
- 'null'
|
26
|
+
minLength: 1
|
27
|
+
description: The faraday adapter to use with the datastore client, such
|
28
|
+
as `httpx` or `typhoeus`.
|
29
|
+
examples:
|
30
|
+
- net_http
|
31
|
+
- httpx
|
32
|
+
- typhoeus
|
33
|
+
-
|
34
|
+
default:
|
35
|
+
require:
|
36
|
+
type:
|
37
|
+
- string
|
38
|
+
- 'null'
|
39
|
+
minLength: 1
|
40
|
+
description: A Ruby library to require which provides the named adapter
|
41
|
+
(optional).
|
42
|
+
examples:
|
43
|
+
- httpx/adapters/faraday
|
44
|
+
default:
|
45
|
+
default:
|
46
|
+
name:
|
47
|
+
require:
|
48
|
+
examples:
|
49
|
+
- name: net_http
|
50
|
+
- name: httpx
|
51
|
+
require: httpx/adapters/faraday
|
52
|
+
additionalProperties: false
|
53
|
+
clusters:
|
54
|
+
type: object
|
55
|
+
description: Map of datastore cluster definitions, keyed by cluster name.
|
56
|
+
The names will be referenced within `index_definitions` by `query_cluster`
|
57
|
+
and `index_into_clusters` to identify datastore clusters.
|
58
|
+
patternProperties:
|
59
|
+
".+":
|
60
|
+
type: object
|
61
|
+
description: Configuration for a specific datastore cluster.
|
62
|
+
examples:
|
63
|
+
- url: http://localhost:9200
|
64
|
+
backend: elasticsearch
|
65
|
+
settings:
|
66
|
+
cluster.max_shards_per_node: 2000
|
67
|
+
properties:
|
68
|
+
url:
|
69
|
+
type: string
|
70
|
+
minLength: 1
|
71
|
+
description: The URL of the datastore cluster.
|
72
|
+
examples:
|
73
|
+
- http://localhost:9200
|
74
|
+
- https://my-cluster.example.com:9200
|
75
|
+
backend:
|
76
|
+
enum:
|
77
|
+
- elasticsearch
|
78
|
+
- opensearch
|
79
|
+
description: Determines whether `elasticgraph-elasticsearch` or `elasticgraph-opensearch`
|
80
|
+
is used for the datastore client.
|
81
|
+
examples:
|
82
|
+
- elasticsearch
|
83
|
+
- opensearch
|
84
|
+
settings:
|
85
|
+
type: object
|
86
|
+
description: Datastore settings in flattened (i.e. dot-separated)
|
87
|
+
name form.
|
88
|
+
patternProperties:
|
89
|
+
".+":
|
90
|
+
type:
|
91
|
+
- array
|
92
|
+
- string
|
93
|
+
- number
|
94
|
+
- boolean
|
95
|
+
- object
|
96
|
+
- 'null'
|
97
|
+
examples:
|
98
|
+
- cluster.max_shards_per_node: 2000
|
99
|
+
default: {}
|
100
|
+
required:
|
101
|
+
- url
|
102
|
+
- backend
|
103
|
+
additionalProperties: false
|
104
|
+
examples:
|
105
|
+
- main:
|
106
|
+
url: http://localhost:9200
|
107
|
+
backend: elasticsearch
|
108
|
+
settings:
|
109
|
+
cluster.max_shards_per_node: 2000
|
110
|
+
index_definitions:
|
111
|
+
type: object
|
112
|
+
description: Map of index definition names to `IndexDefinition` objects containing
|
113
|
+
customizations for the named index definitions for this environment.
|
114
|
+
patternProperties:
|
115
|
+
".+":
|
116
|
+
type: object
|
117
|
+
description: Configuration for a specific index definition.
|
118
|
+
examples:
|
119
|
+
- query_cluster: main
|
120
|
+
index_into_clusters:
|
121
|
+
- main
|
122
|
+
ignore_routing_values:
|
123
|
+
- ABC1234567
|
124
|
+
setting_overrides:
|
125
|
+
number_of_shards: 256
|
126
|
+
setting_overrides_by_timestamp:
|
127
|
+
'2022-01-01T00:00:00Z':
|
128
|
+
number_of_shards: 64
|
129
|
+
'2023-01-01T00:00:00Z':
|
130
|
+
number_of_shards: 96
|
131
|
+
'2024-01-01T00:00:00Z':
|
132
|
+
number_of_shards: 128
|
133
|
+
custom_timestamp_ranges:
|
134
|
+
- index_name_suffix: before_2022
|
135
|
+
lt: '2022-01-01T00:00:00Z'
|
136
|
+
setting_overrides:
|
137
|
+
number_of_shards: 32
|
138
|
+
- index_name_suffix: after_2026
|
139
|
+
gte: '2027-01-01T00:00:00Z'
|
140
|
+
setting_overrides:
|
141
|
+
number_of_shards: 32
|
142
|
+
properties:
|
143
|
+
query_cluster:
|
144
|
+
type: string
|
145
|
+
description: Named search cluster to be used for queries on this index.
|
146
|
+
The value must match be a key in the `clusters` map.
|
147
|
+
examples:
|
148
|
+
- main
|
149
|
+
- search_cluster
|
150
|
+
index_into_clusters:
|
151
|
+
type: array
|
152
|
+
items:
|
153
|
+
type: string
|
154
|
+
minLength: 1
|
155
|
+
description: Named search clusters to index data into. The values
|
156
|
+
must match keys in the `clusters` map.
|
157
|
+
examples:
|
158
|
+
- - main
|
159
|
+
- - cluster1
|
160
|
+
- cluster2
|
161
|
+
ignore_routing_values:
|
162
|
+
type: array
|
163
|
+
items:
|
164
|
+
type: string
|
165
|
+
description: Shard routing values for which the data should be spread
|
166
|
+
across all shards instead of concentrating it on a single shard.
|
167
|
+
This is intended to be used when a handful of known routing value
|
168
|
+
contain such a large portion of the dataset that it extremely lopsided
|
169
|
+
shards would result. Spreading the data across all shards may perform
|
170
|
+
better.
|
171
|
+
default: []
|
172
|
+
examples:
|
173
|
+
- []
|
174
|
+
- - mega_tenant1
|
175
|
+
- mega_tenant2
|
176
|
+
setting_overrides:
|
177
|
+
type: object
|
178
|
+
description: Overrides for index (or index template) settings. The
|
179
|
+
settings specified here will override any settings specified on
|
180
|
+
the Ruby schema definition. This is commonly used to configure a
|
181
|
+
different `number_of_shards` in each environment. An `index.` prefix
|
182
|
+
will be added to the names of all settings before submitting them
|
183
|
+
to the datastore.
|
184
|
+
patternProperties:
|
185
|
+
".+":
|
186
|
+
type:
|
187
|
+
- array
|
188
|
+
- string
|
189
|
+
- number
|
190
|
+
- boolean
|
191
|
+
- object
|
192
|
+
- 'null'
|
193
|
+
default: {}
|
194
|
+
examples:
|
195
|
+
- number_of_shards: 5
|
196
|
+
setting_overrides_by_timestamp:
|
197
|
+
type: object
|
198
|
+
description: Overrides for index template settings for specific dates,
|
199
|
+
allowing variation of settings for different rollover indices. This
|
200
|
+
is commonly used to configure a different `number_of_shards` for
|
201
|
+
each year or month when using yearly or monthly rollover.
|
202
|
+
propertyNames:
|
203
|
+
type: string
|
204
|
+
format: date-time
|
205
|
+
additionalProperties:
|
206
|
+
type: object
|
207
|
+
patternProperties:
|
208
|
+
".+":
|
209
|
+
type:
|
210
|
+
- array
|
211
|
+
- string
|
212
|
+
- number
|
213
|
+
- boolean
|
214
|
+
- object
|
215
|
+
- 'null'
|
216
|
+
default: {}
|
217
|
+
examples:
|
218
|
+
- '2025-01-01T00:00:00Z':
|
219
|
+
number_of_shards: 10
|
220
|
+
custom_timestamp_ranges:
|
221
|
+
type: array
|
222
|
+
description: Array of custom timestamp ranges that allow different
|
223
|
+
index settings for specific time periods.
|
224
|
+
items:
|
225
|
+
type: object
|
226
|
+
properties:
|
227
|
+
index_name_suffix:
|
228
|
+
type: string
|
229
|
+
description: Suffix to append to the index name for this custom
|
230
|
+
range.
|
231
|
+
examples:
|
232
|
+
- before_2020
|
233
|
+
- after_2027
|
234
|
+
setting_overrides:
|
235
|
+
type: object
|
236
|
+
description: Setting overrides for this custom timestamp range.
|
237
|
+
patternProperties:
|
238
|
+
".+":
|
239
|
+
type:
|
240
|
+
- array
|
241
|
+
- string
|
242
|
+
- number
|
243
|
+
- boolean
|
244
|
+
- object
|
245
|
+
- 'null'
|
246
|
+
examples:
|
247
|
+
- number_of_shards: 17
|
248
|
+
- number_of_replicas: 2
|
249
|
+
lt:
|
250
|
+
type:
|
251
|
+
- string
|
252
|
+
- 'null'
|
253
|
+
format: date-time
|
254
|
+
description: Less than timestamp boundary (ISO 8601 format).
|
255
|
+
examples:
|
256
|
+
- '2015-01-01T00:00:00Z'
|
257
|
+
- '2020-12-31T23:59:59Z'
|
258
|
+
default:
|
259
|
+
lte:
|
260
|
+
type:
|
261
|
+
- string
|
262
|
+
- 'null'
|
263
|
+
format: date-time
|
264
|
+
description: Less than or equal timestamp boundary (ISO 8601
|
265
|
+
format).
|
266
|
+
examples:
|
267
|
+
- '2015-01-01T00:00:00Z'
|
268
|
+
- '2020-12-31T23:59:59Z'
|
269
|
+
default:
|
270
|
+
gt:
|
271
|
+
type:
|
272
|
+
- string
|
273
|
+
- 'null'
|
274
|
+
format: date-time
|
275
|
+
description: Greater than timestamp boundary (ISO 8601 format).
|
276
|
+
examples:
|
277
|
+
- '2015-01-01T00:00:00Z'
|
278
|
+
- '2020-01-01T00:00:00Z'
|
279
|
+
default:
|
280
|
+
gte:
|
281
|
+
type:
|
282
|
+
- string
|
283
|
+
- 'null'
|
284
|
+
format: date-time
|
285
|
+
description: Greater than or equal timestamp boundary (ISO 8601
|
286
|
+
format).
|
287
|
+
examples:
|
288
|
+
- '2015-01-01T00:00:00Z'
|
289
|
+
- '2020-01-01T00:00:00Z'
|
290
|
+
default:
|
291
|
+
required:
|
292
|
+
- index_name_suffix
|
293
|
+
- setting_overrides
|
294
|
+
anyOf:
|
295
|
+
- required:
|
296
|
+
- lt
|
297
|
+
- required:
|
298
|
+
- lte
|
299
|
+
- required:
|
300
|
+
- gt
|
301
|
+
- required:
|
302
|
+
- gte
|
303
|
+
additionalProperties: false
|
304
|
+
default: []
|
305
|
+
examples:
|
306
|
+
- - index_name_suffix: before_2015
|
307
|
+
lt: '2015-01-01T00:00:00Z'
|
308
|
+
setting_overrides:
|
309
|
+
number_of_shards: 17
|
310
|
+
required:
|
311
|
+
- query_cluster
|
312
|
+
- index_into_clusters
|
313
|
+
additionalProperties: false
|
314
|
+
examples:
|
315
|
+
- widgets:
|
316
|
+
query_cluster: main
|
317
|
+
index_into_clusters:
|
318
|
+
- main
|
319
|
+
ignore_routing_values:
|
320
|
+
- ABC1234567
|
321
|
+
setting_overrides:
|
322
|
+
number_of_shards: 256
|
323
|
+
setting_overrides_by_timestamp:
|
324
|
+
'2022-01-01T00:00:00Z':
|
325
|
+
number_of_shards: 64
|
326
|
+
'2023-01-01T00:00:00Z':
|
327
|
+
number_of_shards: 96
|
328
|
+
'2024-01-01T00:00:00Z':
|
329
|
+
number_of_shards: 128
|
330
|
+
custom_timestamp_ranges:
|
331
|
+
- index_name_suffix: before_2022
|
332
|
+
lt: '2022-01-01T00:00:00Z'
|
333
|
+
setting_overrides:
|
334
|
+
number_of_shards: 32
|
335
|
+
- index_name_suffix: after_2026
|
336
|
+
gte: '2027-01-01T00:00:00Z'
|
337
|
+
setting_overrides:
|
338
|
+
number_of_shards: 32
|
339
|
+
log_traffic:
|
340
|
+
type: boolean
|
341
|
+
description: Determines if we log requests/responses to/from the datastore.
|
342
|
+
default: false
|
343
|
+
examples:
|
344
|
+
- false
|
345
|
+
- true
|
346
|
+
max_client_retries:
|
347
|
+
type: integer
|
348
|
+
description: Passed down to the datastore client. Controls the number of times
|
349
|
+
ElasticGraph attempts a call against the datastore before failing. Retrying
|
350
|
+
a handful of times is generally advantageous, since some sporadic failures
|
351
|
+
are expected during the course of operation, and better to retry than fail
|
352
|
+
the entire call.
|
353
|
+
default: 3
|
354
|
+
minimum: 0
|
355
|
+
examples:
|
356
|
+
- 3
|
357
|
+
- 5
|
358
|
+
- 10
|
359
|
+
required:
|
360
|
+
- clusters
|
361
|
+
- index_definitions
|
362
|
+
additionalProperties: false
|
363
|
+
graphql:
|
364
|
+
description: Configuration for GraphQL behavior used by `elasticgraph-graphql`.
|
365
|
+
properties:
|
366
|
+
default_page_size:
|
367
|
+
description: Determines the `size` of our datastore search requests if the
|
368
|
+
query does not specify via `first` or `last`.
|
369
|
+
type: integer
|
370
|
+
minimum: 1
|
371
|
+
default: 50
|
372
|
+
examples:
|
373
|
+
- 25
|
374
|
+
- 50
|
375
|
+
- 100
|
376
|
+
max_page_size:
|
377
|
+
description: Determines the maximum size of a requested page. If the client
|
378
|
+
requests a page larger than this value, the `size` will be capped by this
|
379
|
+
value.
|
380
|
+
type: integer
|
381
|
+
minimum: 1
|
382
|
+
default: 500
|
383
|
+
examples:
|
384
|
+
- 100
|
385
|
+
- 500
|
386
|
+
- 1000
|
387
|
+
slow_query_latency_warning_threshold_in_ms:
|
388
|
+
description: Queries that take longer than this configured threshold will
|
389
|
+
have a sanitized version logged so that they can be investigated.
|
390
|
+
type: integer
|
391
|
+
minimum: 0
|
392
|
+
default: 5000
|
393
|
+
examples:
|
394
|
+
- 3000
|
395
|
+
- 5000
|
396
|
+
- 10000
|
397
|
+
client_resolver:
|
398
|
+
description: Object used to identify the client of a GraphQL query based on
|
399
|
+
the HTTP request.
|
400
|
+
type: object
|
401
|
+
properties:
|
402
|
+
name:
|
403
|
+
description: Name of the client resolver class.
|
404
|
+
type:
|
405
|
+
- string
|
406
|
+
- 'null'
|
407
|
+
minLength: 1
|
408
|
+
default:
|
409
|
+
examples:
|
410
|
+
-
|
411
|
+
- MyCompany::ElasticGraphClientResolver
|
412
|
+
require_path:
|
413
|
+
description: The path to require to load the client resolver class.
|
414
|
+
type:
|
415
|
+
- string
|
416
|
+
- 'null'
|
417
|
+
minLength: 1
|
418
|
+
default:
|
419
|
+
examples:
|
420
|
+
-
|
421
|
+
- "./lib/my_company/elastic_graph/client_resolver"
|
422
|
+
patternProperties:
|
423
|
+
".+":
|
424
|
+
type:
|
425
|
+
- array
|
426
|
+
- string
|
427
|
+
- number
|
428
|
+
- boolean
|
429
|
+
- object
|
430
|
+
- 'null'
|
431
|
+
default: {}
|
432
|
+
examples:
|
433
|
+
- {}
|
434
|
+
- name: ElasticGraph::GraphQL::ClientResolvers::ViaHTTPHeader
|
435
|
+
require_path: support/client_resolvers
|
436
|
+
header_name: X-Client-Name
|
437
|
+
additionalProperties: false
|
438
|
+
extension_modules:
|
439
|
+
description: Array of modules that will be extended onto the `GraphQL` instance
|
440
|
+
to support extension libraries.
|
441
|
+
type: array
|
442
|
+
items:
|
443
|
+
type: object
|
444
|
+
properties:
|
445
|
+
name:
|
446
|
+
type: string
|
447
|
+
minLength: 1
|
448
|
+
description: The name of the extension module class to load.
|
449
|
+
examples:
|
450
|
+
- MyExtensionModule
|
451
|
+
- ElasticGraph::MyExtension
|
452
|
+
require_path:
|
453
|
+
type: string
|
454
|
+
minLength: 1
|
455
|
+
description: The path to require to load the extension module.
|
456
|
+
examples:
|
457
|
+
- "./my_extension_module"
|
458
|
+
- elastic_graph/my_extension
|
459
|
+
required:
|
460
|
+
- name
|
461
|
+
- require_path
|
462
|
+
additionalProperties: false
|
463
|
+
default: []
|
464
|
+
examples:
|
465
|
+
- []
|
466
|
+
- - name: MyExtensionModule
|
467
|
+
require_path: "./my_extension_module"
|
468
|
+
additionalProperties: false
|
469
|
+
indexer:
|
470
|
+
description: Configuration for indexing operations and metrics used by `elasticgraph-indexer`.
|
471
|
+
properties:
|
472
|
+
latency_slo_thresholds_by_timestamp_in_ms:
|
473
|
+
description: Map of indexing latency thresholds (in milliseconds), keyed by
|
474
|
+
the name of the indexing latency metric. When an event is indexed with an
|
475
|
+
indexing latency exceeding the threshold, a warning with the event type,
|
476
|
+
id, and version will be logged, so the issue can be investigated.
|
477
|
+
type: object
|
478
|
+
patternProperties:
|
479
|
+
".+":
|
480
|
+
type: integer
|
481
|
+
minimum: 0
|
482
|
+
default: {}
|
483
|
+
examples:
|
484
|
+
- {}
|
485
|
+
- ingested_from_topic_at: 10000
|
486
|
+
entity_updated_at: 15000
|
487
|
+
skip_derived_indexing_type_updates:
|
488
|
+
description: Setting that can be used to specify some derived indexing type
|
489
|
+
updates that should be skipped. This setting should be a map keyed by the
|
490
|
+
name of the derived indexing type, and the values should be sets of ids.
|
491
|
+
This can be useful when you have a "hot spot" of a single derived document
|
492
|
+
that is receiving a ton of updates. During a backfill (or whatever) you
|
493
|
+
may want to skip the derived type updates.
|
494
|
+
type: object
|
495
|
+
patternProperties:
|
496
|
+
"^[A-Z]\\w*$":
|
497
|
+
type: array
|
498
|
+
items:
|
499
|
+
type: string
|
500
|
+
minLength: 1
|
501
|
+
default: {}
|
502
|
+
examples:
|
503
|
+
- {}
|
504
|
+
- WidgetWorkspace:
|
505
|
+
- ABC12345678
|
506
|
+
additionalProperties: false
|
507
|
+
logger:
|
508
|
+
description: Configuration for logging used by all parts of ElasticGraph.
|
509
|
+
properties:
|
510
|
+
level:
|
511
|
+
description: Determines what severity level we log.
|
512
|
+
examples:
|
513
|
+
- INFO
|
514
|
+
- WARN
|
515
|
+
enum:
|
516
|
+
- DEBUG
|
517
|
+
- debug
|
518
|
+
- INFO
|
519
|
+
- info
|
520
|
+
- WARN
|
521
|
+
- warn
|
522
|
+
- ERROR
|
523
|
+
- error
|
524
|
+
- FATAL
|
525
|
+
- fatal
|
526
|
+
- UNKNOWN
|
527
|
+
- unknown
|
528
|
+
default: INFO
|
529
|
+
device:
|
530
|
+
description: Determines where we log to. "stdout" or "stderr" are interpreted
|
531
|
+
as being those output streams; any other value is assumed to be a file path.
|
532
|
+
examples:
|
533
|
+
- stdout
|
534
|
+
- logs/development.log
|
535
|
+
default: stdout
|
536
|
+
type: string
|
537
|
+
minLength: 1
|
538
|
+
formatter:
|
539
|
+
description: Class used to format log messages.
|
540
|
+
examples:
|
541
|
+
- ElasticGraph::Support::Logger::JSONAwareFormatter
|
542
|
+
- MyAlternateFormatter
|
543
|
+
type: string
|
544
|
+
pattern: "^[A-Z]\\w+(::[A-Z]\\w+)*$"
|
545
|
+
default: ElasticGraph::Support::Logger::JSONAwareFormatter
|
546
|
+
additionalProperties: false
|
547
|
+
schema_artifacts:
|
548
|
+
description: Configuration for schema artifact management used by all parts of
|
549
|
+
ElasticGraph.
|
550
|
+
properties:
|
551
|
+
directory:
|
552
|
+
description: Path to the directory where schema artifacts are stored.
|
553
|
+
examples:
|
554
|
+
- config/schema/artifacts
|
555
|
+
default: config/schema/artifacts
|
556
|
+
type: string
|
557
|
+
minLength: 1
|
558
|
+
additionalProperties: false
|
559
|
+
health_check:
|
560
|
+
description: Configuration for health checks used by `elasticgraph-health_check`.
|
561
|
+
properties:
|
562
|
+
clusters_to_consider:
|
563
|
+
description: The list of clusters to perform datastore status health checks
|
564
|
+
on. A `green` status maps to `healthy`, a `yellow` status maps to `degraded`,
|
565
|
+
and a `red` status maps to `unhealthy`. The returned status is the minimum
|
566
|
+
status from all clusters in the list (a `yellow` cluster and a `green` cluster
|
567
|
+
will result in a `degraded` status).
|
568
|
+
type: array
|
569
|
+
items:
|
570
|
+
type: string
|
571
|
+
minLength: 1
|
572
|
+
default: []
|
573
|
+
examples:
|
574
|
+
- []
|
575
|
+
- - cluster-one
|
576
|
+
- cluster-two
|
577
|
+
data_recency_checks:
|
578
|
+
description: A map of types to perform recency checks on. If no new records
|
579
|
+
for that type have been indexed within the specified period, a `degraded`
|
580
|
+
status will be returned.
|
581
|
+
type: object
|
582
|
+
patternProperties:
|
583
|
+
"^[A-Z]\\w*$":
|
584
|
+
type: object
|
585
|
+
description: Configuration for data recency checks on a specific type.
|
586
|
+
examples:
|
587
|
+
- timestamp_field: createdAt
|
588
|
+
expected_max_recency_seconds: 30
|
589
|
+
properties:
|
590
|
+
expected_max_recency_seconds:
|
591
|
+
type: integer
|
592
|
+
minimum: 0
|
593
|
+
description: The maximum number of seconds since the last record was
|
594
|
+
indexed for this type before considering it stale.
|
595
|
+
examples:
|
596
|
+
- 30
|
597
|
+
- 300
|
598
|
+
- 3600
|
599
|
+
timestamp_field:
|
600
|
+
type: string
|
601
|
+
minLength: 1
|
602
|
+
description: The name of the timestamp field to use for recency checks.
|
603
|
+
examples:
|
604
|
+
- createdAt
|
605
|
+
- updatedAt
|
606
|
+
required:
|
607
|
+
- expected_max_recency_seconds
|
608
|
+
- timestamp_field
|
609
|
+
additionalProperties: false
|
610
|
+
default: {}
|
611
|
+
examples:
|
612
|
+
- {}
|
613
|
+
- Widget:
|
614
|
+
timestamp_field: createdAt
|
615
|
+
expected_max_recency_seconds: 30
|
616
|
+
additionalProperties: false
|
617
|
+
query_interceptor:
|
618
|
+
description: Configuration of datastore query interceptors used by `elasticgraph-query_interceptor`.
|
619
|
+
properties:
|
620
|
+
interceptors:
|
621
|
+
description: List of query interceptors to apply to datastore queries before
|
622
|
+
they are executed.
|
623
|
+
type: array
|
624
|
+
items:
|
625
|
+
type: object
|
626
|
+
properties:
|
627
|
+
name:
|
628
|
+
description: The name of the interceptor extension class.
|
629
|
+
type: string
|
630
|
+
pattern: "^[A-Z]\\w+(::[A-Z]\\w+)*$"
|
631
|
+
examples:
|
632
|
+
- HideInternalRecordsInterceptor
|
633
|
+
require_path:
|
634
|
+
description: The path to require to load the interceptor extension.
|
635
|
+
This should be a relative path from a directory on the Ruby `$LOAD_PATH`
|
636
|
+
or a a relative path from the ElasticGraph application root.
|
637
|
+
type: string
|
638
|
+
minLength: 1
|
639
|
+
examples:
|
640
|
+
- "./lib/interceptors/hide_internal_records_interceptor"
|
641
|
+
config:
|
642
|
+
description: Configuration for the interceptor. Will be passed into
|
643
|
+
the interceptors `#initialize` method.
|
644
|
+
type: object
|
645
|
+
examples:
|
646
|
+
- {}
|
647
|
+
- timeout: 30
|
648
|
+
default: {}
|
649
|
+
required:
|
650
|
+
- name
|
651
|
+
- require_path
|
652
|
+
additionalProperties: false
|
653
|
+
examples:
|
654
|
+
- []
|
655
|
+
- - name: HideInternalRecordsInterceptor
|
656
|
+
require_path: "./lib/interceptors/hide_internal_records_interceptor"
|
657
|
+
default: []
|
658
|
+
additionalProperties: false
|
659
|
+
query_registry:
|
660
|
+
description: Configuration for client and query registration used by `elasticgraph-query_registry`.
|
661
|
+
properties:
|
662
|
+
path_to_registry:
|
663
|
+
description: Path to the directory containing the query registry files.
|
664
|
+
type: string
|
665
|
+
examples:
|
666
|
+
- config/queries
|
667
|
+
allow_unregistered_clients:
|
668
|
+
description: Whether to allow clients that are not registered in the registry.
|
669
|
+
type: boolean
|
670
|
+
examples:
|
671
|
+
- true
|
672
|
+
- false
|
673
|
+
default: true
|
674
|
+
allow_any_query_for_clients:
|
675
|
+
description: List of client names that are allowed to execute any query, even
|
676
|
+
if not registered.
|
677
|
+
type: array
|
678
|
+
items:
|
679
|
+
type: string
|
680
|
+
examples:
|
681
|
+
- []
|
682
|
+
- - admin
|
683
|
+
- internal
|
684
|
+
default: []
|
685
|
+
required:
|
686
|
+
- path_to_registry
|
687
|
+
additionalProperties: false
|
688
|
+
additionalProperties: true
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elasticgraph-local
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Myron Marston
|
@@ -17,70 +17,70 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - '='
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 1.0.
|
20
|
+
version: 1.0.1
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - '='
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 1.0.
|
27
|
+
version: 1.0.1
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: elasticgraph-graphql
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - '='
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.0.
|
34
|
+
version: 1.0.1
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - '='
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.0.
|
41
|
+
version: 1.0.1
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: elasticgraph-graphiql
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - '='
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 1.0.
|
48
|
+
version: 1.0.1
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - '='
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 1.0.
|
55
|
+
version: 1.0.1
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: elasticgraph-indexer
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - '='
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 1.0.
|
62
|
+
version: 1.0.1
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - '='
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 1.0.
|
69
|
+
version: 1.0.1
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: elasticgraph-schema_definition
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - '='
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: 1.0.
|
76
|
+
version: 1.0.1
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - '='
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: 1.0.
|
83
|
+
version: 1.0.1
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: rackup
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -141,42 +141,42 @@ dependencies:
|
|
141
141
|
requirements:
|
142
142
|
- - '='
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version: 1.0.
|
144
|
+
version: 1.0.1
|
145
145
|
type: :development
|
146
146
|
prerelease: false
|
147
147
|
version_requirements: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
149
|
- - '='
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version: 1.0.
|
151
|
+
version: 1.0.1
|
152
152
|
- !ruby/object:Gem::Dependency
|
153
153
|
name: elasticgraph-elasticsearch
|
154
154
|
requirement: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
156
|
- - '='
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version: 1.0.
|
158
|
+
version: 1.0.1
|
159
159
|
type: :development
|
160
160
|
prerelease: false
|
161
161
|
version_requirements: !ruby/object:Gem::Requirement
|
162
162
|
requirements:
|
163
163
|
- - '='
|
164
164
|
- !ruby/object:Gem::Version
|
165
|
-
version: 1.0.
|
165
|
+
version: 1.0.1
|
166
166
|
- !ruby/object:Gem::Dependency
|
167
167
|
name: elasticgraph-opensearch
|
168
168
|
requirement: !ruby/object:Gem::Requirement
|
169
169
|
requirements:
|
170
170
|
- - '='
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
version: 1.0.
|
172
|
+
version: 1.0.1
|
173
173
|
type: :development
|
174
174
|
prerelease: false
|
175
175
|
version_requirements: !ruby/object:Gem::Requirement
|
176
176
|
requirements:
|
177
177
|
- - '='
|
178
178
|
- !ruby/object:Gem::Version
|
179
|
-
version: 1.0.
|
179
|
+
version: 1.0.1
|
180
180
|
email:
|
181
181
|
- myron@squareup.com
|
182
182
|
executables: []
|
@@ -197,16 +197,17 @@ files:
|
|
197
197
|
- lib/elastic_graph/local/opensearch/docker-compose.yaml
|
198
198
|
- lib/elastic_graph/local/rake_tasks.rb
|
199
199
|
- lib/elastic_graph/local/spec_support/common_project_specs.rb
|
200
|
+
- lib/elastic_graph/local/spec_support/config_schema.yaml
|
200
201
|
- lib/elastic_graph/local/tested_datastore_versions.yaml
|
201
202
|
homepage: https://block.github.io/elasticgraph/
|
202
203
|
licenses:
|
203
204
|
- MIT
|
204
205
|
metadata:
|
205
206
|
bug_tracker_uri: https://github.com/block/elasticgraph/issues
|
206
|
-
changelog_uri: https://github.com/block/elasticgraph/releases/tag/v1.0.
|
207
|
-
documentation_uri: https://block.github.io/elasticgraph/api-docs/v1.0.
|
207
|
+
changelog_uri: https://github.com/block/elasticgraph/releases/tag/v1.0.1
|
208
|
+
documentation_uri: https://block.github.io/elasticgraph/api-docs/v1.0.1/
|
208
209
|
homepage_uri: https://block.github.io/elasticgraph/
|
209
|
-
source_code_uri: https://github.com/block/elasticgraph/tree/v1.0.
|
210
|
+
source_code_uri: https://github.com/block/elasticgraph/tree/v1.0.1/elasticgraph-local
|
210
211
|
gem_category: local
|
211
212
|
rdoc_options: []
|
212
213
|
require_paths:
|