[Index Management] Add an index details page behind a dev feature flag#163521
[Index Management] Add an index details page behind a dev feature flag#163521yuliacech merged 10 commits intoelastic:mainfrom
Conversation
c087dc4 to
69d2b19
Compare
|
Pinging @elastic/platform-deployment-management (Team:Deployment Management) |
thomheymann
left a comment
There was a problem hiding this comment.
security changes LGTM
There was a problem hiding this comment.
Awesome work @yuliacech! I tested locally and all looks good. I left few small comments and also had two points I wanted to raise up. Let me know what you think!
- When navigating to the index details page we dont seem to be updating the breadcrumbs accordingly:
- Currently the index name link opens the details flyout, do we need that flyout still or does it need to be deleted or would this be addressed in a later iteration?
There was a problem hiding this comment.
We'll be adding action buttons on the right side in the next iteration
...s/index_management/public/application/sections/home/index_list/details_page/details_page.tsx
Outdated
Show resolved
Hide resolved
...s/index_management/public/application/sections/home/index_list/details_page/details_page.tsx
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
I think we should also be loading this test file from test/functional/apps/index_management/index.ts as well, otherwise I dont think these tests will be executed 🤔
There was a problem hiding this comment.
My thinking was to have index details page tests run separately, because they need to set --xpack.index_management.dev.enableIndexDetailsPage=true in the config file. I added this config to the buildkite file so that the new tests will run in addition to the normal tests that don't have the config set.
This will need to be merged together at the end of the project when the feature flag will be removed.
There was a problem hiding this comment.
Ohh gotcha now! That makes sense!
… create a skeleton component for the index details page
…-ref HEAD~1..HEAD --fix'
cfb7266 to
7ea1ce0
Compare
|
Thanks a lot for your review and comments, @sabarasaba! |
💚 Build Succeeded
Metrics [docs]Module Count
Async chunks
Page load bundle
History
To update your PR or re-run it, just comment with: |
elastic#163521) ## Summary This PR adds a dev feature flag `xpack.index_management.dev.enableIndexDetailsPage` that will allow us to build out the new index details page in small iterations. Without the flag, the UI of Index Management is not changed. A skeleton component is created for the details page (see screenshot below). ### How to test 1. Test the Index Management UI (Indices tab) without the flag and check that no changes were introduced 1. Add `xpack.index_management.dev.enableIndexDetailsPage: true` to the file `/config/kibana.dev.yml` 2. Navigate to the Indices tab in Index Management, toggle "hidden indices" if no indices exist and click any index name 3. Check that the new index details page is displayed 4. Check that the tabs on the page are working ### Screenshots <img width="1209" alt="Screenshot 2023-08-09 at 19 17 46" src="https://github.com/elastic/kibana/assets/6585477/e654ef36-ccf3-40a4-8c7b-750b83defef5"> ### Checklist Delete any items that are not applicable to this PR. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [ ] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) ### Risk Matrix Delete this section if it is not applicable to this PR. Before closing this PR, invite QA, stakeholders, and other developers to identify risks that should be tested prior to the change/feature release. When forming the risk matrix, consider some of the following examples and how they may potentially impact the change: | Risk | Probability | Severity | Mitigation/Notes | |---------------------------|-------------|----------|-------------------------| | Multiple Spaces—unexpected behavior in non-default Kibana Space. | Low | High | Integration tests will verify that all features are still supported in non-default Kibana Space and when user switches between spaces. | | Multiple nodes—Elasticsearch polling might have race conditions when multiple Kibana nodes are polling for the same tasks. | High | Low | Tasks are idempotent, so executing them multiple times will not result in logical error, but will degrade performance. To test for this case we add plenty of unit tests around this logic and document manual testing procedure. | | Code should gracefully handle cases when feature X or plugin Y are disabled. | Medium | High | Unit tests will verify that any feature flag or plugin combination still results in our service operational. | | [See more potential risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) | ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
#163521) ## Summary This PR adds a dev feature flag `xpack.index_management.dev.enableIndexDetailsPage` that will allow us to build out the new index details page in small iterations. Without the flag, the UI of Index Management is not changed. A skeleton component is created for the details page (see screenshot below). ### How to test 1. Test the Index Management UI (Indices tab) without the flag and check that no changes were introduced 1. Add `xpack.index_management.dev.enableIndexDetailsPage: true` to the file `/config/kibana.dev.yml` 2. Navigate to the Indices tab in Index Management, toggle "hidden indices" if no indices exist and click any index name 3. Check that the new index details page is displayed 4. Check that the tabs on the page are working ### Screenshots <img width="1209" alt="Screenshot 2023-08-09 at 19 17 46" src="https://github.com/elastic/kibana/assets/6585477/e654ef36-ccf3-40a4-8c7b-750b83defef5"> ### Checklist Delete any items that are not applicable to this PR. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [ ] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) ### Risk Matrix Delete this section if it is not applicable to this PR. Before closing this PR, invite QA, stakeholders, and other developers to identify risks that should be tested prior to the change/feature release. When forming the risk matrix, consider some of the following examples and how they may potentially impact the change: | Risk | Probability | Severity | Mitigation/Notes | |---------------------------|-------------|----------|-------------------------| | Multiple Spaces—unexpected behavior in non-default Kibana Space. | Low | High | Integration tests will verify that all features are still supported in non-default Kibana Space and when user switches between spaces. | | Multiple nodes—Elasticsearch polling might have race conditions when multiple Kibana nodes are polling for the same tasks. | High | Low | Tasks are idempotent, so executing them multiple times will not result in logical error, but will degrade performance. To test for this case we add plenty of unit tests around this logic and document manual testing procedure. | | Code should gracefully handle cases when feature X or plugin Y are disabled. | Medium | High | Unit tests will verify that any feature flag or plugin combination still results in our service operational. | | [See more potential risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) | ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
## Summary Follow up to #163521 - A new internal api endpoint to load index data for a single index specified by the index name - An api service to send a request to the new endpoint - A loading and an error state on the new index details page - A "back to all indices" button - A button with the link to Discover - A context menu with index actions (only popover with options is displayed, but the actions are not implemented yet) ### Screenshots <img width="1143" alt="Screenshot 2023-08-23 at 14 31 26" src="https://github.com/elastic/kibana/assets/6585477/06c3eea5-8d35-4c09-9274-fe545bde60ae"> <img width="740" alt="Screenshot 2023-08-22 at 17 43 13" src="https://github.com/elastic/kibana/assets/6585477/11433e81-ef21-43b8-83b4-9c6b4c1c7579"> <img width="644" alt="Screenshot 2023-08-22 at 17 42 30" src="https://github.com/elastic/kibana/assets/6585477/f6649029-af31-47d2-ba6d-4632c0c5b146"> ### How to test 1. Add `xpack.index_management.dev.enableIndexDetailsPage: true` to your `/config/kibana.dev.yml` file 2. Start ES and Kibana with `yarn es snapshot` and `yarn start` 3. Add at least 1 sample data test 4. Navigate to Index Management and click the name of any index 5. Check that the button "back to indices" works (navigates back to the indices list) 6. Check that the button "discover index" works (navigates to Discover) 7. Check that the button "manage index" opens the context menu (_note: index actions are not implemented yet_) 8. Check that there is a loading indicator (by adding throttle in the Network tab of Chrome Dev tools) 9. Check that the error section is displayed and the "reload" button resends a request (by blocking the request in the Network tab of Chrome Dev Tools) ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
## Summary Addresses #164546 Follow up to #163521 and #163955 This PR re-implements index actions in the context menu on the index details page. The actions are implemented without redux which is used in the old index details flyout (to be removed when this work is complete) and in the indices list. The PR introduces a declaration file to list all props of the component `IndexActionsContextMenu` written in JS. There is also a new component `ManageIndexButton` that implements index actions specifically to be executed on the new index details page. In the future most of the code in the component `ManageIndexButton` can be re-used when more refactorings will be made (switching to TS and not using redux in the indices list). All index actions are async and I added a loading indicator to the context menu button to indicate that requests are in flight updating the index. ### Screen recordings https://github.com/elastic/kibana/assets/6585477/c39f1450-b495-4c50-b4ca-8989a2259ed5 Add/remove ILM policy actions with a confirmation modal https://github.com/elastic/kibana/assets/6585477/964931c9-b926-4ed4-aa5c-218f52881131 ### How to test 1. Add `xpack.index_management.dev.enableIndexDetailsPage: true` to your `/config/kibana.dev.yml` file 7. Start ES and Kibana with `yarn es snapshot` and `yarn start` 8. Add several indices to test with the command `PUT /test_index` in Dev Tools Console 9. Navigate to Index Management and click the name of any index 10. Check index actions: - [x] Close index - [x] Open index - [x] Force merge index - [x] Refresh index - [x] Clear index cache - [x] Flush index - [ ] Unfreeze index (not sure how to add a frozen index) - [x] Delete index - [x] ILM: add lifecycle policy - [x] ILM: remove lifecycle policy - [x] ILM: retry lifecycle policy (add any built-in policy and wait a couple of minutes until the rollover fails) ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios
## Summary This PR removes the feature flag and enables the new index details page by default. The index details page was implemented in following PRs: - #163521 - #163955 - #164741 - #165027 - #165038 - #165456 In this PR we completely remove now obsolete code for the old index details flyout: react components and corresponding redux code. All related tests are updated and cleaned up. The config value for Index Management plugin `xpack.index_management.dev.enableIndexDetailsPage` is deprecated as unused and can be removed in v9.0. ### How to test 1. Start ES and Kibana with `yarn es snapshot` and `yarn start` 3. Navigate to Index Management and create an index 4. Click the index name in the table and check the tabs of the details page ### Screenshots #### Stateful Overview <img width="1387" alt="Screenshot 2023-09-27 at 14 41 57" src="https://github.com/elastic/kibana/assets/6585477/e58b15e7-d10c-4473-873c-d0f128392404"> Mappings <img width="1392" alt="Screenshot 2023-09-27 at 14 42 05" src="https://github.com/elastic/kibana/assets/6585477/441157cb-5a26-47c3-8da0-b4df51ebec5d"> Settings <img width="1385" alt="Screenshot 2023-09-27 at 14 42 13" src="https://github.com/elastic/kibana/assets/6585477/da66a2eb-1f21-44c1-9356-484c66caab88"> Statistics <img width="1380" alt="Screenshot 2023-09-27 at 14 42 22" src="https://github.com/elastic/kibana/assets/6585477/ec93d85c-e754-4c21-88ab-0124dc114fc9"> Error loading data <img width="1333" alt="Screenshot 2023-09-26 at 19 05 37" src="https://github.com/elastic/kibana/assets/6585477/fc1804b3-6aa0-4019-bae6-e7bb40113b28"> <img width="1327" alt="Screenshot 2023-09-26 at 19 06 07" src="https://github.com/elastic/kibana/assets/6585477/ca711697-cc74-4ba8-b17c-ec9b01f3026e"> <img width="1329" alt="Screenshot 2023-09-26 at 19 06 28" src="https://github.com/elastic/kibana/assets/6585477/0cb46b09-8542-452a-8845-40d060057e95"> <img width="1331" alt="Screenshot 2023-09-26 at 19 06 48" src="https://github.com/elastic/kibana/assets/6585477/87de8d3d-b6e5-4e8f-b27c-18a1c6e950d8"> Error saving index settings <img width="1332" alt="Screenshot 2023-09-26 at 19 07 31" src="https://github.com/elastic/kibana/assets/6585477/e6e4b3d0-c237-4d0a-995a-4562bc78f88e"> ### Serverless Overview <img width="1336" alt="Screenshot 2023-09-26 at 19 51 47" src="https://github.com/elastic/kibana/assets/6585477/6c76c23b-4be6-4ab3-ae1d-c7ae751e100d"> Mappings <img width="1336" alt="Screenshot 2023-09-26 at 19 23 51" src="https://github.com/elastic/kibana/assets/6585477/625fa703-506f-4389-9df0-86441a655074"> Settings <img width="1332" alt="Screenshot 2023-09-26 at 19 24 02" src="https://github.com/elastic/kibana/assets/6585477/c496ab09-f2db-4c1b-9fb6-1e9b64b1c142"> # Release note Index details can now be viewed on a new index details page in Index Management. <img width="1387" alt="Screenshot 2023-09-27 at 14 41 57" src="https://github.com/elastic/kibana/assets/6585477/b90c706d-8b15-49e4-8f6a-cb66f3ed1822"> --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Summary
This PR adds a dev feature flag
xpack.index_management.dev.enableIndexDetailsPagethat will allow us to build out the new index details page in small iterations. Without the flag, the UI of Index Management is not changed. A skeleton component is created for the details page (see screenshot below).How to test
xpack.index_management.dev.enableIndexDetailsPage: trueto the file/config/kibana.dev.ymlScreenshots
Checklist
Delete any items that are not applicable to this PR.
Risk Matrix
Delete this section if it is not applicable to this PR.
Before closing this PR, invite QA, stakeholders, and other developers to identify risks that should be tested prior to the change/feature release.
When forming the risk matrix, consider some of the following examples and how they may potentially impact the change:
For maintainers