diff --git a/pkg/datasource.go b/pkg/datasource.go index 82b1e5f..86974bc 100644 --- a/pkg/datasource.go +++ b/pkg/datasource.go @@ -164,6 +164,16 @@ func readZabbixSettings(dsInstanceSettings *backend.DataSourceInstanceSettings) return nil, err } + if zabbixSettingsDTO.TrendsFrom == "" { + zabbixSettingsDTO.TrendsFrom = "7d" + } + if zabbixSettingsDTO.TrendsRange == "" { + zabbixSettingsDTO.TrendsRange = "4d" + } + if zabbixSettingsDTO.CacheTTL == "" { + zabbixSettingsDTO.CacheTTL = "1h" + } + trendsFrom, err := gtime.ParseInterval(zabbixSettingsDTO.TrendsFrom) if err != nil { return nil, err @@ -202,6 +212,7 @@ func (ds *ZabbixDatasource) GetDatasource(pluginContext backend.PluginContext) ( ds.logger.Debug(fmt.Sprintf("Datasource cache miss (Org %d Id %d '%s' %s)", pluginContext.OrgID, dsSettings.ID, dsSettings.Name, dsInfoHash)) + ds.logger.Debug("DS config", "settings", pluginContext.DataSourceInstanceSettings) dsInstance, err := ds.NewZabbixDatasource(pluginContext.DataSourceInstanceSettings) if err != nil { ds.logger.Error("Error initializing datasource", "error", err) diff --git a/pkg/resource_handler.go b/pkg/resource_handler.go index b90790c..a4d4512 100644 --- a/pkg/resource_handler.go +++ b/pkg/resource_handler.go @@ -37,6 +37,11 @@ func (ds *ZabbixDatasource) zabbixAPIHandler(rw http.ResponseWriter, req *http.R pluginCxt := httpadapter.PluginConfigFromContext(req.Context()) dsInstance, err := ds.GetDatasource(pluginCxt) + if err != nil { + ds.logger.Error("Error loading datasource", "error", err) + WriteError(rw, http.StatusInternalServerError, err) + return + } apiReq := &ZabbixAPIRequest{Method: reqData.Method, Params: reqData.Params} diff --git a/pkg/zabbix_api.go b/pkg/zabbix_api.go index def5df1..3ed4bbe 100644 --- a/pkg/zabbix_api.go +++ b/pkg/zabbix_api.go @@ -29,14 +29,14 @@ func (ds *ZabbixDatasourceInstance) ZabbixQuery(ctx context.Context, apiReq *Zab cachedResult, queryExistInCache := ds.queryCache.Get(requestHash) if !queryExistInCache { resultJson, err = ds.ZabbixRequest(ctx, apiReq.Method, apiReq.Params) + if err != nil { + return nil, err + } if _, ok := NotCachedMethods[apiReq.Method]; !ok { ds.logger.Debug("Write result to cache", "method", apiReq.Method) ds.queryCache.Set(requestHash, resultJson) } - if err != nil { - return nil, err - } } else { var ok bool resultJson, ok = cachedResult.(*simplejson.Json)