Skip to content

Conversation

@teresaromero
Copy link
Contributor

@teresaromero teresaromero commented Oct 22, 2025

What does this PR do?

This PR validates the existence of the template_path for integration packages.

Why is it important?

Policy templates for an integration package have inputs references. This inputs have a property template_path which is optional.
If the property is declared, then the file for this template has to be check under agent/input/<template_path>.
When the property is empty, the validation is deferred to the streams input template_path.

Any data stream, whose streams contain any input that matches the policy template input, has to check its template_path exist under /data_stream//agent/stream. If the field template_path is empty a default value streams.yml.hbs is assigned to it.

Validation checks then that there is a file ending with template_path

This validation is mirroring what Fleet is doing with integration packages. A package can have inputs that dont match with data streams, in which case, there are no data streams to be checked, not input template_paths.

Checklist

  • added unit testing

  • manual tests with fleet to verify this logic.

  • I have added test packages to test/packages that prove my change is effective.

  • I have added an entry in spec/changelog.yml.

Related issues

Partially resolves #703

@teresaromero teresaromero requested a review from a team as a code owner October 22, 2025 12:48
@teresaromero
Copy link
Contributor Author

test integration

@mrodm
Copy link
Contributor

mrodm commented Oct 23, 2025

test integrations

@elastic-vault-github-plugin-prod

Created or updated PR in integrations repository to test this version. Check elastic/integrations#15735

@teresaromero
Copy link
Contributor Author

test-integrations

@elastic-vault-github-plugin-prod

Created or updated PR in integrations repository to test this version. Check elastic/integrations#15735

@elasticmachine
Copy link

💚 Build Succeeded

History

@teresaromero
Copy link
Contributor Author

test-integrations

@elastic-vault-github-plugin-prod

Created or updated PR in integrations repository to test this version. Check elastic/integrations#15735

Copy link
Contributor

@mrodm mrodm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks !! 🚀

teresaromero added a commit to elastic/kibana that referenced this pull request Oct 29, 2025
## Summary

This PR fixes the filter that was selecting the asset for a given
`template_path`. When compiling the template for a given input, fleet
was selecting it through the asset map taking into account the rule
"path ends with X". This method opened the door to some bug behavour in
the following case:

- A template path `log.yml.hbs`
- An asset map with `log.yml.hbs` and `syslog.yml.hbs` 

Both assets where selected, the first one was chosen, but not necessary
the first was `log.yml.hbs` although both end with this string.

The change introduces a change when selecting the template path to get
the exact file, although a fallback to the old logic is kept as there
are cases where the endsWith logic makes sense. This is when a default
template path is used (`stream.yml.hbs`) and the asset is called
`filestream.yml.hbs`

Related change at package-spec
elastic/package-spec#1002
Original issue elastic/package-spec#703

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

## Release note

Fixes `template_path` asset selection for some cases of integration
packages
@teresaromero teresaromero merged commit 9ba9d1c into elastic:main Oct 29, 2025
3 checks passed
tkajtoch pushed a commit to tkajtoch/kibana that referenced this pull request Oct 29, 2025
## Summary

This PR fixes the filter that was selecting the asset for a given
`template_path`. When compiling the template for a given input, fleet
was selecting it through the asset map taking into account the rule
"path ends with X". This method opened the door to some bug behavour in
the following case:

- A template path `log.yml.hbs`
- An asset map with `log.yml.hbs` and `syslog.yml.hbs` 

Both assets where selected, the first one was chosen, but not necessary
the first was `log.yml.hbs` although both end with this string.

The change introduces a change when selecting the template path to get
the exact file, although a fallback to the old logic is kept as there
are cases where the endsWith logic makes sense. This is when a default
template path is used (`stream.yml.hbs`) and the asset is called
`filestream.yml.hbs`

Related change at package-spec
elastic/package-spec#1002
Original issue elastic/package-spec#703

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

## Release note

Fixes `template_path` asset selection for some cases of integration
packages
qn895 pushed a commit to qn895/kibana that referenced this pull request Oct 30, 2025
## Summary

This PR fixes the filter that was selecting the asset for a given
`template_path`. When compiling the template for a given input, fleet
was selecting it through the asset map taking into account the rule
"path ends with X". This method opened the door to some bug behavour in
the following case:

- A template path `log.yml.hbs`
- An asset map with `log.yml.hbs` and `syslog.yml.hbs` 

Both assets where selected, the first one was chosen, but not necessary
the first was `log.yml.hbs` although both end with this string.

The change introduces a change when selecting the template path to get
the exact file, although a fallback to the old logic is kept as there
are cases where the endsWith logic makes sense. This is when a default
template path is used (`stream.yml.hbs`) and the asset is called
`filestream.yml.hbs`

Related change at package-spec
elastic/package-spec#1002
Original issue elastic/package-spec#703

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

## Release note

Fixes `template_path` asset selection for some cases of integration
packages
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Linter] Ensure stream.yml.hbs exists if it will be fallen back on

3 participants