From c51aa2e8f031224aff5fda7a4961f5f4a115bed0 Mon Sep 17 00:00:00 2001 From: "Daniel (dB.) Doubrovkine" Date: Sun, 24 Nov 2024 17:04:20 -0500 Subject: [PATCH] Test and fix remaining /_ingest paths. (#689) * Add sort parameter to /_ingest/processor/grok. Signed-off-by: dblock * Fix /_ingest/pipeline/{id}/_simulate doc/_source field schema. Signed-off-by: dblock --------- Signed-off-by: dblock Signed-off-by: Thomas Farr Co-authored-by: Thomas Farr --- CHANGELOG.md | 2 + spec/namespaces/ingest.yaml | 10 ++- spec/schemas/ingest.simulate.yaml | 3 +- tests/default/ingest/pipeline.yaml | 65 ++++++++++++++++ tests/default/ingest/pipeline/simulate.yaml | 86 +++++++++++++++++++++ tests/default/ingest/processor/grok.yaml | 16 ++++ 6 files changed, 179 insertions(+), 3 deletions(-) create mode 100644 tests/default/ingest/pipeline.yaml create mode 100644 tests/default/ingest/pipeline/simulate.yaml create mode 100644 tests/default/ingest/processor/grok.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 014612bee..24c96eac9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Added `/_list/indices` & `/_list/shards` api specs ([#613](https://github.com/opensearch-project/opensearch-api-specification/pull/613)) - Added `GET` and `HEAD /{index}/_source/{id}` returning `404` ([#673](https://github.com/opensearch-project/opensearch-api-specification/pull/673)) - Added `rename_alias_pattern` and `rename_alias_replacment` to `/_snapshot/{repository}/{snapshot}/_restore` body parameters ([#615](https://github.com/opensearch-project/opensearch-api-specification/pull/615)) +- Added `s` to `/_ingest/processor/grok` ([#689](https://github.com/opensearch-project/opensearch-api-specification/pull/689)) ### Removed - Removed unsupported `_common.mapping:SourceField`'s `mode` field and associated `_common.mapping:SourceFieldMode` enum ([#652](https://github.com/opensearch-project/opensearch-api-specification/pull/652)) @@ -39,6 +40,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Fixed `value` type in `ExplanationDetail` and added `_type` to `explain@200` ([#685](https://github.com/opensearch-project/opensearch-api-specification/pull/685)) - Fixed index settings types ([#684](https://github.com/opensearch-project/opensearch-api-specification/pull/684)) - Fixed `POST` and `DELETE /_dangling/{index_uuid}` returning `202` ([#686](https://github.com/opensearch-project/opensearch-api-specification/pull/686)) +- Fixed `/_ingest/pipeline/{id}/_simulate` response `docs/_source` field schema ([#689](https://github.com/opensearch-project/opensearch-api-specification/pull/689)) ### Changed - Changed `tasks._common:TaskInfo` and `tasks._common:TaskGroup` to be composed of a `tasks._common:TaskInfoBase` ([#683](https://github.com/opensearch-project/opensearch-api-specification/pull/683)) diff --git a/spec/namespaces/ingest.yaml b/spec/namespaces/ingest.yaml index ed6f3c380..4c5bed58f 100644 --- a/spec/namespaces/ingest.yaml +++ b/spec/namespaces/ingest.yaml @@ -133,7 +133,8 @@ paths: description: Returns a list of the built-in patterns. externalDocs: url: https://opensearch.org/docs/latest - parameters: [] + parameters: + - $ref: '#/components/parameters/ingest.processor_grok::query.s' responses: '200': $ref: '#/components/responses/ingest.processor_grok@200' @@ -340,3 +341,10 @@ components: type: boolean default: false style: form + ingest.processor_grok::query.s: + name: s + in: query + description: Sort returned patterns by key name. + schema: + type: boolean + default: false diff --git a/spec/schemas/ingest.simulate.yaml b/spec/schemas/ingest.simulate.yaml index 4b525dbf6..3a23f027b 100644 --- a/spec/schemas/ingest.simulate.yaml +++ b/spec/schemas/ingest.simulate.yaml @@ -48,8 +48,7 @@ components: _source: description: JSON body for the document. type: object - additionalProperties: - type: object + additionalProperties: true _version: $ref: '_common.yaml#/components/schemas/StringifiedVersionNumber' _version_type: diff --git a/tests/default/ingest/pipeline.yaml b/tests/default/ingest/pipeline.yaml new file mode 100644 index 000000000..66724ce81 --- /dev/null +++ b/tests/default/ingest/pipeline.yaml @@ -0,0 +1,65 @@ +$schema: ../../../json_schemas/test_story.schema.yaml + +description: Test the creation of an ingest pipeline. +epilogues: + - path: /_ingest/pipeline/books_pipeline + method: DELETE + status: [200, 404] + - path: /_ingest/pipeline/movies_pipeline + method: DELETE + status: [200, 404] +version: '>= 2.11' +chapters: + - synopsis: Create a books ingest pipeline. + path: /_ingest/pipeline/{id} + method: PUT + parameters: + id: books_pipeline + request: + payload: + description: A books pipeline that does nothing. + processors: [] + response: + status: 200 + payload: + acknowledged: true + - synopsis: Create a movies ingest pipeline. + path: /_ingest/pipeline/{id} + method: PUT + parameters: + id: movies_pipeline + request: + payload: + description: A movies pipeline that does nothing. + processors: [] + response: + status: 200 + payload: + acknowledged: true + - synopsis: Query created books pipeline. + path: /_ingest/pipeline/{id} + method: GET + parameters: + id: books_pipeline + response: + status: 200 + payload: + books_pipeline: + description: A books pipeline that does nothing. + - synopsis: Query all pipelines. + path: /_ingest/pipeline + method: GET + response: + status: 200 + payload: + books_pipeline: + description: A books pipeline that does nothing. + movies_pipeline: + description: A movies pipeline that does nothing. + - synopsis: Delete the books pipeline. + path: /_ingest/pipeline/{id} + method: DELETE + parameters: + id: books_pipeline + response: + status: 200 diff --git a/tests/default/ingest/pipeline/simulate.yaml b/tests/default/ingest/pipeline/simulate.yaml new file mode 100644 index 000000000..7124715f6 --- /dev/null +++ b/tests/default/ingest/pipeline/simulate.yaml @@ -0,0 +1,86 @@ +$schema: ../../../../json_schemas/test_story.schema.yaml + +description: Test the simulation of an ingest pipeline. +version: '>= 2.11' +epilogues: + - path: /_ingest/pipeline/movies_pipeline + method: DELETE + status: [200, 404] +prologues: + - path: /_ingest/pipeline/movies_pipeline + method: PUT + request: + payload: + description: A movies pipeline that does nothing. + processors: [] +chapters: + - synopsis: Simulate an existing ingest pipeline (GET). + path: /_ingest/pipeline/{id}/_simulate + method: GET + parameters: + id: movies_pipeline + verbose: true + request: + payload: + docs: + - _index: movies + _id: '1' + _source: + title: The Cruise + director: Bennett Miller, + year: 1998 + response: + status: 200 + payload: + docs: + - processor_results: [] + - synopsis: Simulate an existing ingest pipeline (POST). + path: /_ingest/pipeline/{id}/_simulate + method: POST + parameters: + id: movies_pipeline + request: + payload: + docs: + - _index: movies + _id: '1' + _source: + title: The Cruise + director: Bennett Miller, + year: 1998 + response: + status: 200 + - synopsis: Simulate an ingest pipeline with the pipeline in the request body (GET). + path: /_ingest/pipeline/_simulate + method: GET + request: + payload: + pipeline: + description: A movies pipeline that does nothing. + processors: [] + docs: + - _index: movies + _id: '1' + _source: + title: The Cruise + director: Bennett Miller, + year: 1998 + response: + status: 200 + - synopsis: Simulate an ingest pipeline with the pipeline in the request body (POST). + path: /_ingest/pipeline/_simulate + method: POST + request: + payload: + pipeline: + description: A movies pipeline that does nothing. + processors: [] + docs: + - _index: movies + _id: '1' + _source: + title: The Cruise + director: Bennett Miller, + year: 1998 + response: + status: 200 diff --git a/tests/default/ingest/processor/grok.yaml b/tests/default/ingest/processor/grok.yaml new file mode 100644 index 000000000..319ee4b98 --- /dev/null +++ b/tests/default/ingest/processor/grok.yaml @@ -0,0 +1,16 @@ +$schema: ../../../../json_schemas/test_story.schema.yaml + +description: Test retrieving grok processor patterns. +chapters: + - synopsis: Retrieve the patterns included with the grok processor. + path: /_ingest/processor/grok + method: GET + response: + status: 200 + - synopsis: Retrieve the patterns included with the grok processor by key name. + path: /_ingest/processor/grok + method: GET + parameters: + s: true + response: + status: 200