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
|
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) {
|
func (u *InputUnifi) collectAlarms(logs []any, sites []*unifi.Site, c *Controller) ([]any, error) {
|
||||||
if *c.SaveAlarms {
|
if *c.SaveAlarms {
|
||||||
u.LogDebugf("Collecting controller alarms: %s (%s)", c.URL, c.ID)
|
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 {
|
for _, e := range events {
|
||||||
// Try to extract MAC address from alarm message and enrich with device name
|
// Try to extract MAC address from alarm message and enrich with device name
|
||||||
e.DeviceName = u.extractDeviceNameFromAlarm(e, macToName)
|
e.DeviceName = u.extractDeviceNameFromAlarm(e, macToName)
|
||||||
|
e.SiteName = overrideSiteName(c, e.SiteName)
|
||||||
|
|
||||||
logs = append(logs, e)
|
logs = append(logs, e)
|
||||||
|
|
||||||
@@ -202,9 +218,7 @@ func (u *InputUnifi) collectAnomalies(logs []any, sites []*unifi.Site, c *Contro
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, e := range events {
|
for _, e := range events {
|
||||||
if c.DefaultSiteNameOverride != "" && isDefaultSiteName(e.SiteName) {
|
e.SiteName = overrideSiteName(c, e.SiteName)
|
||||||
e.SiteName = c.DefaultSiteNameOverride
|
|
||||||
}
|
|
||||||
|
|
||||||
logs = append(logs, e)
|
logs = append(logs, e)
|
||||||
|
|
||||||
@@ -241,6 +255,8 @@ func (u *InputUnifi) collectEvents(logs []any, sites []*unifi.Site, c *Controlle
|
|||||||
|
|
||||||
for _, e := range events {
|
for _, e := range events {
|
||||||
e := redactEvent(e, c.HashPII, c.DropPII)
|
e := redactEvent(e, c.HashPII, c.DropPII)
|
||||||
|
e.SiteName = overrideSiteName(c, e.SiteName)
|
||||||
|
|
||||||
logs = append(logs, e)
|
logs = append(logs, e)
|
||||||
|
|
||||||
webserver.NewInputEvent(PluginName, s.ID+"_events", &webserver.Event{
|
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 {
|
for _, e := range entries {
|
||||||
e := redactSystemLogEntry(e, c.HashPII, c.DropPII)
|
e := redactSystemLogEntry(e, c.HashPII, c.DropPII)
|
||||||
|
e.SiteName = overrideSiteName(c, e.SiteName)
|
||||||
|
|
||||||
logs = append(logs, e)
|
logs = append(logs, e)
|
||||||
|
|
||||||
webserver.NewInputEvent(PluginName, e.SiteName+"_syslog", &webserver.Event{
|
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 {
|
for _, e := range events {
|
||||||
|
e.SiteName = overrideSiteName(c, e.SiteName)
|
||||||
|
|
||||||
logs = append(logs, e)
|
logs = append(logs, e)
|
||||||
|
|
||||||
webserver.NewInputEvent(PluginName, s.ID+"_ids", &webserver.Event{
|
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