Skip to content
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

[Change Proposal] Add flag to hide "parent tile" in integrations UI for integrations with multiple policy templates #802

Closed
kpollich opened this issue Sep 18, 2024 · 8 comments · Fixed by #825
Assignees
Labels
discuss Issue needs discussion Team:Ecosystem Label for the Packages Ecosystem team

Comments

@kpollich
Copy link
Member

For integrations like elastic_connectors, usage of of policy_templates is more about easing maintenance burden and less about reusing variables across different templates or leveraging any kind of information architecture. For integrations like this, we should have an option/flag in the manifest that allows Fleet to hide the "parent tile" for the integration, instead only showing the policy templates cards.

@kpollich kpollich added discuss Issue needs discussion Team:Ecosystem Label for the Packages Ecosystem team labels Sep 18, 2024
@kpollich
Copy link
Member Author

cc @seanstory

@jsoriano
Copy link
Member

Makes sense 👍 I think this could have been used even in some packages that have many policies now, like AWS.

I would only avoid focusing on representation and call the flag something like disable_parent_policy, or something like this.

@kpollich
Copy link
Member Author

Something else to note when it comes to supporting this in Fleet - perhaps we should use the policy template name when populating the integration policy's name field. Today creating an "AWS Billing Metrics" integration policy still results in an integration policy named "aws-1" and editing it takes you to the full integration policy page for all policy templates.

@seanstory
Copy link
Member

perhaps we should use the policy template name when populating the integration policy's name field.

+1. I'm anticipating customer confusion about connectors_1, connectors_2 instead of github_connector_1, gdrive_connector_1. We can prepare for that with documentation and signposting, but if y'all can help us pre-empt it, that's even better. ❤

@jen-huang
Copy link
Contributor

Some packages have the opposite problem, where only the parent tile should be shown even if there are multiple policy templates. We do this manually in the code for kubernetes package in Fleet: Remove Kubernetes package granularity.

It may make sense for this flag to be enum rather than boolean, for example policy_behavior: 'parent_only' | 'children_only' | 'default'. default or unset value would mean the current behavior of showing both parent and children policy templates.

@mrodm
Copy link
Contributor

mrodm commented Oct 28, 2024

Created issue to expose policy_templates_behavior field in EPR endpoints:
elastic/package-registry#1243

@jen-huang
Copy link
Contributor

@mrodm Could you also create a Kibana issue to support this new field? Thanks!

@mrodm
Copy link
Contributor

mrodm commented Oct 29, 2024

@mrodm Could you also create a Kibana issue to support this new field? Thanks!

@jen-huang Sure! Issue created in Kibana elastic/kibana#198145

mrodm added a commit to elastic/kibana that referenced this issue Nov 19, 2024
…icy_templates_behavior` field (#200605)

## Summary
Closes #198145

Add support to filter the tiles shown in the integrations UI as well as
the packages shown in the global search provider depending on the
`policy_templates_behaviour` field introduced in
elastic/package-spec#802.

If this new field is not present in the package manifest, the same
behavior is kept. Therefore, it is shown a tile for the package itself
plus a tile for each policy template defined in the manifest.


Tested using a custom Elastic Package Registry with some packages
defining this new `policy_templates_behavior` via the key:
```yaml
xpack.fleet.registryUrl: http://localhost:8080
```

### Screenshots

Checked option "Elastic Agent only" in the integrations UI to avoid
tutorials based on Beats.

Example with `azure_metrics` package in the Integrations UI:
- `policy_templates_behavior: all`
![All policy
templates](https://github.com/user-attachments/assets/907618e3-f2db-44df-b1ac-3965b1978b2c)

- `policy_templates_behavior: combined_policy`
![Just combined
policy](https://github.com/user-attachments/assets/77293616-8125-4d01-81f3-b3f17135ca49)

- `policy_templates_behavior: individual_policies`
![Just individual policy
templates](https://github.com/user-attachments/assets/b68ad474-8aac-464b-9946-9ae6104dd2ae)


Example in the Global Search with `azure_metrics` package and `combined
policy` behavior:
![global search with azure metrics
package](https://github.com/user-attachments/assets/e70315b7-d303-4b32-aa9e-8e1e9b056239)


### 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/packages/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
- [x] [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_node:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

### Identify risks

Does this PR introduce any risks? For example, consider risks like hard
to test bugs, performance regression, potential of data loss.

Describe the risk, its severity, and mitigation for each identified
risk. Invite stakeholders and evaluate how to proceed before merging.

- [ ]
kibanamachine pushed a commit to kibanamachine/kibana that referenced this issue Nov 19, 2024
…icy_templates_behavior` field (elastic#200605)

## Summary
Closes elastic#198145

Add support to filter the tiles shown in the integrations UI as well as
the packages shown in the global search provider depending on the
`policy_templates_behaviour` field introduced in
elastic/package-spec#802.

If this new field is not present in the package manifest, the same
behavior is kept. Therefore, it is shown a tile for the package itself
plus a tile for each policy template defined in the manifest.

Tested using a custom Elastic Package Registry with some packages
defining this new `policy_templates_behavior` via the key:
```yaml
xpack.fleet.registryUrl: http://localhost:8080
```

### Screenshots

Checked option "Elastic Agent only" in the integrations UI to avoid
tutorials based on Beats.

Example with `azure_metrics` package in the Integrations UI:
- `policy_templates_behavior: all`
![All policy
templates](https://github.com/user-attachments/assets/907618e3-f2db-44df-b1ac-3965b1978b2c)

- `policy_templates_behavior: combined_policy`
![Just combined
policy](https://github.com/user-attachments/assets/77293616-8125-4d01-81f3-b3f17135ca49)

- `policy_templates_behavior: individual_policies`
![Just individual policy
templates](https://github.com/user-attachments/assets/b68ad474-8aac-464b-9946-9ae6104dd2ae)

Example in the Global Search with `azure_metrics` package and `combined
policy` behavior:
![global search with azure metrics
package](https://github.com/user-attachments/assets/e70315b7-d303-4b32-aa9e-8e1e9b056239)

### 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/packages/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
- [x] [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_node:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

### Identify risks

Does this PR introduce any risks? For example, consider risks like hard
to test bugs, performance regression, potential of data loss.

Describe the risk, its severity, and mitigation for each identified
risk. Invite stakeholders and evaluate how to proceed before merging.

- [ ]

(cherry picked from commit 8352b86)
kibanamachine added a commit to elastic/kibana that referenced this issue Nov 19, 2024
…e `policy_templates_behavior` field (#200605) (#200749)

# Backport

This will backport the following commits from `main` to `8.x`:
- [[Fleet] Filter integrations/packages list shown depending on the
`policy_templates_behavior` field
(#200605)](#200605)

<!--- Backport version: 9.4.3 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sqren/backport)

<!--BACKPORT [{"author":{"name":"Mario Rodriguez
Molins","email":"mario.rodriguez@elastic.co"},"sourceCommit":{"committedDate":"2024-11-19T14:27:19Z","message":"[Fleet]
Filter integrations/packages list shown depending on the
`policy_templates_behavior` field (#200605)\n\n## Summary\r\nCloses
https://github.com/elastic/kibana/issues/198145\r\n\r\nAdd support to
filter the tiles shown in the integrations UI as well as\r\nthe packages
shown in the global search provider depending on
the\r\n`policy_templates_behaviour` field introduced
in\r\nhttps://github.com/elastic/package-spec/issues/802.\r\n\r\nIf this
new field is not present in the package manifest, the same\r\nbehavior
is kept. Therefore, it is shown a tile for the package itself\r\nplus a
tile for each policy template defined in the manifest.\r\n\r\n\r\nTested
using a custom Elastic Package Registry with some packages\r\ndefining
this new `policy_templates_behavior` via the
key:\r\n```yaml\r\nxpack.fleet.registryUrl:
http://localhost:8080\r\n```\r\n\r\n### Screenshots\r\n\r\nChecked
option \"Elastic Agent only\" in the integrations UI to
avoid\r\ntutorials based on Beats.\r\n\r\nExample with `azure_metrics`
package in the Integrations UI:\r\n- `policy_templates_behavior:
all`\r\n![All
policy\r\ntemplates](https://github.com/user-attachments/assets/907618e3-f2db-44df-b1ac-3965b1978b2c)\r\n\r\n-
`policy_templates_behavior: combined_policy`\r\n![Just
combined\r\npolicy](https://github.com/user-attachments/assets/77293616-8125-4d01-81f3-b3f17135ca49)\r\n\r\n-
`policy_templates_behavior: individual_policies`\r\n![Just individual
policy\r\ntemplates](https://github.com/user-attachments/assets/b68ad474-8aac-464b-9946-9ae6104dd2ae)\r\n\r\n\r\nExample
in the Global Search with `azure_metrics` package and
`combined\r\npolicy` behavior:\r\n![global search with azure
metrics\r\npackage](https://github.com/user-attachments/assets/e70315b7-d303-4b32-aa9e-8e1e9b056239)\r\n\r\n\r\n###
Checklist\r\n\r\nCheck the PR satisfies following conditions.
\r\n\r\nReviewers should verify this PR satisfies this list as
well.\r\n\r\n- [ ] Any text added follows [EUI's
writing\r\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\r\nsentence case text and includes
[i18n\r\nsupport](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)\r\n-
[
]\r\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\r\nwas
added for features that require explanation or tutorials\r\n- [x] [Unit
or
functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere
updated or added to match the most common scenarios\r\n- [ ] If a plugin
configuration key changed, check if it needs to be\r\nallowlisted in the
cloud and added to the
[docker\r\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\r\n-
[ ] This was checked for breaking HTTP API changes, and any
breaking\r\nchanges have been approved by the breaking-change committee.
The\r\n`release_note:breaking` label should be applied in these
situations.\r\n- [ ] [Flaky
Test\r\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\r\nused on any tests changed\r\n- [ ] The PR description includes
the appropriate Release Notes section,\r\nand the correct
`release_node:*` label is applied per
the\r\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\r\n\r\n###
Identify risks\r\n\r\nDoes this PR introduce any risks? For example,
consider risks like hard\r\nto test bugs, performance regression,
potential of data loss.\r\n\r\nDescribe the risk, its severity, and
mitigation for each identified\r\nrisk. Invite stakeholders and evaluate
how to proceed before merging.\r\n\r\n- [
]","sha":"8352b86f59522319f6d20ae2165d11b621f1f22b","branchLabelMapping":{"^v9.0.0$":"main","^v8.17.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:enhancement","Team:Fleet","v9.0.0","backport:prev-minor"],"title":"[Fleet]
Filter integrations/packages list shown depending on the
`policy_templates_behavior`
field","number":200605,"url":"https://github.com/elastic/kibana/pull/200605","mergeCommit":{"message":"[Fleet]
Filter integrations/packages list shown depending on the
`policy_templates_behavior` field (#200605)\n\n## Summary\r\nCloses
https://github.com/elastic/kibana/issues/198145\r\n\r\nAdd support to
filter the tiles shown in the integrations UI as well as\r\nthe packages
shown in the global search provider depending on
the\r\n`policy_templates_behaviour` field introduced
in\r\nhttps://github.com/elastic/package-spec/issues/802.\r\n\r\nIf this
new field is not present in the package manifest, the same\r\nbehavior
is kept. Therefore, it is shown a tile for the package itself\r\nplus a
tile for each policy template defined in the manifest.\r\n\r\n\r\nTested
using a custom Elastic Package Registry with some packages\r\ndefining
this new `policy_templates_behavior` via the
key:\r\n```yaml\r\nxpack.fleet.registryUrl:
http://localhost:8080\r\n```\r\n\r\n### Screenshots\r\n\r\nChecked
option \"Elastic Agent only\" in the integrations UI to
avoid\r\ntutorials based on Beats.\r\n\r\nExample with `azure_metrics`
package in the Integrations UI:\r\n- `policy_templates_behavior:
all`\r\n![All
policy\r\ntemplates](https://github.com/user-attachments/assets/907618e3-f2db-44df-b1ac-3965b1978b2c)\r\n\r\n-
`policy_templates_behavior: combined_policy`\r\n![Just
combined\r\npolicy](https://github.com/user-attachments/assets/77293616-8125-4d01-81f3-b3f17135ca49)\r\n\r\n-
`policy_templates_behavior: individual_policies`\r\n![Just individual
policy\r\ntemplates](https://github.com/user-attachments/assets/b68ad474-8aac-464b-9946-9ae6104dd2ae)\r\n\r\n\r\nExample
in the Global Search with `azure_metrics` package and
`combined\r\npolicy` behavior:\r\n![global search with azure
metrics\r\npackage](https://github.com/user-attachments/assets/e70315b7-d303-4b32-aa9e-8e1e9b056239)\r\n\r\n\r\n###
Checklist\r\n\r\nCheck the PR satisfies following conditions.
\r\n\r\nReviewers should verify this PR satisfies this list as
well.\r\n\r\n- [ ] Any text added follows [EUI's
writing\r\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\r\nsentence case text and includes
[i18n\r\nsupport](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)\r\n-
[
]\r\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\r\nwas
added for features that require explanation or tutorials\r\n- [x] [Unit
or
functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere
updated or added to match the most common scenarios\r\n- [ ] If a plugin
configuration key changed, check if it needs to be\r\nallowlisted in the
cloud and added to the
[docker\r\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\r\n-
[ ] This was checked for breaking HTTP API changes, and any
breaking\r\nchanges have been approved by the breaking-change committee.
The\r\n`release_note:breaking` label should be applied in these
situations.\r\n- [ ] [Flaky
Test\r\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\r\nused on any tests changed\r\n- [ ] The PR description includes
the appropriate Release Notes section,\r\nand the correct
`release_node:*` label is applied per
the\r\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\r\n\r\n###
Identify risks\r\n\r\nDoes this PR introduce any risks? For example,
consider risks like hard\r\nto test bugs, performance regression,
potential of data loss.\r\n\r\nDescribe the risk, its severity, and
mitigation for each identified\r\nrisk. Invite stakeholders and evaluate
how to proceed before merging.\r\n\r\n- [
]","sha":"8352b86f59522319f6d20ae2165d11b621f1f22b"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.0.0","branchLabelMappingKey":"^v9.0.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/200605","number":200605,"mergeCommit":{"message":"[Fleet]
Filter integrations/packages list shown depending on the
`policy_templates_behavior` field (#200605)\n\n## Summary\r\nCloses
https://github.com/elastic/kibana/issues/198145\r\n\r\nAdd support to
filter the tiles shown in the integrations UI as well as\r\nthe packages
shown in the global search provider depending on
the\r\n`policy_templates_behaviour` field introduced
in\r\nhttps://github.com/elastic/package-spec/issues/802.\r\n\r\nIf this
new field is not present in the package manifest, the same\r\nbehavior
is kept. Therefore, it is shown a tile for the package itself\r\nplus a
tile for each policy template defined in the manifest.\r\n\r\n\r\nTested
using a custom Elastic Package Registry with some packages\r\ndefining
this new `policy_templates_behavior` via the
key:\r\n```yaml\r\nxpack.fleet.registryUrl:
http://localhost:8080\r\n```\r\n\r\n### Screenshots\r\n\r\nChecked
option \"Elastic Agent only\" in the integrations UI to
avoid\r\ntutorials based on Beats.\r\n\r\nExample with `azure_metrics`
package in the Integrations UI:\r\n- `policy_templates_behavior:
all`\r\n![All
policy\r\ntemplates](https://github.com/user-attachments/assets/907618e3-f2db-44df-b1ac-3965b1978b2c)\r\n\r\n-
`policy_templates_behavior: combined_policy`\r\n![Just
combined\r\npolicy](https://github.com/user-attachments/assets/77293616-8125-4d01-81f3-b3f17135ca49)\r\n\r\n-
`policy_templates_behavior: individual_policies`\r\n![Just individual
policy\r\ntemplates](https://github.com/user-attachments/assets/b68ad474-8aac-464b-9946-9ae6104dd2ae)\r\n\r\n\r\nExample
in the Global Search with `azure_metrics` package and
`combined\r\npolicy` behavior:\r\n![global search with azure
metrics\r\npackage](https://github.com/user-attachments/assets/e70315b7-d303-4b32-aa9e-8e1e9b056239)\r\n\r\n\r\n###
Checklist\r\n\r\nCheck the PR satisfies following conditions.
\r\n\r\nReviewers should verify this PR satisfies this list as
well.\r\n\r\n- [ ] Any text added follows [EUI's
writing\r\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\r\nsentence case text and includes
[i18n\r\nsupport](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)\r\n-
[
]\r\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\r\nwas
added for features that require explanation or tutorials\r\n- [x] [Unit
or
functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere
updated or added to match the most common scenarios\r\n- [ ] If a plugin
configuration key changed, check if it needs to be\r\nallowlisted in the
cloud and added to the
[docker\r\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\r\n-
[ ] This was checked for breaking HTTP API changes, and any
breaking\r\nchanges have been approved by the breaking-change committee.
The\r\n`release_note:breaking` label should be applied in these
situations.\r\n- [ ] [Flaky
Test\r\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\r\nused on any tests changed\r\n- [ ] The PR description includes
the appropriate Release Notes section,\r\nand the correct
`release_node:*` label is applied per
the\r\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\r\n\r\n###
Identify risks\r\n\r\nDoes this PR introduce any risks? For example,
consider risks like hard\r\nto test bugs, performance regression,
potential of data loss.\r\n\r\nDescribe the risk, its severity, and
mitigation for each identified\r\nrisk. Invite stakeholders and evaluate
how to proceed before merging.\r\n\r\n- [
]","sha":"8352b86f59522319f6d20ae2165d11b621f1f22b"}}]}] BACKPORT-->

---------

Co-authored-by: Mario Rodriguez Molins <mario.rodriguez@elastic.co>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discuss Issue needs discussion Team:Ecosystem Label for the Packages Ecosystem team
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants