Support for secure socks proxy (#1650)

* Enables PDC for zabbix datasource

* 4.4.0

* Updating CHANGELOG

* Updating CHANGELOG

* Updating CHANGELOG
This commit is contained in:
lean.dev
2023-07-25 12:54:48 -03:00
committed by GitHub
parent 445f3fa173
commit 8205f7aaf8
9 changed files with 423 additions and 79 deletions

View File

@@ -83,7 +83,7 @@ func newZabbixDatasourceInstance(dsSettings backend.DataSourceInstanceSettings)
func (ds *ZabbixDatasource) CheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error) {
res := &backend.CheckHealthResult{}
dsInstance, err := ds.getDSInstance(req.PluginContext)
dsInstance, err := ds.getDSInstance(ctx, req.PluginContext)
if err != nil {
res.Status = backend.HealthStatusError
res.Message = "Error getting datasource instance"
@@ -108,7 +108,7 @@ func (ds *ZabbixDatasource) QueryData(ctx context.Context, req *backend.QueryDat
metrics.DataSourceQueryTotal.WithLabelValues("metrics").Inc()
qdr := backend.NewQueryDataResponse()
zabbixDS, err := ds.getDSInstance(req.PluginContext)
zabbixDS, err := ds.getDSInstance(ctx, req.PluginContext)
if err != nil {
return nil, err
}
@@ -143,8 +143,8 @@ func (ds *ZabbixDatasource) QueryData(ctx context.Context, req *backend.QueryDat
}
// getDSInstance Returns cached datasource or creates new one
func (ds *ZabbixDatasource) getDSInstance(pluginContext backend.PluginContext) (*ZabbixDatasourceInstance, error) {
instance, err := ds.im.Get(pluginContext)
func (ds *ZabbixDatasource) getDSInstance(ctx context.Context, pluginContext backend.PluginContext) (*ZabbixDatasourceInstance, error) {
instance, err := ds.im.Get(ctx, pluginContext)
if err != nil {
return nil, err
}

View File

@@ -1,6 +1,7 @@
package datasource
import (
"context"
"testing"
"github.com/grafana/grafana-plugin-sdk-go/backend"
@@ -58,7 +59,7 @@ func TestZabbixBackend_getCachedDatasource(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ds := NewZabbixDatasource()
got, _ := ds.getDSInstance(tt.pluginContext)
got, _ := ds.getDSInstance(context.Background(), tt.pluginContext)
// Only checking the URL, being the easiest value to, and guarantee equality for
assert.Equal(t, tt.want.zabbix.GetAPI().GetUrl().String(), got.zabbix.GetAPI().GetUrl().String())

View File

@@ -41,8 +41,9 @@ func (ds *ZabbixDatasource) ZabbixAPIHandler(rw http.ResponseWriter, req *http.R
return
}
pluginCxt := httpadapter.PluginConfigFromContext(req.Context())
dsInstance, err := ds.getDSInstance(pluginCxt)
ctx := req.Context()
pluginCxt := httpadapter.PluginConfigFromContext(ctx)
dsInstance, err := ds.getDSInstance(ctx, pluginCxt)
if err != nil {
ds.logger.Error("Error loading datasource", "error", err)
writeError(rw, http.StatusInternalServerError, err)
@@ -81,8 +82,9 @@ func (ds *ZabbixDatasource) DBConnectionPostProcessingHandler(rw http.ResponseWr
return
}
pluginCxt := httpadapter.PluginConfigFromContext(req.Context())
dsInstance, err := ds.getDSInstance(pluginCxt)
ctx := req.Context()
pluginCxt := httpadapter.PluginConfigFromContext(ctx)
dsInstance, err := ds.getDSInstance(ctx, pluginCxt)
if err != nil {
ds.logger.Error("Error loading datasource", "error", err)
writeError(rw, http.StatusInternalServerError, err)