mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
package utils
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"encoding/json"
 | 
						|
	"fmt"
 | 
						|
 | 
						|
	"github.com/grafana/grafana-plugin-sdk-go/backend"
 | 
						|
	"go.opentelemetry.io/otel/attribute"
 | 
						|
	"go.opentelemetry.io/otel/trace"
 | 
						|
)
 | 
						|
 | 
						|
// GetJsonData just gets the json in easier to work with type. It's used on multiple places which isn't super effective
 | 
						|
// but only when creating a client which should not happen often anyway.
 | 
						|
func GetJsonData(settings backend.DataSourceInstanceSettings) (map[string]any, error) {
 | 
						|
	var jsonData map[string]any
 | 
						|
	err := json.Unmarshal(settings.JSONData, &jsonData)
 | 
						|
	if err != nil {
 | 
						|
		return nil, fmt.Errorf("error unmarshalling JSONData: %w", err)
 | 
						|
	}
 | 
						|
	return jsonData, nil
 | 
						|
}
 | 
						|
 | 
						|
// StartTrace setups a trace but does not panic if tracer is nil which helps with testing
 | 
						|
func StartTrace(ctx context.Context, tracer trace.Tracer, name string, attributes ...attribute.KeyValue) (context.Context, func()) {
 | 
						|
	if tracer == nil {
 | 
						|
		return ctx, func() {}
 | 
						|
	}
 | 
						|
	ctx, span := tracer.Start(ctx, name, trace.WithAttributes(attributes...))
 | 
						|
	return ctx, func() {
 | 
						|
		span.End()
 | 
						|
	}
 | 
						|
}
 |