func validateILMPolicyInDataStream()

in code/go/internal/validator/semantic/validate_ilmpolicypresent.go [37:66]


func validateILMPolicyInDataStream(fsys fspath.FS, dataStream string) error {
	dsType, ilmPolicy, err := readILMPolicyInfoInDataStream(fsys, dataStream)
	if err != nil {
		return err
	}

	if ilmPolicy == "" {
		return nil
	}

	packageName, err := readPackageName(fsys)
	if err != nil {
		return err
	}

	manifestPath := path.Join("data_stream", dataStream, "manifest.yml")
	policyPrefix := expectedILMPolicyPrefix(dsType, packageName, dataStream)
	if !strings.HasPrefix(ilmPolicy, policyPrefix) {
		return fmt.Errorf("file \"%s\" is invalid: field ilm_policy must start with %q, found \"%s\"", fsys.Path(manifestPath), policyPrefix, ilmPolicy)
	}

	ilmFileName := ilmPolicy[len(policyPrefix):] + ".json"
	ilmFilePath := path.Join("data_stream", dataStream, "elasticsearch", "ilm", ilmFileName)
	_, err = fs.Stat(fsys, ilmFilePath)
	if err != nil {
		return fmt.Errorf("file \"%s\" is invalid: field ilm_policy: ILM policy %q not found in package, expected definition in \"%s\"", fsys.Path(manifestPath), ilmPolicy, fsys.Path(ilmFilePath))
	}

	return nil
}