From a93801ed91d23b85ce3dac71e9df9c1ffc273580 Mon Sep 17 00:00:00 2001
From: Thomas Roehl <Thomas.Roehl@googlemail.com>
Date: Thu, 24 Feb 2022 18:17:55 +0100
Subject: [PATCH] Format value string also for known metrics

---
 sinks/gangliaCommon.go | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/sinks/gangliaCommon.go b/sinks/gangliaCommon.go
index 2837108..b2a1b2c 100644
--- a/sinks/gangliaCommon.go
+++ b/sinks/gangliaCommon.go
@@ -155,12 +155,38 @@ func GetCommonGangliaConfig(point lp.CCMetric) GangliaMetricConfig {
 	for _, group := range CommonGangliaMetrics {
 		for _, metric := range group.Metrics {
 			if metric.Name == mname {
+				valueStr := ""
+				value, ok := point.GetField("value")
+				if ok {
+					switch real := value.(type) {
+					case float64:
+						valueStr = fmt.Sprintf("%f", real)
+					case float32:
+						valueStr = fmt.Sprintf("%f", real)
+					case int64:
+						valueStr = fmt.Sprintf("%d", real)
+					case int32:
+						valueStr = fmt.Sprintf("%d", real)
+					case int:
+						valueStr = fmt.Sprintf("%d", real)
+					case uint64:
+						valueStr = fmt.Sprintf("%d", real)
+					case uint32:
+						valueStr = fmt.Sprintf("%d", real)
+					case uint:
+						valueStr = fmt.Sprintf("%d", real)
+					case string:
+						valueStr = real
+					default:
+					}
+				}
 				return GangliaMetricConfig{
 					Group: group.Name,
 					Type:  metric.Type,
 					Slope: metric.Slope,
 					Tmax:  metric.Tmax,
 					Unit:  metric.Unit,
+					Value: valueStr,
 				}
 			}
 		}