Accept any type for datasource response

This commit is contained in:
Alec Sears
2019-10-17 16:47:03 -05:00
parent ee7af6ebf9
commit 27cf031b6c

View File

@@ -110,7 +110,7 @@ func (ds *ZabbixDatasource) ZabbixAPIQuery(ctx context.Context, tsdbReq *datasou
resultByte, _ := result.(*simplejson.Json).MarshalJSON() resultByte, _ := result.(*simplejson.Json).MarshalJSON()
ds.logger.Debug("ZabbixAPIQuery", "result", string(resultByte)) ds.logger.Debug("ZabbixAPIQuery", "result", string(resultByte))
return ds.BuildResponse(result.(*simplejson.Json)) return ds.BuildResponse(result)
} }
// TestConnection checks authentication and version of the Zabbix API and returns that info // TestConnection checks authentication and version of the Zabbix API and returns that info
@@ -135,22 +135,13 @@ func (ds *ZabbixDatasource) TestConnection(ctx context.Context, tsdbReq *datasou
testResponse := connectionTestResponse{ testResponse := connectionTestResponse{
ZabbixVersion: response.MustString(), ZabbixVersion: response.MustString(),
} }
responseJSON, err := json.Marshal(testResponse)
if err != nil {
return nil, err
}
responseSimpleJSON, err := simplejson.NewJson(responseJSON) return ds.BuildResponse(testResponse)
if err != nil {
return nil, err
}
return ds.BuildResponse(responseSimpleJSON)
} }
// BuildResponse transforms a Zabbix API response to a DatasourceResponse // BuildResponse transforms a Zabbix API response to a DatasourceResponse
func (ds *ZabbixDatasource) BuildResponse(result *simplejson.Json) (*datasource.DatasourceResponse, error) { func (ds *ZabbixDatasource) BuildResponse(result interface{}) (*datasource.DatasourceResponse, error) {
resultByte, err := result.MarshalJSON() jsonBytes, err := json.Marshal(result)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -159,7 +150,7 @@ func (ds *ZabbixDatasource) BuildResponse(result *simplejson.Json) (*datasource.
Results: []*datasource.QueryResult{ Results: []*datasource.QueryResult{
&datasource.QueryResult{ &datasource.QueryResult{
RefId: "zabbixAPI", RefId: "zabbixAPI",
MetaJson: string(resultByte), MetaJson: string(jsonBytes),
}, },
}, },
}, nil }, nil