-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[APM] Add validations to general settings #175874
[APM] Add validations to general settings #175874
Conversation
9764c81
to
cb322c9
Compare
/ci |
Pinging @elastic/obs-ux-infra_services-team (Team:obs-ux-infra_services) |
Pinging @elastic/platform-deployment-management (Team:Deployment Management) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM: just a nit
@@ -118,7 +115,8 @@ export function GeneralSettings() { | |||
links: docLinks.links.management, | |||
showDanger: (message: string) => | |||
notifications.toasts.addDanger(message), | |||
validateChange: async () => settingsValidationResponse, | |||
validateChange: async (key: string, value: any) => |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you don't need to add async
here, settings.client.validateValue
returns a promise already.
validateChange: async (key: string, value: any) => | |
validateChange: (key: string, value: any) => |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice catch! Fixed in bd9b76c.
💛 Build succeeded, but was flaky
Failed CI StepsTest Failures
Metrics [docs]Async chunks
History
To update your PR or re-run it, just comment with: cc @ElenaStoeva |
## Summary In elastic#174712, we integrated the new settings field component into APM General settings. The new setting field supports validation on the user input, based on the `schema` of the given setting. Since some of the APM General settings have `schema` with specified restrictions, which were not enforced in the UI before, this PR adds schema validation so that they are enforced. Note that this validation adds some performance overhead as it sends a request to the server (to the `internal/kibana/settings/validate` endpoint) for every user input change. It's up to the team to decide whether you think that is okay for the app and whether validation for these settings is really beneficial to have. **Settings with `schema` restrictions:** [apmServiceGroupMaxNumberOfServices](https://github.com/elastic/kibana/blob/b4d93fc145c3c09eb1096c610b7cd736f19f6a3a/x-pack/plugins/observability/server/ui_settings.ts#L189) (currently input value `0` is not validated but a fix is coming with elastic#175957): <img width="1071" alt="Screenshot 2024-01-31 at 08 57 58" src="https://github.com/elastic/kibana/assets/59341489/35d9a4fc-4641-4603-97f9-9fbc1a76a778"> [observability:apmAWSLambdaPriceFactor](https://github.com/elastic/kibana/blob/b4d93fc145c3c09eb1096c610b7cd736f19f6a3a/x-pack/plugins/observability/server/ui_settings.ts#L315): <img width="1071" alt="Screenshot 2024-01-31 at 08 58 39" src="https://github.com/elastic/kibana/assets/59341489/810948f5-134a-49ec-8d6e-b15ea7896624"> [observability:apmAWSLambdaRequestCostPerMillion](https://github.com/elastic/kibana/blob/b4d93fc145c3c09eb1096c610b7cd736f19f6a3a/x-pack/plugins/observability/server/ui_settings.ts#L326): <img width="1071" alt="Screenshot 2024-01-31 at 08 59 36" src="https://github.com/elastic/kibana/assets/59341489/269c0a3c-d257-43b7-bcf7-2e10dffdb0b3"> **Bottom bar when there are invalid changes:** <img width="1084" alt="Screenshot 2024-01-31 at 09 04 57" src="https://github.com/elastic/kibana/assets/59341489/1d6a44a2-2659-421b-84b4-44fc693a645b">
## Summary In elastic#174712, we integrated the new settings field component into APM General settings. The new setting field supports validation on the user input, based on the `schema` of the given setting. Since some of the APM General settings have `schema` with specified restrictions, which were not enforced in the UI before, this PR adds schema validation so that they are enforced. Note that this validation adds some performance overhead as it sends a request to the server (to the `internal/kibana/settings/validate` endpoint) for every user input change. It's up to the team to decide whether you think that is okay for the app and whether validation for these settings is really beneficial to have. **Settings with `schema` restrictions:** [apmServiceGroupMaxNumberOfServices](https://github.com/elastic/kibana/blob/b4d93fc145c3c09eb1096c610b7cd736f19f6a3a/x-pack/plugins/observability/server/ui_settings.ts#L189) (currently input value `0` is not validated but a fix is coming with elastic#175957): <img width="1071" alt="Screenshot 2024-01-31 at 08 57 58" src="https://github.com/elastic/kibana/assets/59341489/35d9a4fc-4641-4603-97f9-9fbc1a76a778"> [observability:apmAWSLambdaPriceFactor](https://github.com/elastic/kibana/blob/b4d93fc145c3c09eb1096c610b7cd736f19f6a3a/x-pack/plugins/observability/server/ui_settings.ts#L315): <img width="1071" alt="Screenshot 2024-01-31 at 08 58 39" src="https://github.com/elastic/kibana/assets/59341489/810948f5-134a-49ec-8d6e-b15ea7896624"> [observability:apmAWSLambdaRequestCostPerMillion](https://github.com/elastic/kibana/blob/b4d93fc145c3c09eb1096c610b7cd736f19f6a3a/x-pack/plugins/observability/server/ui_settings.ts#L326): <img width="1071" alt="Screenshot 2024-01-31 at 08 59 36" src="https://github.com/elastic/kibana/assets/59341489/269c0a3c-d257-43b7-bcf7-2e10dffdb0b3"> **Bottom bar when there are invalid changes:** <img width="1084" alt="Screenshot 2024-01-31 at 09 04 57" src="https://github.com/elastic/kibana/assets/59341489/1d6a44a2-2659-421b-84b4-44fc693a645b">
## Summary In elastic#174712, we integrated the new settings field component into APM General settings. The new setting field supports validation on the user input, based on the `schema` of the given setting. Since some of the APM General settings have `schema` with specified restrictions, which were not enforced in the UI before, this PR adds schema validation so that they are enforced. Note that this validation adds some performance overhead as it sends a request to the server (to the `internal/kibana/settings/validate` endpoint) for every user input change. It's up to the team to decide whether you think that is okay for the app and whether validation for these settings is really beneficial to have. **Settings with `schema` restrictions:** [apmServiceGroupMaxNumberOfServices](https://github.com/elastic/kibana/blob/b4d93fc145c3c09eb1096c610b7cd736f19f6a3a/x-pack/plugins/observability/server/ui_settings.ts#L189) (currently input value `0` is not validated but a fix is coming with elastic#175957): <img width="1071" alt="Screenshot 2024-01-31 at 08 57 58" src="https://github.com/elastic/kibana/assets/59341489/35d9a4fc-4641-4603-97f9-9fbc1a76a778"> [observability:apmAWSLambdaPriceFactor](https://github.com/elastic/kibana/blob/b4d93fc145c3c09eb1096c610b7cd736f19f6a3a/x-pack/plugins/observability/server/ui_settings.ts#L315): <img width="1071" alt="Screenshot 2024-01-31 at 08 58 39" src="https://github.com/elastic/kibana/assets/59341489/810948f5-134a-49ec-8d6e-b15ea7896624"> [observability:apmAWSLambdaRequestCostPerMillion](https://github.com/elastic/kibana/blob/b4d93fc145c3c09eb1096c610b7cd736f19f6a3a/x-pack/plugins/observability/server/ui_settings.ts#L326): <img width="1071" alt="Screenshot 2024-01-31 at 08 59 36" src="https://github.com/elastic/kibana/assets/59341489/269c0a3c-d257-43b7-bcf7-2e10dffdb0b3"> **Bottom bar when there are invalid changes:** <img width="1084" alt="Screenshot 2024-01-31 at 09 04 57" src="https://github.com/elastic/kibana/assets/59341489/1d6a44a2-2659-421b-84b4-44fc693a645b">
Summary
In #174712, we integrated the new settings field component into APM General settings. The new setting field supports validation on the user input, based on the
schema
of the given setting.Since some of the APM General settings have
schema
with specified restrictions, which were not enforced in the UI before, this PR adds schema validation so that they are enforced.Note that this validation adds some performance overhead as it sends a request to the server (to the
internal/kibana/settings/validate
endpoint) for every user input change. It's up to the team to decide whether you think that is okay for the app and whether validation for these settings is really beneficial to have.Settings with
schema
restrictions:apmServiceGroupMaxNumberOfServices (currently input value
0
is not validated but a fix is coming with #175957):observability:apmAWSLambdaPriceFactor:
observability:apmAWSLambdaRequestCostPerMillion:
Bottom bar when there are invalid changes: