mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Azure Monitor: Adapt empty Logs response (#56378)
This commit is contained in:
committed by
GitHub
parent
7fd613ec0d
commit
8594e648e8
@@ -187,10 +187,11 @@ func (e *AzureLogAnalyticsDatasource) executeQuery(ctx context.Context, query *A
|
||||
return dataResponseErrorWithExecuted(err)
|
||||
}
|
||||
|
||||
frame, err := ResponseTableToFrame(t, logResponse)
|
||||
frame, err := ResponseTableToFrame(t, query.RefID, query.Params.Get("query"))
|
||||
if err != nil {
|
||||
return dataResponseErrorWithExecuted(err)
|
||||
}
|
||||
appendErrorNotice(frame, logResponse.Error)
|
||||
|
||||
model, err := simplejson.NewJson(query.JSON)
|
||||
if err != nil {
|
||||
@@ -222,6 +223,12 @@ func (e *AzureLogAnalyticsDatasource) executeQuery(ctx context.Context, query *A
|
||||
return dataResponse
|
||||
}
|
||||
|
||||
func appendErrorNotice(frame *data.Frame, err *AzureLogAnalyticsAPIError) {
|
||||
if err != nil {
|
||||
frame.AppendNotices(apiErrorToNotice(err))
|
||||
}
|
||||
}
|
||||
|
||||
func (e *AzureLogAnalyticsDatasource) createRequest(ctx context.Context, dsInfo types.DatasourceInfo, url string) (*http.Request, error) {
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
|
||||
if err != nil {
|
||||
|
||||
@@ -43,7 +43,16 @@ func apiErrorToNotice(err *AzureLogAnalyticsAPIError) data.Notice {
|
||||
}
|
||||
|
||||
// ResponseTableToFrame converts an AzureResponseTable to a data.Frame.
|
||||
func ResponseTableToFrame(table *types.AzureResponseTable, res AzureLogAnalyticsResponse) (*data.Frame, error) {
|
||||
func ResponseTableToFrame(table *types.AzureResponseTable, refID string, executedQuery string) (*data.Frame, error) {
|
||||
if len(table.Rows) == 0 {
|
||||
return &data.Frame{
|
||||
RefID: refID,
|
||||
Meta: &data.FrameMeta{
|
||||
ExecutedQueryString: executedQuery,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
converterFrame, err := converterFrameForTable(table)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -57,10 +66,6 @@ func ResponseTableToFrame(table *types.AzureResponseTable, res AzureLogAnalytics
|
||||
}
|
||||
}
|
||||
|
||||
if res.Error != nil {
|
||||
converterFrame.Frame.AppendNotices(apiErrorToNotice(res.Error))
|
||||
}
|
||||
|
||||
return converterFrame.Frame, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -169,12 +169,25 @@ func TestLogTableToFrame(t *testing.T) {
|
||||
return frame
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "empty data response",
|
||||
testFile: "loganalytics/11-log-analytics-response-empty.json",
|
||||
expectedFrame: func() *data.Frame {
|
||||
return &data.Frame{
|
||||
RefID: "A",
|
||||
Meta: &data.FrameMeta{
|
||||
ExecutedQueryString: "query",
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
res := loadLogAnalyticsTestFileWithNumber(t, tt.testFile)
|
||||
frame, err := ResponseTableToFrame(&res.Tables[0], res)
|
||||
frame, err := ResponseTableToFrame(&res.Tables[0], "A", "query")
|
||||
appendErrorNotice(frame, res.Error)
|
||||
require.NoError(t, err)
|
||||
|
||||
if diff := cmp.Diff(tt.expectedFrame(), frame, data.FrameTestCompareOptions()...); diff != "" {
|
||||
|
||||
@@ -188,7 +188,7 @@ func (e *AzureResourceGraphDatasource) executeQuery(ctx context.Context, query *
|
||||
return dataResponseErrorWithExecuted(err)
|
||||
}
|
||||
|
||||
frame, err := loganalytics.ResponseTableToFrame(&argResponse.Data, loganalytics.AzureLogAnalyticsResponse{})
|
||||
frame, err := loganalytics.ResponseTableToFrame(&argResponse.Data, query.RefID, query.InterpolatedQuery)
|
||||
if err != nil {
|
||||
return dataResponseErrorWithExecuted(err)
|
||||
}
|
||||
|
||||
19
pkg/tsdb/azuremonitor/testdata/loganalytics/11-log-analytics-response-empty.json
vendored
Normal file
19
pkg/tsdb/azuremonitor/testdata/loganalytics/11-log-analytics-response-empty.json
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"tables": [
|
||||
{
|
||||
"name": "PrimaryResult",
|
||||
"columns": [
|
||||
{
|
||||
"name": "OperationName",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "Level",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"rows": []
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user