Skip to content

Conversation

@ElenaStoeva
Copy link
Contributor

@ElenaStoeva ElenaStoeva commented Jul 21, 2025

Addresses #227405

Screen.Recording.2025-07-29.at.18.13.39.mov

Summary

This PR adds the Ingest pipeline structure tree to the ingest pipelines details flyout.

How to test:

  1. Run the following requests in Console (you can run them all at once) to create a sample ingest pipeline tree:
Console requests:
PUT _ingest/pipeline/level-8-1
{
  "processors": []
}

PUT _ingest/pipeline/level-8-2
{
  "processors": []
}

PUT _ingest/pipeline/level-7-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-8-1"
      }
    },
    {
      "pipeline": {
        "name": "level-8-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-7-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-8-1"
      }
    },
    {
      "pipeline": {
        "name": "level-8-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-6-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-7-1"
      }
    },
    {
      "pipeline": {
        "name": "level-7-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-6-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-7-1"
      }
    },
    {
      "pipeline": {
        "name": "level-7-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-5-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-6-1"
      }
    },
    {
      "pipeline": {
        "name": "level-6-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-5-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-6-1"
      }
    },
    {
      "pipeline": {
        "name": "level-6-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-4-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-5-1"
      }
    },
    {
      "pipeline": {
        "name": "level-5-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-4-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-5-1"
      }
    },
    {
      "pipeline": {
        "name": "level-5-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-3-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-4-1"
      }
    },
    {
      "pipeline": {
        "name": "level-4-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-3-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-4-1"
      }
    },
    {
      "pipeline": {
        "name": "level-4-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-2-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-3-1"
      }
    },
    {
      "pipeline": {
        "name": "level-3-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-2-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-3-1"
      }
    },
    {
      "pipeline": {
        "name": "level-3-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-2-1"
      }
    },
    {
      "pipeline": {
        "name": "level-2-2"
      }
    },
    {
      "pipeline": {
        "name": "non-existing"
      }
    }
  ]
}
  1. Go to Ingest pipelines and click on any of the created pipelines. Verify that the tree is working as expected. Verify that the footer action buttons also work as expected (edit/clone/delete)
  2. Verify that tree view is only displayed if the root has children.
  3. Verify that navigating to a non-existing pipeline through the URL opens the flyout with an error banner and without the tree.
  4. Verify that when you open a non-exisisting pipeline by clicking on a tree node, a warning banner is displayed.
  5. Verify that in smaller screens only one panel is displayed at a time.
  6. To test in Streams, enable streams with POST kbn:/api/streams/_enable and create sample date with node scripts/synthtrace.js sample_logs --live --kibana=http://elastic:changeme@localhost:5601 --target=http://elastic:changeme@localhost:9200 --liveBucketSize=1000

@ElenaStoeva ElenaStoeva added Team:Kibana Management Dev Tools, Index Management, Upgrade Assistant, ILM, Ingest Node Pipelines, and more t// Feature:Ingest Node Pipelines Ingest node pipelines management release_note:skip Skip the PR/issue when compiling release notes backport:skip This PR does not require backporting v9.2.0 labels Jul 21, 2025
@ElenaStoeva ElenaStoeva self-assigned this Jul 21, 2025
@ElenaStoeva ElenaStoeva marked this pull request as ready for review July 25, 2025 13:09
@ElenaStoeva ElenaStoeva requested a review from a team as a code owner July 25, 2025 13:09
@elasticmachine
Copy link
Contributor

Pinging @elastic/kibana-management (Team:Kibana Management)

@ElenaStoeva
Copy link
Contributor Author

Converting to a draft as there were some additional changes in the design mocks

@ElenaStoeva ElenaStoeva marked this pull request as draft July 28, 2025 06:59
@ElenaStoeva ElenaStoeva marked this pull request as ready for review July 29, 2025 17:17
Copy link
Contributor

@SoniaSanzV SoniaSanzV left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @ElenaStoeva! Thank you for this, I did a first local review and in general looks great! But I found a problem in the Streams page. I ran the script and added to the logs@custom a pipeline processor pointing to the level-1 so I have more pipelines to test in the Streams page. It works well for the first levels, but when I click more pipelines the flyout closes and the UI goes back to the Streams list.

Screen.Recording.2025-07-31.at.10.35.52.mov

@ElenaStoeva
Copy link
Contributor Author

Thanks for reviewing @SoniaSanzV and nice catch! I fixed this issue with the last commit. Please let me know if you see any other issues.

Copy link
Contributor

@SoniaSanzV SoniaSanzV left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tested locally, LGTM! I really appreciate the work for making the panel responsive!

@elasticmachine
Copy link
Contributor

💛 Build succeeded, but was flaky

Failed CI Steps

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
ingestPipelines 334 349 +15

Public APIs missing comments

Total count of every public API that lacks a comment. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats comments for more detailed information.

id before after diff
@kbn/ingest-pipelines-shared 7 6 -1

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
ingestPipelines 361.5KB 366.9KB +5.4KB

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
ingestPipelines 15.9KB 16.0KB +144.0B

History

cc @ElenaStoeva

@ElenaStoeva ElenaStoeva merged commit 6bbe8ef into elastic:main Aug 1, 2025
12 checks passed
szaffarano pushed a commit to szaffarano/kibana that referenced this pull request Aug 5, 2025
Addresses elastic#227405



https://github.com/user-attachments/assets/1473ade0-19cb-4892-a64a-2ed4374e3879



## Summary

This PR adds the Ingest pipeline structure tree to the ingest pipelines
details flyout.

**How to test:**

1. Run the following requests in Console (you can run them all at once)
to create a sample ingest pipeline tree:

<details>
<summary>Console requests:</summary>

```
PUT _ingest/pipeline/level-8-1
{
  "processors": []
}

PUT _ingest/pipeline/level-8-2
{
  "processors": []
}

PUT _ingest/pipeline/level-7-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-8-1"
      }
    },
    {
      "pipeline": {
        "name": "level-8-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-7-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-8-1"
      }
    },
    {
      "pipeline": {
        "name": "level-8-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-6-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-7-1"
      }
    },
    {
      "pipeline": {
        "name": "level-7-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-6-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-7-1"
      }
    },
    {
      "pipeline": {
        "name": "level-7-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-5-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-6-1"
      }
    },
    {
      "pipeline": {
        "name": "level-6-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-5-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-6-1"
      }
    },
    {
      "pipeline": {
        "name": "level-6-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-4-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-5-1"
      }
    },
    {
      "pipeline": {
        "name": "level-5-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-4-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-5-1"
      }
    },
    {
      "pipeline": {
        "name": "level-5-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-3-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-4-1"
      }
    },
    {
      "pipeline": {
        "name": "level-4-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-3-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-4-1"
      }
    },
    {
      "pipeline": {
        "name": "level-4-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-2-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-3-1"
      }
    },
    {
      "pipeline": {
        "name": "level-3-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-2-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-3-1"
      }
    },
    {
      "pipeline": {
        "name": "level-3-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-2-1"
      }
    },
    {
      "pipeline": {
        "name": "level-2-2"
      }
    },
    {
      "pipeline": {
        "name": "non-existing"
      }
    }
  ]
}
```

</details>

2. Go to Ingest pipelines and click on any of the created pipelines.
Verify that the tree is working as expected. Verify that the footer
action buttons also work as expected (edit/clone/delete)
3. Verify that tree view is only displayed if the root has children.
4. Verify that navigating to a non-existing pipeline through the URL
opens the flyout with an error banner and without the tree.
5. Verify that when you open a non-exisisting pipeline by clicking on a
tree node, a warning banner is displayed.
6. Verify that in smaller screens only one panel is displayed at a time.
7. To test in Streams, enable streams with `POST
kbn:/api/streams/_enable` and create sample date with `node
scripts/synthtrace.js sample_logs --live
--kibana=http://elastic:changeme@localhost:5601
--target=http://elastic:changeme@localhost:9200 --liveBucketSize=1000`

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
delanni pushed a commit to delanni/kibana that referenced this pull request Aug 5, 2025
Addresses elastic#227405



https://github.com/user-attachments/assets/1473ade0-19cb-4892-a64a-2ed4374e3879



## Summary

This PR adds the Ingest pipeline structure tree to the ingest pipelines
details flyout.

**How to test:**

1. Run the following requests in Console (you can run them all at once)
to create a sample ingest pipeline tree:

<details>
<summary>Console requests:</summary>

```
PUT _ingest/pipeline/level-8-1
{
  "processors": []
}

PUT _ingest/pipeline/level-8-2
{
  "processors": []
}

PUT _ingest/pipeline/level-7-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-8-1"
      }
    },
    {
      "pipeline": {
        "name": "level-8-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-7-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-8-1"
      }
    },
    {
      "pipeline": {
        "name": "level-8-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-6-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-7-1"
      }
    },
    {
      "pipeline": {
        "name": "level-7-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-6-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-7-1"
      }
    },
    {
      "pipeline": {
        "name": "level-7-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-5-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-6-1"
      }
    },
    {
      "pipeline": {
        "name": "level-6-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-5-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-6-1"
      }
    },
    {
      "pipeline": {
        "name": "level-6-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-4-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-5-1"
      }
    },
    {
      "pipeline": {
        "name": "level-5-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-4-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-5-1"
      }
    },
    {
      "pipeline": {
        "name": "level-5-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-3-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-4-1"
      }
    },
    {
      "pipeline": {
        "name": "level-4-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-3-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-4-1"
      }
    },
    {
      "pipeline": {
        "name": "level-4-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-2-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-3-1"
      }
    },
    {
      "pipeline": {
        "name": "level-3-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-2-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-3-1"
      }
    },
    {
      "pipeline": {
        "name": "level-3-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-2-1"
      }
    },
    {
      "pipeline": {
        "name": "level-2-2"
      }
    },
    {
      "pipeline": {
        "name": "non-existing"
      }
    }
  ]
}
```

</details>

2. Go to Ingest pipelines and click on any of the created pipelines.
Verify that the tree is working as expected. Verify that the footer
action buttons also work as expected (edit/clone/delete)
3. Verify that tree view is only displayed if the root has children.
4. Verify that navigating to a non-existing pipeline through the URL
opens the flyout with an error banner and without the tree.
5. Verify that when you open a non-exisisting pipeline by clicking on a
tree node, a warning banner is displayed.
6. Verify that in smaller screens only one panel is displayed at a time.
7. To test in Streams, enable streams with `POST
kbn:/api/streams/_enable` and create sample date with `node
scripts/synthtrace.js sample_logs --live
--kibana=http://elastic:changeme@localhost:5601
--target=http://elastic:changeme@localhost:9200 --liveBucketSize=1000`

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
@wildemat wildemat mentioned this pull request Aug 7, 2025
10 tasks
NicholasPeretti pushed a commit to NicholasPeretti/kibana that referenced this pull request Aug 18, 2025
Addresses elastic#227405



https://github.com/user-attachments/assets/1473ade0-19cb-4892-a64a-2ed4374e3879



## Summary

This PR adds the Ingest pipeline structure tree to the ingest pipelines
details flyout.

**How to test:**

1. Run the following requests in Console (you can run them all at once)
to create a sample ingest pipeline tree:

<details>
<summary>Console requests:</summary>

```
PUT _ingest/pipeline/level-8-1
{
  "processors": []
}

PUT _ingest/pipeline/level-8-2
{
  "processors": []
}

PUT _ingest/pipeline/level-7-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-8-1"
      }
    },
    {
      "pipeline": {
        "name": "level-8-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-7-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-8-1"
      }
    },
    {
      "pipeline": {
        "name": "level-8-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-6-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-7-1"
      }
    },
    {
      "pipeline": {
        "name": "level-7-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-6-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-7-1"
      }
    },
    {
      "pipeline": {
        "name": "level-7-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-5-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-6-1"
      }
    },
    {
      "pipeline": {
        "name": "level-6-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-5-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-6-1"
      }
    },
    {
      "pipeline": {
        "name": "level-6-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-4-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-5-1"
      }
    },
    {
      "pipeline": {
        "name": "level-5-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-4-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-5-1"
      }
    },
    {
      "pipeline": {
        "name": "level-5-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-3-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-4-1"
      }
    },
    {
      "pipeline": {
        "name": "level-4-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-3-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-4-1"
      }
    },
    {
      "pipeline": {
        "name": "level-4-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-2-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-3-1"
      }
    },
    {
      "pipeline": {
        "name": "level-3-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-2-2
{
  "processors": [
    {
      "pipeline": {
        "name": "level-3-1"
      }
    },
    {
      "pipeline": {
        "name": "level-3-2"
      }
    }
  ]
}

PUT _ingest/pipeline/level-1
{
  "processors": [
    {
      "pipeline": {
        "name": "level-2-1"
      }
    },
    {
      "pipeline": {
        "name": "level-2-2"
      }
    },
    {
      "pipeline": {
        "name": "non-existing"
      }
    }
  ]
}
```

</details>

2. Go to Ingest pipelines and click on any of the created pipelines.
Verify that the tree is working as expected. Verify that the footer
action buttons also work as expected (edit/clone/delete)
3. Verify that tree view is only displayed if the root has children.
4. Verify that navigating to a non-existing pipeline through the URL
opens the flyout with an error banner and without the tree.
5. Verify that when you open a non-exisisting pipeline by clicking on a
tree node, a warning banner is displayed.
6. Verify that in smaller screens only one panel is displayed at a time.
7. To test in Streams, enable streams with `POST
kbn:/api/streams/_enable` and create sample date with `node
scripts/synthtrace.js sample_logs --live
--kibana=http://elastic:changeme@localhost:5601
--target=http://elastic:changeme@localhost:9200 --liveBucketSize=1000`

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:skip This PR does not require backporting Feature:Ingest Node Pipelines Ingest node pipelines management release_note:skip Skip the PR/issue when compiling release notes Team:Kibana Management Dev Tools, Index Management, Upgrade Assistant, ILM, Ingest Node Pipelines, and more t// v9.2.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants