Pulse/internal/servicediscovery
Martin Minkus 0e8f63cdd5 Resolve discovery lookups across forked host identities
Host identities fork onto "<base>-<hex>" when an agent re-enrolls under
a new token (re-running an install with --proxmox is enough), and
discovery then stores records under the forked host ID while the PVE
node keeps reporting the base agent UUID as its linked agent.
Store.ListByTarget matches TargetID byte-for-byte and
ListDiscoveriesByTarget did no alias resolution, so the resource
drawer's list call returned an empty 200 and the Discovery tab reported
"no saved discovery run" for hosts that had been analyzed.
GetDiscoveryByResource's normalization missed too: a base UUID matches
neither the forked host ID nor its hostname.

Expand the requested target into every spelling that provably names the
same target (equivalentDiscoveryTargetIDs): a matched node's linked
agent ID and name, a matched host's own ID/hostname pairing, and hex
fork suffixes of any of those, including the twice-forked
truncated-base shape. Filter the list path against that set and seed
the same spellings into the single-record alias path.

Trimmed from PR #1715 as submitted: the transitive hostname closure
(node name -> hostnames -> other hosts' IDs) is dropped. Multi-estate
deployments legitimately reuse node names and hostnames, and the hop
would have surfaced another estate's records in the drawer, discovery
readiness, and AI context. A regression test pins the non-bridging
behavior.
2026-08-24 15:18:30 +01:00
..
availability_suggestion.go fix(discovery): backfill availability suggestions for existing discoveries 2026-06-26 23:56:15 +01:00
availability_suggestion_test.go feat(discovery): suggest availability probes from discovered service types 2026-06-26 17:12:11 +01:00
branchcov0723pm_test.go Cover eval scenario catalog, control-plane printers and pure helpers 2026-07-23 16:42:08 +01:00
commands.go Detect nested-container access topology in discovery 2026-06-07 21:39:22 +01:00
commands_branchcov0724pm_test.go Cover the missing arms of the SSRF, clone and classifier guards 2026-07-25 00:39:15 +01:00
commands_test.go Make discovery a fast surface scan, not a deep scan 2026-06-07 20:54:46 +01:00
deep_scanner.go Route hostname lookups through canonical equivalence 2026-04-21 22:47:23 +01:00
deep_scanner_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
fingerprint.go fix(discovery): bring hosts into the fingerprint model so they auto-discover (#1479) 2026-07-07 22:55:04 +01:00
fingerprint_branchcov0724pm_test.go Cover the missing arms of the SSRF, clone and classifier guards 2026-07-25 00:39:15 +01:00
formatters.go Add discovery freshness to the local/full context formatter 2026-06-09 10:58:38 +01:00
formatters_branchcov0718_test.go Add Go branch-coverage tests for twelve pure backend helpers 2026-07-19 15:10:09 +01:00
formatters_test.go Add discovery freshness to the local/full context formatter 2026-06-09 10:58:38 +01:00
readiness.go Add discovery readiness to Assistant context 2026-06-04 21:56:36 +01:00
readiness_branchcov0718_test.go Add Go branch-coverage tests for twelve pure backend helpers 2026-07-19 15:10:09 +01:00
readiness_test.go Add discovery readiness to Assistant context 2026-06-04 21:56:36 +01:00
scenario_corpus_test.go Add Kubernetes (kubectl exec) cell to the Discovery oracle 2026-06-07 15:23:25 +01:00
service.go Resolve discovery lookups across forked host identities 2026-08-24 15:18:30 +01:00
service_identity.go Add distinctive-port fast-path for un-named workloads 2026-06-07 21:52:41 +01:00
service_identity_test.go Add distinctive-port fast-path for un-named workloads 2026-06-07 21:52:41 +01:00
service_test.go Resolve discovery lookups across forked host identities 2026-08-24 15:18:30 +01:00
store.go fix(discovery): bring hosts into the fingerprint model so they auto-discover (#1479) 2026-07-07 22:55:04 +01:00
store_test.go Remove 198 unreachable Go functions 2026-06-03 12:29:37 +01:00
tools_adapter.go Implement Discovery observed context UX 2026-05-20 13:21:55 +01:00
tools_adapter_test.go Implement Discovery observed context UX 2026-05-20 13:21:55 +01:00
types.go feat(discovery): suggest availability probes from discovered service types 2026-06-26 17:12:11 +01:00
types_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
url_suggestion.go fix(discovery): backfill availability suggestions for existing discoveries 2026-06-26 23:56:15 +01:00
url_suggestion_test.go Make workload discovery repair known service results 2026-06-05 09:21:53 +01:00