Skip to content

[9.4] [Fleet] Resolve streams and secrets by effective input name (#264366)#264634

Merged
kibanamachine merged 1 commit intoelastic:9.4from
kibanamachine:backport/9.4/pr-264366
Apr 21, 2026
Merged

[9.4] [Fleet] Resolve streams and secrets by effective input name (#264366)#264634
kibanamachine merged 1 commit intoelastic:9.4from
kibanamachine:backport/9.4/pr-264366

Conversation

@kibanamachine
Copy link
Copy Markdown
Contributor

Backport

This will backport the following commits from main to 9.4:

Questions ?

Please refer to the Backport tool documentation

…264366)

## Summary

Completes propagation of **effective input names** (`name ?? type`,
`getInputEffectiveName`) for places that still matched registry
`streams[].input` against **`input.type`**. That mismatch caused package
policy creation to fail with `Stream template not found, unable to find
stream for input <type>` when integration manifests reference streams by
**input name** (same agent type, disambiguated names), as exercised by
composable/elastic-package dual-input fixtures.

**Changes**

- **`package_policy.ts`**: `_compilePackageStream` selects the registry
stream using `getInputEffectiveName(input)`; error message includes
effective name and type.
- **`validate_package_policy.ts`**: stream var-def lookup key uses
`${dataset}-${getInputEffectiveName(input)}` to match the registry map
keyed by `stream.input`.
- **`secrets/package_policies.ts`**: stream secret var-def lookup uses
the same effective name in the dataset key; import
`getInputEffectiveName`.
- **`get_template_inputs.ts`**: `buildIndexedPackage` indexes streams
and input ids using `getInputEffectiveName(packageInput)` so
docs/template indexing matches named stream references.
- **`package_policy.test.ts`**: Jest coverage for a manifest whose
`streams[].input` is the input **name** while `input.type` remains the
real type.

Relates to [Fleet: Support setting explicit names for ambiguous
inputs](elastic#262138) and composable
packages that set `streams[].input` to the input name qualifier.

**Related issue:** This gap surfaced while testing work for
[elastic/elastic-package#3465](elastic/elastic-package#3465)
(composable `requires.input`: input `name` and stream `input` per
package-spec qualified inputs). The elastic-package change that
implements that issue is still **WIP**; this Kibana PR closes the Fleet
side so policies compile when manifests follow the spec (streams
reference the input **name** while the policy input keeps the real agent
**type**).

**Release notes:** Follow-up to elastic#262138; no additional user-facing
release note beyond that change. Use label `release_note:skip`.

### Checklist

Check the PR satisfies following conditions.

Reviewers should verify this PR satisfies this list as well.

- [x] 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
- [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)
- [x] 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
- [x] 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)
(`release_note:skip`, follow-up to elastic#262138).
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

### 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.

- [ ] [See some risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)

**Risks**

- **Wrong stream match if a package mis-declares `streams[].input`**:
Low. Behavior is aligned with `getInputEffectiveName`; packages that
still use plain `type` in manifests continue to work because `name` is
absent.
- **EPM template / comment indexing**: Low. `buildIndexedPackage` now
keys by effective name; verify integration detail docs for packages with
duplicate types and names if any UI relies on old `type`-only ids.

(cherry picked from commit 170d52a)
@kibanamachine kibanamachine added the backport This PR is a backport of another PR label Apr 21, 2026
@kibanamachine kibanamachine enabled auto-merge (squash) April 21, 2026 10:15
@botelastic botelastic Bot added the Team:Fleet Team label for Observability Data Collection Fleet team label Apr 21, 2026
@elasticmachine
Copy link
Copy Markdown
Contributor

Pinging @elastic/fleet (Team:Fleet)

@macroscopeapp
Copy link
Copy Markdown
Contributor

macroscopeapp Bot commented Apr 21, 2026

Approvability

Verdict: Would Approve

This is a focused bug fix that consistently uses getInputEffectiveName(input) instead of input.type when building keys for streams and secrets across Fleet services. The change fixes resolution when an input's name differs from its type. The author owns all changed files, tests are included, and the fix follows an obvious pattern throughout.

Macroscope would have approved this PR. Enable approvability here.

@elasticmachine
Copy link
Copy Markdown
Contributor

elasticmachine commented Apr 21, 2026

💔 Build Failed

Failed CI Steps

Test Failures

  • [job] [logs] affected Scout: [ observability / apm ] plugin / local-stateful-classic - Service map - accessibility - focus management and visible indicators work correctly
  • [job] [logs] Fleet Cypress Tests #1 / View agents list Bulk actions should allow to bulk reassign agent to another policy
  • [job] [logs] Fleet Cypress Tests #1 / View agents list Bulk actions should navigate to Maintenance and diagnostics submenu
  • [job] [logs] Fleet Cypress Tests #1 / View agents list Bulk actions should navigate to Maintenance and diagnostics submenu
  • [job] [logs] Fleet Cypress Tests #1 / View agents list Bulk actions should navigate to Security and removal submenu and show unenroll option
  • [job] [logs] Fleet Cypress Tests #1 / View agents list Bulk actions should navigate to Security and removal submenu and show unenroll option
  • [job] [logs] Fleet Cypress Tests #1 / View agents list Bulk actions should show hierarchical menu with submenus
  • [job] [logs] Fleet Cypress Tests #1 / View agents list Bulk actions should show hierarchical menu with submenus

Metrics [docs]

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
fleet 202.8KB 202.8KB -2.0B

History

cc @teresaromero

@kibanamachine kibanamachine merged commit 04501d4 into elastic:9.4 Apr 21, 2026
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport This PR is a backport of another PR Team:Fleet Team label for Observability Data Collection Fleet team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants