From 0761987cfde798b4a87e1167265200d7bd9f9d0e Mon Sep 17 00:00:00 2001 From: Josh Powers Date: Tue, 10 Jan 2023 09:52:51 -0700 Subject: [PATCH] fix(inputs.upsd): ensure firmware is always a string fixes: #12461 --- plugins/inputs/upsd/upsd.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/inputs/upsd/upsd.go b/plugins/inputs/upsd/upsd.go index e4cd6e0a89bf8..9b2876709183c 100644 --- a/plugins/inputs/upsd/upsd.go +++ b/plugins/inputs/upsd/upsd.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/influxdata/telegraf" + "github.com/influxdata/telegraf/internal" "github.com/influxdata/telegraf/internal/choice" "github.com/influxdata/telegraf/plugins/inputs" nut "github.com/robbiet480/go.nut" @@ -83,10 +84,15 @@ func (u *Upsd) gatherUps(acc telegraf.Accumulator, name string, variables []nut. "nominal_input_voltage": metrics["input.voltage.nominal"], "nominal_battery_voltage": metrics["battery.voltage.nominal"], "nominal_power": metrics["ups.realpower.nominal"], - "firmware": metrics["ups.firmware"], "battery_date": metrics["battery.mfr.date"], } + val, err := internal.ToString(metrics["ups.firmware"]) + if err != nil { + acc.AddError(fmt.Errorf("converting ups.firmware=%v failed: %v", metrics["ups.firmware"], err)) + } + fields["firmware"] = val + acc.AddFields("upsd", fields, tags) }