-
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
System index templates can't be edited #55229
System index templates can't be edited #55229
Conversation
Pinging @elastic/es-ui (Team:Elasticsearch UI) |
@alisonelizabeth I've recreated all 3 branches. Things look good now. Sorry for the inconvenience. cc @sebelga |
@@ -68,14 +68,6 @@ export const schemas: Record<string, FormSchema> = { | |||
), | |||
}), | |||
}, | |||
{ |
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.
As from my comment on the other PR, we should keep this validation for when we create new template.
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.
Copying the original suggestion here for reference:
So here we have multiple options
- Add a
skipValidation
prop toUseField
(that would go along with theenabled: false
- Be more granular and being able to provide validation IDs to be skipped
validationsToSkip={['startWithDot']}
- Extract and export the
name
config from the schema. Then add it on the UseField without the validationsimport { schemas, nameConfig } from '../template_form_schemas'; const { validations, nameConfigWithoutValidations } = nameConfig; // And then use that config when editing <UseField path="name" componentProps={{ idAria: name.idAria, ['data-test-subj']: name.testSubject, euiFieldProps: { disabled: isEditing }, }} config={ isEditing ? nameConfigWithoutValidations : nameConfig } />I would go with the last one as it is simpler and we don't need to touch the lib for now. It would be a nice enhancement though.
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.
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.
So you need to extract the config from the schema. Like this
// template_form_schema.tsx
import {
FormSchema,
FIELD_TYPES,
VALIDATION_TYPES,
FieldConfig, // Add this import
} from '../../../../../../../../src/plugins/es_ui_shared/static/forms/hook_form_lib';
// ...
export const nameConfig: FieldConfig = {
type: FIELD_TYPES.TEXT,
label: i18n.translate('xpack.idxMgmt.templateForm.stepLogistics.fieldNameLabel', {
defaultMessage: 'Name',
}),
validations: [
{
validator: emptyField(
i18n.translate('xpack.idxMgmt.templateValidation.templateNameRequiredError', {
defaultMessage: 'A template name is required.',
})
),
},
{
validator: containsCharsField({
chars: ' ',
message: i18n.translate('xpack.idxMgmt.templateValidation.templateNameSpacesError', {
defaultMessage: 'Spaces are not allowed in a template name.',
}),
}),
},
{
validator: startsWithField({
char: '_',
message: i18n.translate('xpack.idxMgmt.templateValidation.templateNameUnderscoreError', {
defaultMessage: 'A template name must not start with an underscore.',
}),
}),
},
{
validator: startsWithField({
char: '.',
message: i18n.translate('xpack.idxMgmt.templateValidation.templateNamePeriodError', {
defaultMessage: 'A template name must not start with a period.',
}),
}),
},
{
validator: containsCharsField({
chars: INVALID_TEMPLATE_NAME_CHARS,
message: ({ charsFound }) =>
i18n.translate('xpack.idxMgmt.templateValidation.templateNameInvalidaCharacterError', {
defaultMessage: 'A template name must not contain the character "{invalidChar}"',
values: { invalidChar: charsFound[0] },
}),
}),
},
{
validator: lowerCaseStringField(
i18n.translate('xpack.idxMgmt.templateValidation.templateNameLowerCaseRequiredError', {
defaultMessage: 'The template name must be in lowercase.',
})
),
},
],
};
export const schemas: Record<string, FormSchema> = {
logistics: {
name: nameConfig, // use it here
...
},
};
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.
@sebelga thank you for all the detailed steps. I have a question, if const { validations, nameConfigWithoutValidations } = nameConfig;
then nameConfigWithoutValidations
would still always validate the system indices correct? We need to remove the period validation
{
validator: startsWithField({
char: '.',
message: i18n.translate('xpack.idxMgmt.templateValidation.templateNamePeriodError', {
defaultMessage: 'A template name must not start with a period.',
}),
}),
},
from nameConfig
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.
@sebelga I've got some help from @alisonelizabeth and sorted out my mistakes and confusion. I've uploaded the modified code. Please help check my code again. Thank you!
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.
Code LGTM! I haven't tested locally. Thanks for making these changes!
@elasticmachine merge upstream |
No problem, happy to be able to contribute and make a difference! |
@elasticmachine merge upstream |
💚 Build SucceededHistory
To update your PR or re-run it, just comment with: |
@alisonelizabeth @jkelastic @sebelga I just want to double-check -- has this been tested locally and verified to fix the issue? |
@cjcenizal I tested the PR targeting master. |
* master: (53 commits) Fix setting filters without $store value (elastic#56304) kuery_autocomplete -> convert remaining items to TS/Jest (elastic#56316) [Reporting] New Platform: moves most of our libs/constants and utils to np shims (elastic#55935) [reporting] remove a legacy cross-plugin import (elastic#56354) [DOCS] Updates example in Timelion doc (elastic#56444) [APM] Service map center button (elastic#56434) [skip-ci] Add example for migrating pre-handlers (elastic#56080) [ML] Fix Data Visualizer responsive layout (elastic#56372) Add missing docker settings (elastic#56411) [Endpoint] Add Endpoint Details route (elastic#55746) chore(NA): delete data/optimize with kbn clean (elastic#55890) System index templates can't be edited (elastic#55229) Sync badge (elastic#55113) Only fire appState changes when there is a change (elastic#56183) Import appropriate files to setup plugin system at the correct time (elastic#55956) [Monitoring] Change all configs to `monitoring.*` (elastic#56215) [ML] conditional rison encoding for query params (elastic#56380) Move tsvb server to new platform (elastic#55310) exclude tutorial resources from code ownership (elastic#55987) [Watcher] Follow up on flaky functional test (elastic#56384) ...
…56356 * '7.x' of github.com:elastic/kibana: (23 commits) Fix setting filters without $store value (elastic#56304) (elastic#56475) [ML] Fix Data Visualizer responsive layout (elastic#56372) (elastic#56472) [ML] conditional rison encoding for query params (elastic#56380) (elastic#56469) kuery_autocomplete -> convert remaining items to TS/Jest (elastic#56316) (elastic#56471) [APM] Fit service map to container (elastic#56336) (elastic#56463) Add animation to service map layout (elastic#56042) (elastic#56460) chore(NA): delete data/optimize with kbn clean (elastic#55890) (elastic#56422) [APM] Storybook support (elastic#54970) (elastic#56445) [DOCS] Updates example in Timelion doc (elastic#56444) (elastic#56454) [Logs UI] Fix Check for New Data button on empty indices screen (elastic#56239) (elastic#56320) [DOCS] Adds breaking changes for 7.6 (elastic#56437) [Monitoring] Change all configs to `monitoring.*` (elastic#56215) (elastic#56421) [skip-ci] Add example for migrating pre-handlers (elastic#56080) (elastic#56436) [7.x] System index templates can't be edited (elastic#55229) (elastic#56417) Add missing docker settings (elastic#56411) [Uptime] Use dynamic index pattern in Uptime (elastic#55446) (elastic#56386) fix edit rule for detections (elastic#56333) (elastic#56405) [Filter Bar] Remove flickering when opening filter bar popover (elastic#56222) (elastic#56385) [ILM] Index Lifecycle Policies show wrong unit in Kibana UI (elastic#55228) (elastic#55757) Move tsvb server to new platform (elastic#55310) (elastic#56394) ...
Summary
Fixed # 52566 Removed the validator that checks for system indices and disable editing on index templates
Checklist
Use
strikethroughsto remove checklist items you don't feel are applicable to this PR.For maintainers