Azure Monitor: Adapt empty Logs response (#56378)

pull/56399/head
Andres Martinez Gotor 3 years ago committed by GitHub
parent 7fd613ec0d
commit 8594e648e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      pkg/tsdb/azuremonitor/loganalytics/azure-log-analytics-datasource.go
  2. 15
      pkg/tsdb/azuremonitor/loganalytics/azure-response-table-frame.go
  3. 15
      pkg/tsdb/azuremonitor/loganalytics/azure-response-table-frame_test.go
  4. 2
      pkg/tsdb/azuremonitor/resourcegraph/azure-resource-graph-datasource.go
  5. 19
      pkg/tsdb/azuremonitor/testdata/loganalytics/11-log-analytics-response-empty.json

@ -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)
}

@ -0,0 +1,19 @@
{
"tables": [
{
"name": "PrimaryResult",
"columns": [
{
"name": "OperationName",
"type": "string"
},
{
"name": "Level",
"type": "string"
}
],
"rows": []
}
]
}
Loading…
Cancel
Save