From ae98807ace1e4481da7efc35c19a08a5a44272a5 Mon Sep 17 00:00:00 2001 From: Holger Obermaier <40787752+ho-ob@users.noreply.github.com> Date: Tue, 6 Dec 2022 13:40:22 +0100 Subject: [PATCH] Some servers return "ConsumedPowerWatt":65535 instead of "ConsumedPowerWatt":null --- receivers/redfishReceiver.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/receivers/redfishReceiver.go b/receivers/redfishReceiver.go index a37a296..72141c5 100644 --- a/receivers/redfishReceiver.go +++ b/receivers/redfishReceiver.go @@ -1,9 +1,11 @@ package receivers import ( + "bytes" "crypto/tls" "encoding/json" "fmt" + "io" "net/http" "strconv" "strings" @@ -347,9 +349,17 @@ func (r *RedfishReceiver) readProcessorMetrics( // This property shall contain the temperature, in Celsius, of the processor. TemperatureCelsius float32 `json:"TemperatureCelsius"` } - err = json.NewDecoder(resp.Body).Decode(&processorMetrics) + body, err := io.ReadAll(resp.Body) if err != nil { - return fmt.Errorf("unable to decode JSON for processor metrics: %+w", err) + return fmt.Errorf("unable to read JSON for processor metrics: %+w", err) + } + err = json.NewDecoder(bytes.NewReader(body)).Decode(&processorMetrics) + if err != nil { + return fmt.Errorf( + "unable to decode JSON='%s' for processor metrics: %+w", + string(body), + err, + ) } processorMetrics.SetClient(processor.Client) @@ -381,7 +391,9 @@ func (r *RedfishReceiver) readProcessorMetrics( namePower := "consumed_power" - if !clientConfig.isExcluded[namePower] { + if !clientConfig.isExcluded[namePower] && + // Some servers return "ConsumedPowerWatt":65535 instead of "ConsumedPowerWatt":null + processorMetrics.ConsumedPowerWatt != 65535 { y, err := lp.New(namePower, tags, metaPower, map[string]interface{}{ "value": processorMetrics.ConsumedPowerWatt,