github.com/jaylevin/jenkins-library@v1.230.4/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  }