mirror of
https://github.com/grafana/grafana.git
synced 2025-09-23 05:43:19 +08:00
75 lines
2.3 KiB
Go
75 lines
2.3 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
|
data "github.com/grafana/grafana-plugin-sdk-go/experimental/apis/data/v0alpha1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
|
|
query "github.com/grafana/grafana/pkg/apis/query/v0alpha1"
|
|
testdata "github.com/grafana/grafana/pkg/tsdb/grafana-testdata-datasource"
|
|
)
|
|
|
|
type testdataDummy struct{}
|
|
|
|
var _ data.QueryDataClient = (*testdataDummy)(nil)
|
|
var _ query.DataSourceApiServerRegistry = (*testdataDummy)(nil)
|
|
|
|
// NewTestDataClient creates a runner that only works with testdata
|
|
func NewTestDataClient() data.QueryDataClient {
|
|
return &testdataDummy{}
|
|
}
|
|
|
|
// NewTestDataRegistry returns a registry that only knows about testdata
|
|
func NewTestDataRegistry() query.DataSourceApiServerRegistry {
|
|
return &testdataDummy{}
|
|
}
|
|
|
|
// ExecuteQueryData implements QueryHelper.
|
|
func (d *testdataDummy) QueryData(ctx context.Context, req data.QueryDataRequest) (int, *backend.QueryDataResponse, error) {
|
|
queries, _, err := data.ToDataSourceQueries(req)
|
|
if err != nil {
|
|
return http.StatusBadRequest, nil, err
|
|
}
|
|
|
|
qdr := &backend.QueryDataRequest{Queries: queries}
|
|
rsp, err := testdata.ProvideService().QueryData(ctx, qdr)
|
|
return query.GetResponseCode(rsp), rsp, err
|
|
}
|
|
|
|
// GetDatasourceAPI implements DataSourceRegistry.
|
|
func (*testdataDummy) GetDatasourceGroupVersion(pluginId string) (schema.GroupVersion, error) {
|
|
if pluginId == "testdata" || pluginId == "grafana-testdata-datasource" {
|
|
return schema.GroupVersion{
|
|
Group: "testdata.datasource.grafana.app",
|
|
Version: "v0alpha1",
|
|
}, nil
|
|
}
|
|
return schema.GroupVersion{}, fmt.Errorf("unsupported plugin (only testdata for now)")
|
|
}
|
|
|
|
// GetDatasourcePlugins implements QueryHelper.
|
|
func (d *testdataDummy) GetDatasourceApiServers(ctx context.Context) (*query.DataSourceApiServerList, error) {
|
|
return &query.DataSourceApiServerList{
|
|
ListMeta: metav1.ListMeta{
|
|
ResourceVersion: fmt.Sprintf("%d", time.Now().UnixMilli()),
|
|
},
|
|
Items: []query.DataSourceApiServer{
|
|
{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Name: "grafana-testdata-datasource",
|
|
CreationTimestamp: metav1.Now(),
|
|
},
|
|
Title: "Test Data",
|
|
GroupVersion: "testdata.datasource.grafana.app/v0alpha1",
|
|
AliasIDs: []string{"testdata"},
|
|
},
|
|
},
|
|
}, nil
|
|
}
|