mirror of
https://github.com/unpoller/unpoller.git
synced 2026-09-29 19:11:17 +02:00
Merge pull request #1074 from Prototype0645/fix/site-name-override-logs
This commit is contained in:
@@ -71,6 +71,21 @@ func (u *InputUnifi) collectControllerEvents(c *Controller) ([]any, error) {
|
||||
return logs, nil
|
||||
}
|
||||
|
||||
// overrideSiteName applies the controller's default_site_name_override to a
|
||||
// site name that is still the controller's stock default.
|
||||
//
|
||||
// Log entries need this applied here, one collector at a time. Metrics get the
|
||||
// override from augmentMetrics, but log entries never pass through it: they
|
||||
// leave by collectControllerEvents, which reads its sites straight from
|
||||
// getFilteredSites. So whatever a collector appends is what ships.
|
||||
func overrideSiteName(c *Controller, siteName string) string {
|
||||
if c.DefaultSiteNameOverride != "" && isDefaultSiteName(siteName) {
|
||||
return c.DefaultSiteNameOverride
|
||||
}
|
||||
|
||||
return siteName
|
||||
}
|
||||
|
||||
func (u *InputUnifi) collectAlarms(logs []any, sites []*unifi.Site, c *Controller) ([]any, error) {
|
||||
if *c.SaveAlarms {
|
||||
u.LogDebugf("Collecting controller alarms: %s (%s)", c.URL, c.ID)
|
||||
@@ -161,6 +176,7 @@ func (u *InputUnifi) collectAlarms(logs []any, sites []*unifi.Site, c *Controlle
|
||||
for _, e := range events {
|
||||
// Try to extract MAC address from alarm message and enrich with device name
|
||||
e.DeviceName = u.extractDeviceNameFromAlarm(e, macToName)
|
||||
e.SiteName = overrideSiteName(c, e.SiteName)
|
||||
|
||||
logs = append(logs, e)
|
||||
|
||||
@@ -202,9 +218,7 @@ func (u *InputUnifi) collectAnomalies(logs []any, sites []*unifi.Site, c *Contro
|
||||
}
|
||||
|
||||
for _, e := range events {
|
||||
if c.DefaultSiteNameOverride != "" && isDefaultSiteName(e.SiteName) {
|
||||
e.SiteName = c.DefaultSiteNameOverride
|
||||
}
|
||||
e.SiteName = overrideSiteName(c, e.SiteName)
|
||||
|
||||
logs = append(logs, e)
|
||||
|
||||
@@ -241,6 +255,8 @@ func (u *InputUnifi) collectEvents(logs []any, sites []*unifi.Site, c *Controlle
|
||||
|
||||
for _, e := range events {
|
||||
e := redactEvent(e, c.HashPII, c.DropPII)
|
||||
e.SiteName = overrideSiteName(c, e.SiteName)
|
||||
|
||||
logs = append(logs, e)
|
||||
|
||||
webserver.NewInputEvent(PluginName, s.ID+"_events", &webserver.Event{
|
||||
@@ -270,6 +286,8 @@ func (u *InputUnifi) collectSyslog(logs []any, sites []*unifi.Site, c *Controlle
|
||||
|
||||
for _, e := range entries {
|
||||
e := redactSystemLogEntry(e, c.HashPII, c.DropPII)
|
||||
e.SiteName = overrideSiteName(c, e.SiteName)
|
||||
|
||||
logs = append(logs, e)
|
||||
|
||||
webserver.NewInputEvent(PluginName, e.SiteName+"_syslog", &webserver.Event{
|
||||
@@ -362,6 +380,8 @@ func (u *InputUnifi) collectIDs(logs []any, sites []*unifi.Site, c *Controller)
|
||||
}
|
||||
|
||||
for _, e := range events {
|
||||
e.SiteName = overrideSiteName(c, e.SiteName)
|
||||
|
||||
logs = append(logs, e)
|
||||
|
||||
webserver.NewInputEvent(PluginName, s.ID+"_ids", &webserver.Event{
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package inputunifi // nolint: testpackage
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
// TestOverrideSiteName is what this change exists for. Every UniFi OS console
|
||||
// calls its only site "default", so a poller watching several of them ships log
|
||||
// entries that cannot be told apart — which is what default_site_name_override
|
||||
// is meant to solve, and did not, on this path.
|
||||
func TestOverrideSiteName(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
for name, tc := range map[string]struct {
|
||||
override string
|
||||
siteName string
|
||||
want string
|
||||
}{
|
||||
"stock name from a UniFi OS console": {
|
||||
override: "Les_Solidarites",
|
||||
siteName: "Default (default)",
|
||||
want: "Les_Solidarites",
|
||||
},
|
||||
"bare default": {
|
||||
override: "Les_Solidarites",
|
||||
siteName: "default",
|
||||
want: "Les_Solidarites",
|
||||
},
|
||||
"a site the operator already named is left alone": {
|
||||
override: "Les_Solidarites",
|
||||
siteName: "CharlHot - SweetHome",
|
||||
want: "CharlHot - SweetHome",
|
||||
},
|
||||
"no override configured is a no-op": {
|
||||
override: "",
|
||||
siteName: "Default (default)",
|
||||
want: "Default (default)",
|
||||
},
|
||||
"empty site name is not a default": {
|
||||
override: "Les_Solidarites",
|
||||
siteName: "",
|
||||
want: "",
|
||||
},
|
||||
} {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
c := &Controller{DefaultSiteNameOverride: tc.override}
|
||||
assert.Equal(t, tc.want, overrideSiteName(c, tc.siteName))
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user