- 
                Notifications
    You must be signed in to change notification settings 
- Fork 87
          Add validation for template_path at integration packages
          #1002
        
          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
  
    Add validation for template_path at integration packages
  
  #1002
              Conversation
| test integration | 
| test integrations | 
| Created or updated PR in integrations repository to test this version. Check elastic/integrations#15735 | 
        
          
                code/go/internal/validator/semantic/validate_integration_policy_template_path.go
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                code/go/internal/validator/semantic/validate_integration_policy_template_path.go
              
                Outdated
          
            Show resolved
            Hide resolved
        
      …and update tests" This reverts commit 516c095.
…ove redundant checks
| test-integrations | 
| Created or updated PR in integrations repository to test this version. Check elastic/integrations#15735 | 
| 💚 Build Succeeded
 History
 | 
        
          
                code/go/internal/validator/semantic/validate_integration_policy_template_path.go
          
            Show resolved
            Hide resolved
        
      | test-integrations | 
| Created or updated PR in integrations repository to test this version. Check elastic/integrations#15735 | 
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.
Thanks !! 🚀
## 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
## 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
## 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
What does this PR do?
This PR validates the existence of the
template_pathfor integration packages.Why is it important?
Policy templates for an integration package have inputs references. This inputs have a property
template_pathwhich 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
inputtemplate_path.Any data stream, whose
streamscontain anyinputthat matches the policy template input, has to check itstemplate_pathexist under /data_stream//agent/stream. If the fieldtemplate_pathis empty a default valuestreams.yml.hbsis assigned to it.Validation checks then that there is a file ending with
template_pathThis 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/packagesthat prove my change is effective.I have added an entry in
spec/changelog.yml.Related issues
Partially resolves #703