diff --git a/pkg/registry/apis/query/query.go b/pkg/registry/apis/query/query.go index e5bd2a0d4ba..dcdcb00d136 100644 --- a/pkg/registry/apis/query/query.go +++ b/pkg/registry/apis/query/query.go @@ -122,15 +122,22 @@ func (r *queryREST) Connect(connectCtx context.Context, name string, _ runtime.O // Parses the request and splits it into multiple sub queries (if necessary) req, err := b.parser.parseRequest(ctx, raw) if err != nil { + reason := metav1.StatusReasonInvalid + message := err.Error() + if errors.Is(err, datasources.ErrDataSourceNotFound) { + reason = metav1.StatusReasonNotFound // TODO, can we wrap the error somehow? - err = &errorsK8s.StatusError{ErrStatus: metav1.Status{ - Status: metav1.StatusFailure, - Code: http.StatusBadRequest, // the URL is found, but includes bad requests - Reason: metav1.StatusReasonNotFound, - Message: "datasource not found", - }} + message = "datasource not found" } + + err = &errorsK8s.StatusError{ErrStatus: metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusBadRequest, + Reason: reason, + Message: message, + }} + responder.Error(err) return } diff --git a/pkg/tests/apis/query/query_test.go b/pkg/tests/apis/query/query_test.go index 02e63b6ca02..515c2910f15 100644 --- a/pkg/tests/apis/query/query_test.go +++ b/pkg/tests/apis/query/query_test.go @@ -143,9 +143,8 @@ func TestIntegrationSimpleQuery(t *testing.T) { "apiVersion": "v1", "metadata": {}, "status": "Failure", - "message": "did not execute expression [Y] due to a failure to of the dependent expression or query [X]", - "reason": "BadRequest", - "details": { "uid": "sse.dependencyError" }, + "message": "[sse.dependencyError] did not execute expression [Y] due to a failure to of the dependent expression or query [X]", + "reason": "Invalid", "code": 400 }`, string(body)) // require.JSONEq(t, `{