k8s/query+ds: catch query errors, fix datasourceProvider and expose prometheus (#85071)
This commit is contained in:
@@ -119,7 +119,7 @@ func (b *QueryAPIBuilder) handleQuerySingleDatasource(ctx context.Context, req d
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, rsp, err := client.QueryData(ctx, *req.Request)
|
||||
code, rsp, err := client.QueryData(ctx, *req.Request)
|
||||
if err == nil && rsp != nil {
|
||||
for _, q := range req.Request.Queries {
|
||||
if q.ResultAssertions != nil {
|
||||
@@ -135,6 +135,17 @@ func (b *QueryAPIBuilder) handleQuerySingleDatasource(ctx context.Context, req d
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create a response object with the error when missing (happens for client errors like 404)
|
||||
if rsp == nil && err != nil {
|
||||
rsp = &backend.QueryDataResponse{Responses: make(backend.Responses)}
|
||||
for _, q := range req.Request.Queries {
|
||||
rsp.Responses[q.RefID] = backend.DataResponse{
|
||||
Status: backend.Status(code),
|
||||
Error: err,
|
||||
}
|
||||
}
|
||||
}
|
||||
return rsp, err
|
||||
}
|
||||
|
||||
@@ -229,6 +240,9 @@ func (b *QueryAPIBuilder) handleExpressions(ctx context.Context, req parsedReque
|
||||
if qdr == nil {
|
||||
qdr = &backend.QueryDataResponse{}
|
||||
}
|
||||
if qdr.Responses == nil {
|
||||
qdr.Responses = make(backend.Responses) // avoid NPE for lookup
|
||||
}
|
||||
now := start // <<< this should come from the original query parser
|
||||
vars := make(mathexp.Vars)
|
||||
for _, expression := range req.Expressions {
|
||||
|
||||
Reference in New Issue
Block a user