/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import React from "react"; import { EuiButton, EuiSpacer, EuiFlexGroup, EuiEmptyPrompt, EuiFlexItem, EuiText, EuiLink, EuiIcon } from "@elastic/eui"; import { ContentPanel } from "../../../../components/ContentPanel"; import "brace/theme/github"; import "brace/mode/json"; import { ISMTemplate as ISMTemplateData, Policy } from "../../../../../models/interfaces"; import { DOCUMENTATION_URL } from "../../../../utils/constants"; import { ISM_TEMPLATE_INPUT_MAX_WIDTH } from "../../utils/constants"; import ISMTemplate from "../ISMTemplate"; import { convertTemplatesToArray } from "../../utils/helpers"; import { makeId } from "../../../../utils/helpers"; interface ISMTemplatesProps { policy: Policy; onChangePolicy: (policy: Policy) => void; } const ISMTemplates = ({ policy, onChangePolicy }: ISMTemplatesProps) => { const templates = convertTemplatesToArray(policy.ism_template); const addTemplateButton = ( { onChangePolicy({ ...policy, ism_template: [...templates, { index_patterns: [], priority: 1 }] }); }} data-test-subj="ism-templates-add-template-button" > Add template ); return (

ISM templates

– optional } titleSize="s" subTitleText={

Specify ISM template patterns that match the index to apply the policy.{" "} Learn more

} >
{!!templates.length && (
Index patterns
Priority
)} {templates.map((template, idx) => ( { onChangePolicy({ ...policy, ism_template: templates .slice(0, idx) .concat(template) .concat(templates.slice(idx + 1)), }); }} onRemoveTemplate={() => { onChangePolicy({ ...policy, ism_template: templates.slice(0, idx).concat(templates.slice(idx + 1)), }); }} /> ))} {!templates.length ? ( No ISM templates} style={{ maxWidth: "37em" }} titleSize="s" body={

Your policy currently has no ISM templates defined. Add ISM templates to automatically apply the policy to indices created in the future.

} actions={addTemplateButton} /> ) : ( <> {addTemplateButton} )}
); }; export default ISMTemplates;