github.com/SAP/jenkins-library@v1.362.0/cmd/influxWriteData.go (about) 1 package cmd 2 3 import ( 4 "encoding/json" 5 "fmt" 6 7 "github.com/SAP/jenkins-library/pkg/influx" 8 "github.com/SAP/jenkins-library/pkg/log" 9 "github.com/SAP/jenkins-library/pkg/telemetry" 10 influxdb2 "github.com/influxdata/influxdb-client-go/v2" 11 ) 12 13 func influxWriteData(config influxWriteDataOptions, _ *telemetry.CustomData) { 14 influxClient := influxdb2.NewClient(config.ServerURL, config.AuthToken) 15 // Error situations should be bubbled up until they reach the line below which will then stop execution 16 // through the log.Entry().Fatal() call leading to an os.Exit(1) in the end. 17 err := writeData(&config, influxClient) 18 if err != nil { 19 log.Entry().WithError(err).Fatal("step execution failed") 20 } 21 } 22 23 func writeData(config *influxWriteDataOptions, influxClient influxdb2.Client) error { 24 log.Entry().Info("influxWriteData step") 25 26 client := influx.NewClient(influxClient, config.Organization, config.Bucket) 27 var dataMap map[string]map[string]interface{} 28 if err := json.Unmarshal([]byte(config.DataMap), &dataMap); err != nil { 29 return fmt.Errorf("Failed to unmarshal dataMap: %v", err) 30 } 31 var dataMapTags map[string]map[string]string 32 if config.DataMapTags != "" { 33 if err := json.Unmarshal([]byte(config.DataMapTags), &dataMapTags); err != nil { 34 return fmt.Errorf("Failed to unmarshal dataMapTags: %v", err) 35 } 36 } 37 if err := client.WriteMetrics(dataMap, dataMapTags); err != nil { 38 return err 39 } 40 log.Entry().Info("Metrics have been written successfully") 41 return nil 42 }