Handle ds init errors

This commit is contained in:
Alexander Zobnin
2020-06-01 18:38:50 +03:00
parent df12c0443d
commit 3e379b01df
3 changed files with 19 additions and 3 deletions

View File

@@ -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)

View File

@@ -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}

View File

@@ -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)