move cache to the separate package
This commit is contained in:
2
go.mod
2
go.mod
@@ -9,7 +9,7 @@ require (
|
|||||||
github.com/grafana/grafana-plugin-sdk-go v0.65.0
|
github.com/grafana/grafana-plugin-sdk-go v0.65.0
|
||||||
github.com/grafana/grafana_plugin_model v0.0.0-20180518082423-84176c64269d
|
github.com/grafana/grafana_plugin_model v0.0.0-20180518082423-84176c64269d
|
||||||
github.com/hashicorp/go-hclog v0.9.2
|
github.com/hashicorp/go-hclog v0.9.2
|
||||||
github.com/hashicorp/go-plugin v1.2.2
|
github.com/hashicorp/go-plugin v1.2.2 // indirect
|
||||||
github.com/kr/pretty v0.1.0 // indirect
|
github.com/kr/pretty v0.1.0 // indirect
|
||||||
github.com/patrickmn/go-cache v2.1.0+incompatible
|
github.com/patrickmn/go-cache v2.1.0+incompatible
|
||||||
github.com/pkg/errors v0.8.1 // indirect
|
github.com/pkg/errors v0.8.1 // indirect
|
||||||
|
|||||||
2
pkg/cache.go → pkg/cache/cache.go
vendored
2
pkg/cache.go → pkg/cache/cache.go
vendored
@@ -1,4 +1,4 @@
|
|||||||
package main
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/sha1"
|
"crypto/sha1"
|
||||||
2
pkg/cache_test.go → pkg/cache/cache_test.go
vendored
2
pkg/cache_test.go → pkg/cache/cache_test.go
vendored
@@ -1,4 +1,4 @@
|
|||||||
package main
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/alexanderzobnin/grafana-zabbix/pkg/cache"
|
||||||
"github.com/alexanderzobnin/grafana-zabbix/pkg/gtime"
|
"github.com/alexanderzobnin/grafana-zabbix/pkg/gtime"
|
||||||
"github.com/alexanderzobnin/grafana-zabbix/pkg/zabbixapi"
|
"github.com/alexanderzobnin/grafana-zabbix/pkg/zabbixapi"
|
||||||
|
|
||||||
@@ -16,7 +17,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type ZabbixDatasource struct {
|
type ZabbixDatasource struct {
|
||||||
datasourceCache *Cache
|
datasourceCache *cache.Cache
|
||||||
logger log.Logger
|
logger log.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,7 +27,7 @@ type ZabbixDatasourceInstance struct {
|
|||||||
zabbixAPI *zabbixapi.ZabbixAPI
|
zabbixAPI *zabbixapi.ZabbixAPI
|
||||||
dsInfo *backend.DataSourceInstanceSettings
|
dsInfo *backend.DataSourceInstanceSettings
|
||||||
Settings *ZabbixDatasourceSettings
|
Settings *ZabbixDatasourceSettings
|
||||||
queryCache *Cache
|
queryCache *cache.Cache
|
||||||
logger log.Logger
|
logger log.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,7 +47,7 @@ func NewZabbixDatasourceInstance(dsInfo *backend.DataSourceInstanceSettings) (*Z
|
|||||||
dsInfo: dsInfo,
|
dsInfo: dsInfo,
|
||||||
zabbixAPI: zabbixAPI,
|
zabbixAPI: zabbixAPI,
|
||||||
Settings: zabbixSettings,
|
Settings: zabbixSettings,
|
||||||
queryCache: NewCache(zabbixSettings.CacheTTL, 10*time.Minute),
|
queryCache: cache.NewCache(zabbixSettings.CacheTTL, 10*time.Minute),
|
||||||
logger: log.New(),
|
logger: log.New(),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
@@ -113,11 +114,11 @@ func (ds *ZabbixDatasource) GetDatasource(pluginContext backend.PluginContext) (
|
|||||||
dsSettings := pluginContext.DataSourceInstanceSettings
|
dsSettings := pluginContext.DataSourceInstanceSettings
|
||||||
dsKey := fmt.Sprintf("%d-%d", pluginContext.OrgID, dsSettings.ID)
|
dsKey := fmt.Sprintf("%d-%d", pluginContext.OrgID, dsSettings.ID)
|
||||||
// Get hash to check if settings changed
|
// Get hash to check if settings changed
|
||||||
dsInfoHash := HashDatasourceInfo(dsSettings)
|
dsInfoHash := cache.HashDatasourceInfo(dsSettings)
|
||||||
|
|
||||||
if cachedData, ok := ds.datasourceCache.Get(dsKey); ok {
|
if cachedData, ok := ds.datasourceCache.Get(dsKey); ok {
|
||||||
if cachedDS, ok := cachedData.(*ZabbixDatasourceInstance); ok {
|
if cachedDS, ok := cachedData.(*ZabbixDatasourceInstance); ok {
|
||||||
cachedDSHash := HashDatasourceInfo(cachedDS.dsInfo)
|
cachedDSHash := cache.HashDatasourceInfo(cachedDS.dsInfo)
|
||||||
if cachedDSHash == dsInfoHash {
|
if cachedDSHash == dsInfoHash {
|
||||||
return cachedDS, nil
|
return cachedDS, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/alexanderzobnin/grafana-zabbix/pkg/cache"
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
|
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/backend/resource/httpadapter"
|
"github.com/grafana/grafana-plugin-sdk-go/backend/resource/httpadapter"
|
||||||
@@ -43,7 +44,7 @@ func Init(logger log.Logger, mux *http.ServeMux) *ZabbixDatasource {
|
|||||||
|
|
||||||
ds := &ZabbixDatasource{
|
ds := &ZabbixDatasource{
|
||||||
logger: logger,
|
logger: logger,
|
||||||
datasourceCache: NewCache(10*time.Minute, 10*time.Minute),
|
datasourceCache: cache.NewCache(10*time.Minute, 10*time.Minute),
|
||||||
}
|
}
|
||||||
|
|
||||||
mux.HandleFunc("/", ds.rootHandler)
|
mux.HandleFunc("/", ds.rootHandler)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"regexp"
|
"regexp"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/alexanderzobnin/grafana-zabbix/pkg/cache"
|
||||||
"github.com/alexanderzobnin/grafana-zabbix/pkg/zabbix"
|
"github.com/alexanderzobnin/grafana-zabbix/pkg/zabbix"
|
||||||
"github.com/alexanderzobnin/grafana-zabbix/pkg/zabbixapi"
|
"github.com/alexanderzobnin/grafana-zabbix/pkg/zabbixapi"
|
||||||
simplejson "github.com/bitly/go-simplejson"
|
simplejson "github.com/bitly/go-simplejson"
|
||||||
@@ -28,7 +29,7 @@ var CachedMethods = map[string]bool{
|
|||||||
func (ds *ZabbixDatasourceInstance) ZabbixQuery(ctx context.Context, apiReq *ZabbixAPIRequest) (*simplejson.Json, error) {
|
func (ds *ZabbixDatasourceInstance) ZabbixQuery(ctx context.Context, apiReq *ZabbixAPIRequest) (*simplejson.Json, error) {
|
||||||
var resultJson *simplejson.Json
|
var resultJson *simplejson.Json
|
||||||
var err error
|
var err error
|
||||||
requestHash := HashString(apiReq.String())
|
requestHash := cache.HashString(apiReq.String())
|
||||||
|
|
||||||
cachedResult, queryExistInCache := ds.queryCache.Get(requestHash)
|
cachedResult, queryExistInCache := ds.queryCache.Get(requestHash)
|
||||||
if !queryExistInCache {
|
if !queryExistInCache {
|
||||||
|
|||||||
Reference in New Issue
Block a user