From d743749f477ab30cf7e589ef268e2567dab8731f Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Tue, 16 Dec 2025 09:28:09 +0300 Subject: [PATCH] with constant --- pkg/apis/query/v0alpha1/query.go | 3 +++ pkg/registry/apis/datasource/sub_query.go | 17 +++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/pkg/apis/query/v0alpha1/query.go b/pkg/apis/query/v0alpha1/query.go index f6ad172c348..c4000874515 100644 --- a/pkg/apis/query/v0alpha1/query.go +++ b/pkg/apis/query/v0alpha1/query.go @@ -10,6 +10,9 @@ import ( "github.com/grafana/grafana/pkg/expr" ) +// Get results as raw protobuf +const PROTOBUF_CONTENT_TYPE = "application/vnd.grafana.pluginv2.QueryDataResponse" + // Generic query request with shared time across all values // Copied from: https://github.com/grafana/grafana/blob/main/pkg/api/dtos/models.go#L62 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object diff --git a/pkg/registry/apis/datasource/sub_query.go b/pkg/registry/apis/datasource/sub_query.go index cc627ecd643..4f4c85955f8 100644 --- a/pkg/registry/apis/datasource/sub_query.go +++ b/pkg/registry/apis/datasource/sub_query.go @@ -6,17 +6,16 @@ import ( "fmt" "net/http" + "google.golang.org/protobuf/proto" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apiserver/pkg/registry/rest" - "google.golang.org/protobuf/proto" - + "github.com/grafana/grafana-app-sdk/logging" "github.com/grafana/grafana-plugin-sdk-go/backend" data "github.com/grafana/grafana-plugin-sdk-go/experimental/apis/data/v0alpha1" "github.com/grafana/grafana/pkg/apimachinery/errutil" query "github.com/grafana/grafana/pkg/apis/query/v0alpha1" "github.com/grafana/grafana/pkg/services/datasources" - "github.com/grafana/grafana/pkg/web" ) @@ -116,9 +115,8 @@ func (r *subQueryREST) Connect(ctx context.Context, name string, opts runtime.Ob // Respond with raw protobuf when requested for _, accept := range req.Header.Values("Accept") { - if accept == "application/vnd.grafana.protobuf" { - conv := backend.ConvertToProtobuf{} - p, err := conv.QueryDataResponse(rsp) + if accept == query.PROTOBUF_CONTENT_TYPE { // pluginv2.QueryDataResponse + p, err := backend.ToProto().QueryDataResponse(rsp) if err != nil { responder.Error(err) return @@ -128,9 +126,12 @@ func (r *subQueryREST) Connect(ctx context.Context, name string, opts runtime.Ob responder.Error(err) return } - w.Header().Add("Content-Type", "application/vnd.grafana.protobuf") + w.Header().Add("Content-Type", query.PROTOBUF_CONTENT_TYPE) w.WriteHeader(code) - _, _ = w.Write(data) + _, err = w.Write(data) + if err != nil { + logging.FromContext(ctx).Warn("unable to write protobuf result", "err", err) + } return } }