mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-08-25 17:02:10 +00:00
Two TrueNAS systems that report the same hostname collapsed into one flapping resource (#1573, #1575): systemSourceID keyed the system by the snapshot-reported hostname, every child pool/dataset/app/VM/share/disk was scoped under it, and the client minted the system's machine key from the DMI serial with a hostname fallback, so serial-less systems sharing a hostname (and DR clones sharing a serial) also fully merged in the identity matcher. The system source ID now scopes to the connection ID the poller passes through NewLiveProviderForConnection; the hostname arm survives only for fixture snapshots, which carry no connection. The ingest identity drops the machine key entirely (DR clones share DMI serials, and vendor placeholder serials collide across unrelated machines), the client no longer falls back to the hostname for MachineID, and ingest skips identity-pin completion for SourceTrueNAS so a stale pre-fix pin or a same-named agent host's pin cannot lend the system a machine key and re-merge what connection scoping keeps apart. Agent.AgentID and the native metric history keys follow the source ID minus its system: prefix, so BuildMetricsTarget keeps resolving one series. Rows minted under the retired hostname-keyed derivation re-key once via record-declared succession: records name their old canonical IDs in IngestRecord.SupersededCanonicalIDs and IngestRecords applies the existing ApplyCanonicalIDSuccessions semantics (operator state and action audits re-key, the superseded pin drops, never while the old ID still belongs to a live resource, journal rows are never rewritten). Alert identities and persisted metric series under old child IDs are not re-keyed: active alerts re-arm under the new IDs and TrueNAS host charts are backed by native read-through history. |
||
|---|---|---|
| .. | ||
| client.go | ||
| client_helpers_test.go | ||
| client_test.go | ||
| contract_test.go | ||
| disk_health.go | ||
| fixture_records_test.go | ||
| fixtures.go | ||
| integration_test.go | ||
| provider.go | ||
| provider_additional_test.go | ||
| provider_concurrency_test.go | ||
| provider_health_test.go | ||
| provider_test.go | ||
| types.go | ||