Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
# Backport This will backport the following commits from `main` to `8.x`: - [Handle both JSON and XJSON in processor editor (#200692)](#200692) <!--- Backport version: 9.4.3 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) <!--BACKPORT [{"author":{"name":"Sonia Sanz Vivas","email":"[email protected]"},"sourceCommit":{"committedDate":"2024-11-27T06:42:30Z","message":"Handle both JSON and XJSON in processor editor (#200692)\n\nCloses [#175753](https://github.com/elastic/kibana/issues/175753)\r\n\r\n## Summary\r\nWhen a user creates a pipeline with a processor that has an JSON editor\r\nfield [Foreach, Grok, Inference, Redact and Script], our editor convert\r\nthe input to XJSON. This can be confused to the user, who see their\r\ninput modified without understanding the reason. For that, this PR\r\ncreates a new editor that handles both XJSON and JSON format and does\r\nnot changes the content that the user introduced while editing. Once the\r\npipeline is saved, it will always retrieve the parsed data.\r\n\r\nI've created a whole new editor instead of modifying `XJsonEditor`\r\nbecause the original one is still in use in the `Custom processor`. This\r\nis because I've created [a\r\nlist](https://github.com/SoniaSanzV/kibana/blob/d7d5ecafa7dbae96fe52c2e37394520b6353bd92/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/utils.ts#L151-L157)\r\nof the processor fields that needs to be serialized in\r\n`convertProcessorInternalToProcessor`. Since we don't know the name of\r\nthe custom processor, we can't apply this workflow. I'm not super happy\r\nwith the idea of adding manually the names of the processors to a list.\r\nI would like to have something more agnostic but I haven't come up with\r\na solution that allows me to do that without breaking other fields. So,\r\nany suggestions are super welcome!\r\n\r\n### How to test\r\nCreate one of the following processors: Foreach, Grok, Inference, Redact\r\nor Script. In the JSON field, add a JSON with both with and without\r\nescaped strings. While you are editing the processor before saving the\r\npipeline, you should see the processor as you typed it. In the `Show\r\nRequest` flyout, you should see the properly parsed JSON.\r\n\r\nThe pipeline should save with the correct parsed values and, once saved,\r\nif you click update, you only will get parsed values.\r\n\r\n### Demo\r\n\r\n\r\nhttps://github.com/user-attachments/assets/1f9681df-2fb4-4ed5-ac30-03f2937abfe9","sha":"8839894646451144a9534157c08cde18727aa240","branchLabelMapping":{"^v9.0.0$":"main","^v8.18.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Team:Kibana Management","release_note:skip","v9.0.0","Feature:Ingest Node Pipelines","backport:prev-minor"],"title":"Handle both JSON and XJSON in processor editor","number":200692,"url":"https://github.com/elastic/kibana/pull/200692","mergeCommit":{"message":"Handle both JSON and XJSON in processor editor (#200692)\n\nCloses [#175753](https://github.com/elastic/kibana/issues/175753)\r\n\r\n## Summary\r\nWhen a user creates a pipeline with a processor that has an JSON editor\r\nfield [Foreach, Grok, Inference, Redact and Script], our editor convert\r\nthe input to XJSON. This can be confused to the user, who see their\r\ninput modified without understanding the reason. For that, this PR\r\ncreates a new editor that handles both XJSON and JSON format and does\r\nnot changes the content that the user introduced while editing. Once the\r\npipeline is saved, it will always retrieve the parsed data.\r\n\r\nI've created a whole new editor instead of modifying `XJsonEditor`\r\nbecause the original one is still in use in the `Custom processor`. This\r\nis because I've created [a\r\nlist](https://github.com/SoniaSanzV/kibana/blob/d7d5ecafa7dbae96fe52c2e37394520b6353bd92/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/utils.ts#L151-L157)\r\nof the processor fields that needs to be serialized in\r\n`convertProcessorInternalToProcessor`. Since we don't know the name of\r\nthe custom processor, we can't apply this workflow. I'm not super happy\r\nwith the idea of adding manually the names of the processors to a list.\r\nI would like to have something more agnostic but I haven't come up with\r\na solution that allows me to do that without breaking other fields. So,\r\nany suggestions are super welcome!\r\n\r\n### How to test\r\nCreate one of the following processors: Foreach, Grok, Inference, Redact\r\nor Script. In the JSON field, add a JSON with both with and without\r\nescaped strings. While you are editing the processor before saving the\r\npipeline, you should see the processor as you typed it. In the `Show\r\nRequest` flyout, you should see the properly parsed JSON.\r\n\r\nThe pipeline should save with the correct parsed values and, once saved,\r\nif you click update, you only will get parsed values.\r\n\r\n### Demo\r\n\r\n\r\nhttps://github.com/user-attachments/assets/1f9681df-2fb4-4ed5-ac30-03f2937abfe9","sha":"8839894646451144a9534157c08cde18727aa240"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.0.0","branchLabelMappingKey":"^v9.0.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/200692","number":200692,"mergeCommit":{"message":"Handle both JSON and XJSON in processor editor (#200692)\n\nCloses [#175753](https://github.com/elastic/kibana/issues/175753)\r\n\r\n## Summary\r\nWhen a user creates a pipeline with a processor that has an JSON editor\r\nfield [Foreach, Grok, Inference, Redact and Script], our editor convert\r\nthe input to XJSON. This can be confused to the user, who see their\r\ninput modified without understanding the reason. For that, this PR\r\ncreates a new editor that handles both XJSON and JSON format and does\r\nnot changes the content that the user introduced while editing. Once the\r\npipeline is saved, it will always retrieve the parsed data.\r\n\r\nI've created a whole new editor instead of modifying `XJsonEditor`\r\nbecause the original one is still in use in the `Custom processor`. This\r\nis because I've created [a\r\nlist](https://github.com/SoniaSanzV/kibana/blob/d7d5ecafa7dbae96fe52c2e37394520b6353bd92/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/utils.ts#L151-L157)\r\nof the processor fields that needs to be serialized in\r\n`convertProcessorInternalToProcessor`. Since we don't know the name of\r\nthe custom processor, we can't apply this workflow. I'm not super happy\r\nwith the idea of adding manually the names of the processors to a list.\r\nI would like to have something more agnostic but I haven't come up with\r\na solution that allows me to do that without breaking other fields. So,\r\nany suggestions are super welcome!\r\n\r\n### How to test\r\nCreate one of the following processors: Foreach, Grok, Inference, Redact\r\nor Script. In the JSON field, add a JSON with both with and without\r\nescaped strings. While you are editing the processor before saving the\r\npipeline, you should see the processor as you typed it. In the `Show\r\nRequest` flyout, you should see the properly parsed JSON.\r\n\r\nThe pipeline should save with the correct parsed values and, once saved,\r\nif you click update, you only will get parsed values.\r\n\r\n### Demo\r\n\r\n\r\nhttps://github.com/user-attachments/assets/1f9681df-2fb4-4ed5-ac30-03f2937abfe9","sha":"8839894646451144a9534157c08cde18727aa240"}}]}] BACKPORT--> Co-authored-by: Sonia Sanz Vivas <[email protected]>
- Loading branch information