Azure Monitor: Adapt empty Logs response (#56378)

This commit is contained in:
Andres Martinez Gotor
2022-10-05 15:29:34 +02:00
committed by GitHub
parent 7fd613ec0d
commit 8594e648e8
5 changed files with 52 additions and 8 deletions

View File

@@ -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 {

View File

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

View File

@@ -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 != "" {

View File

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

View File

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