Plugins: Fix bug with copying grafanaData (#64446)

This commit is contained in:
Stephanie Hingtgen 2023-03-08 12:21:01 -06:00 committed by GitHub
parent fbe3bdc8f5
commit 39a4634ae9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View File

@ -424,10 +424,11 @@ func (s *Service) httpClientOptions(ctx context.Context, ds *datasources.DataSou
if ds.JsonData != nil {
opts.CustomOptions = ds.JsonData.MustMap()
// allow the plugin sdk to get the json data in JSONDataFromHTTPClientOptions
opts.CustomOptions["grafanaData"] = make(map[string]interface{})
deepJsonDataCopy := make(map[string]interface{}, len(opts.CustomOptions))
for k, v := range opts.CustomOptions {
opts.CustomOptions[k] = v
deepJsonDataCopy[k] = v
}
opts.CustomOptions["grafanaData"] = deepJsonDataCopy
}
if ds.BasicAuth {
password, err := s.DecryptedBasicAuthPassword(ctx, ds)

View File

@ -427,6 +427,10 @@ func TestService_GetHttpTransport(t *testing.T) {
require.NotNil(t, rt)
tr := configuredTransport
opts, err := dsService.httpClientOptions(context.Background(), &ds)
require.NoError(t, err)
require.Equal(t, ds.JsonData.MustMap()["grafanaData"], opts.CustomOptions["grafanaData"])
// make sure we can still marshal the JsonData after httpClientOptions (avoid cycles)
_, err = ds.JsonData.MarshalJSON()
require.NoError(t, err)