Zabbix API refactoring

This commit is contained in:
Alexander Zobnin
2020-06-02 15:48:33 +03:00
parent 5e5325ed35
commit a5f8eb02bb
6 changed files with 286 additions and 180 deletions

View File

@@ -12,6 +12,7 @@ import (
"time"
"github.com/alexanderzobnin/grafana-zabbix/pkg/gtime"
"github.com/alexanderzobnin/grafana-zabbix/pkg/zabbixapi"
hclog "github.com/hashicorp/go-hclog"
plugin "github.com/hashicorp/go-plugin"
@@ -37,6 +38,7 @@ type ZabbixDatasource struct {
type ZabbixDatasourceInstance struct {
url *url.URL
authToken string
zabbixAPI *zabbixapi.ZabbixAPI
dsInfo *backend.DataSourceInstanceSettings
Settings *ZabbixDatasourceSettings
queryCache *Cache
@@ -44,6 +46,17 @@ type ZabbixDatasourceInstance struct {
logger log.Logger
}
// NewZabbixDatasource returns new datasource instance.
func (ds *ZabbixDatasource) NewZabbixDatasource(dsInfo *backend.DataSourceInstanceSettings) (*ZabbixDatasourceInstance, error) {
dsInstance, err := newZabbixDatasource(dsInfo)
if err != nil {
return nil, err
}
dsInstance.logger = ds.logger
return dsInstance, nil
}
// CheckHealth checks if the plugin is running properly
func (ds *ZabbixDatasource) CheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error) {
res := &backend.CheckHealthResult{}
@@ -104,16 +117,6 @@ func (ds *ZabbixDatasource) QueryData(ctx context.Context, req *backend.QueryDat
// func (p *ZabbixPlugin) GetDatasourceById(datasourceId int64) (*ZabbixDatasourceInstance, error) {
// }
func (ds *ZabbixDatasource) NewZabbixDatasource(dsInfo *backend.DataSourceInstanceSettings) (*ZabbixDatasourceInstance, error) {
dsInstance, err := newZabbixDatasource(dsInfo)
if err != nil {
return nil, err
}
dsInstance.logger = ds.logger
return dsInstance, nil
}
// newZabbixDatasource returns an initialized ZabbixDatasource
func newZabbixDatasource(dsInfo *backend.DataSourceInstanceSettings) (*ZabbixDatasourceInstance, error) {
zabbixURLStr := dsInfo.URL
@@ -122,12 +125,18 @@ func newZabbixDatasource(dsInfo *backend.DataSourceInstanceSettings) (*ZabbixDat
return nil, err
}
zabbixAPI, err := zabbixapi.New(dsInfo.URL)
if err != nil {
return nil, err
}
zabbixSettings, err := readZabbixSettings(dsInfo)
if err != nil {
return nil, err
}
return &ZabbixDatasourceInstance{
zabbixAPI: zabbixAPI,
url: zabbixURL,
dsInfo: dsInfo,
Settings: zabbixSettings,