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 |
| ), | ||
| }), | ||
| }, | ||
| { |
There was a problem hiding this comment.
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.
Copying the original suggestion here for reference:
So here we have multiple options
- Add a
skipValidationprop 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
nameconfig 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.
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.
@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.
@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!
sebelga
left a comment
There was a problem hiding this comment.
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