mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
CloudWatch: Use context in aws GetLogGroupFieldsWithContext (#77174)
This commit is contained in:
parent
468d000979
commit
abebcf4385
@ -221,7 +221,7 @@ func Test_CloudWatch_CallResource_Integration_Test(t *testing.T) {
|
||||
|
||||
t.Run("Should handle log group fields request", func(t *testing.T) {
|
||||
logApi = mocks.LogsAPI{}
|
||||
logApi.On("GetLogGroupFields", mock.Anything).Return(&cloudwatchlogs.GetLogGroupFieldsOutput{
|
||||
logApi.On("GetLogGroupFieldsWithContext", mock.Anything).Return(&cloudwatchlogs.GetLogGroupFieldsOutput{
|
||||
LogGroupFields: []*cloudwatchlogs.LogGroupField{
|
||||
{
|
||||
Name: aws.String("field1"),
|
||||
|
@ -1,6 +1,8 @@
|
||||
package mocks
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/aws/request"
|
||||
"github.com/aws/aws-sdk-go/service/cloudwatchlogs"
|
||||
@ -19,7 +21,7 @@ func (l *LogsAPI) DescribeLogGroups(input *cloudwatchlogs.DescribeLogGroupsInput
|
||||
return args.Get(0).(*cloudwatchlogs.DescribeLogGroupsOutput), args.Error(1)
|
||||
}
|
||||
|
||||
func (l *LogsAPI) GetLogGroupFields(input *cloudwatchlogs.GetLogGroupFieldsInput) (*cloudwatchlogs.GetLogGroupFieldsOutput, error) {
|
||||
func (l *LogsAPI) GetLogGroupFieldsWithContext(ctx context.Context, input *cloudwatchlogs.GetLogGroupFieldsInput, option ...request.Option) (*cloudwatchlogs.GetLogGroupFieldsOutput, error) {
|
||||
args := l.Called(input)
|
||||
|
||||
return args.Get(0).(*cloudwatchlogs.GetLogGroupFieldsOutput), args.Error(1)
|
||||
@ -35,7 +37,7 @@ func (l *LogsService) GetLogGroups(request resources.LogGroupsRequest) ([]resour
|
||||
return args.Get(0).([]resources.ResourceResponse[resources.LogGroup]), args.Error(1)
|
||||
}
|
||||
|
||||
func (l *LogsService) GetLogGroupFields(request resources.LogGroupFieldsRequest) ([]resources.ResourceResponse[resources.LogGroupField], error) {
|
||||
func (l *LogsService) GetLogGroupFieldsWithContext(ctx context.Context, request resources.LogGroupFieldsRequest, option ...request.Option) ([]resources.ResourceResponse[resources.LogGroupField], error) {
|
||||
args := l.Called(request)
|
||||
|
||||
return args.Get(0).([]resources.ResourceResponse[resources.LogGroupField]), args.Error(1)
|
||||
|
@ -38,7 +38,7 @@ type ListMetricsProvider interface {
|
||||
|
||||
type LogGroupsProvider interface {
|
||||
GetLogGroups(request resources.LogGroupsRequest) ([]resources.ResourceResponse[resources.LogGroup], error)
|
||||
GetLogGroupFields(request resources.LogGroupFieldsRequest) ([]resources.ResourceResponse[resources.LogGroupField], error)
|
||||
GetLogGroupFieldsWithContext(ctx context.Context, request resources.LogGroupFieldsRequest, option ...request.Option) ([]resources.ResourceResponse[resources.LogGroupField], error)
|
||||
}
|
||||
|
||||
type AccountsProvider interface {
|
||||
@ -61,7 +61,7 @@ type CloudWatchMetricsAPIProvider interface {
|
||||
|
||||
type CloudWatchLogsAPIProvider interface {
|
||||
DescribeLogGroups(*cloudwatchlogs.DescribeLogGroupsInput) (*cloudwatchlogs.DescribeLogGroupsOutput, error)
|
||||
GetLogGroupFields(*cloudwatchlogs.GetLogGroupFieldsInput) (*cloudwatchlogs.GetLogGroupFieldsOutput, error)
|
||||
GetLogGroupFieldsWithContext(ctx context.Context, in *cloudwatchlogs.GetLogGroupFieldsInput, option ...request.Option) (*cloudwatchlogs.GetLogGroupFieldsOutput, error)
|
||||
}
|
||||
|
||||
type OAMAPIProvider interface {
|
||||
|
@ -22,7 +22,7 @@ func LogGroupFieldsHandler(ctx context.Context, pluginCtx backend.PluginContext,
|
||||
return nil, models.NewHttpError("newLogGroupsService error", http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
logGroupFields, err := service.GetLogGroupFields(request)
|
||||
logGroupFields, err := service.GetLogGroupFieldsWithContext(ctx, request)
|
||||
if err != nil {
|
||||
return nil, models.NewHttpError("GetLogGroupFields error", http.StatusInternalServerError, err)
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ func TestLogGroupFieldsRoute(t *testing.T) {
|
||||
|
||||
t.Run("returns 500 if GetLogGroupFields method fails", func(t *testing.T) {
|
||||
mockLogsService := mocks.LogsService{}
|
||||
mockLogsService.On("GetLogGroupFields", mock.Anything).Return([]resources.ResourceResponse[resources.LogGroupField]{}, fmt.Errorf("error from api"))
|
||||
mockLogsService.On("GetLogGroupFieldsWithContext", mock.Anything).Return([]resources.ResourceResponse[resources.LogGroupField]{}, fmt.Errorf("error from api"))
|
||||
newLogGroupsService = func(_ context.Context, pluginCtx backend.PluginContext, reqCtxFactory models.RequestContextFactoryFunc, region string) (models.LogGroupsProvider, error) {
|
||||
return &mockLogsService, nil
|
||||
}
|
||||
@ -47,7 +47,7 @@ func TestLogGroupFieldsRoute(t *testing.T) {
|
||||
|
||||
t.Run("returns valid json response if everything is ok", func(t *testing.T) {
|
||||
mockLogsService := mocks.LogsService{}
|
||||
mockLogsService.On("GetLogGroupFields", mock.Anything).Return([]resources.ResourceResponse[resources.LogGroupField]{
|
||||
mockLogsService.On("GetLogGroupFieldsWithContext", mock.Anything).Return([]resources.ResourceResponse[resources.LogGroupField]{
|
||||
{
|
||||
AccountId: new(string),
|
||||
Value: resources.LogGroupField{
|
||||
|
@ -1,7 +1,10 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/aws/request"
|
||||
"github.com/aws/aws-sdk-go/service/cloudwatchlogs"
|
||||
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/models"
|
||||
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/models/resources"
|
||||
@ -60,7 +63,7 @@ func (s *LogGroupsService) GetLogGroups(req resources.LogGroupsRequest) ([]resou
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (s *LogGroupsService) GetLogGroupFields(request resources.LogGroupFieldsRequest) ([]resources.ResourceResponse[resources.LogGroupField], error) {
|
||||
func (s *LogGroupsService) GetLogGroupFieldsWithContext(ctx context.Context, request resources.LogGroupFieldsRequest, option ...request.Option) ([]resources.ResourceResponse[resources.LogGroupField], error) {
|
||||
input := &cloudwatchlogs.GetLogGroupFieldsInput{
|
||||
LogGroupName: aws.String(request.LogGroupName),
|
||||
}
|
||||
@ -70,7 +73,7 @@ func (s *LogGroupsService) GetLogGroupFields(request resources.LogGroupFieldsReq
|
||||
// input.LogGroupName = nil
|
||||
// }
|
||||
|
||||
getLogGroupFieldsOutput, err := s.logGroupsAPI.GetLogGroupFields(input)
|
||||
getLogGroupFieldsOutput, err := s.logGroupsAPI.GetLogGroupFieldsWithContext(ctx, input)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
@ -290,7 +291,7 @@ func TestGetLogGroupsCrossAccountQuerying(t *testing.T) {
|
||||
func TestGetLogGroupFields(t *testing.T) {
|
||||
t.Run("Should map log group fields response", func(t *testing.T) {
|
||||
mockLogsAPI := &mocks.LogsAPI{}
|
||||
mockLogsAPI.On("GetLogGroupFields", mock.Anything).Return(
|
||||
mockLogsAPI.On("GetLogGroupFieldsWithContext", mock.Anything).Return(
|
||||
&cloudwatchlogs.GetLogGroupFieldsOutput{
|
||||
LogGroupFields: []*cloudwatchlogs.LogGroupField{
|
||||
{
|
||||
@ -307,7 +308,7 @@ func TestGetLogGroupFields(t *testing.T) {
|
||||
}, nil)
|
||||
|
||||
service := NewLogGroupsService(mockLogsAPI, false)
|
||||
resp, err := service.GetLogGroupFields(resources.LogGroupFieldsRequest{})
|
||||
resp, err := service.GetLogGroupFieldsWithContext(context.Background(), resources.LogGroupFieldsRequest{})
|
||||
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, []resources.ResourceResponse[resources.LogGroupField]{
|
||||
@ -355,16 +356,16 @@ func TestGetLogGroupFields(t *testing.T) {
|
||||
// remove this test once the above test is uncommented
|
||||
t.Run("Should only set LogGroupName as api input in case both LogGroupName and LogGroupARN are specified", func(t *testing.T) {
|
||||
mockLogsAPI := &mocks.LogsAPI{}
|
||||
mockLogsAPI.On("GetLogGroupFields", mock.Anything).Return(
|
||||
mockLogsAPI.On("GetLogGroupFieldsWithContext", mock.Anything).Return(
|
||||
&cloudwatchlogs.GetLogGroupFieldsOutput{}, nil)
|
||||
|
||||
service := NewLogGroupsService(mockLogsAPI, false)
|
||||
resp, err := service.GetLogGroupFields(resources.LogGroupFieldsRequest{
|
||||
resp, err := service.GetLogGroupFieldsWithContext(context.Background(), resources.LogGroupFieldsRequest{
|
||||
LogGroupName: "logGroupName",
|
||||
LogGroupARN: "logGroupARN",
|
||||
})
|
||||
|
||||
mockLogsAPI.AssertCalled(t, "GetLogGroupFields", &cloudwatchlogs.GetLogGroupFieldsInput{
|
||||
mockLogsAPI.AssertCalled(t, "GetLogGroupFieldsWithContext", &cloudwatchlogs.GetLogGroupFieldsInput{
|
||||
LogGroupIdentifier: nil,
|
||||
LogGroupName: utils.Pointer("logGroupName"),
|
||||
})
|
||||
@ -374,16 +375,16 @@ func TestGetLogGroupFields(t *testing.T) {
|
||||
|
||||
t.Run("Should only set LogGroupName as api input in case only LogGroupName is specified", func(t *testing.T) {
|
||||
mockLogsAPI := &mocks.LogsAPI{}
|
||||
mockLogsAPI.On("GetLogGroupFields", mock.Anything).Return(
|
||||
mockLogsAPI.On("GetLogGroupFieldsWithContext", mock.Anything).Return(
|
||||
&cloudwatchlogs.GetLogGroupFieldsOutput{}, nil)
|
||||
|
||||
service := NewLogGroupsService(mockLogsAPI, false)
|
||||
resp, err := service.GetLogGroupFields(resources.LogGroupFieldsRequest{
|
||||
resp, err := service.GetLogGroupFieldsWithContext(context.Background(), resources.LogGroupFieldsRequest{
|
||||
LogGroupName: "logGroupName",
|
||||
LogGroupARN: "",
|
||||
})
|
||||
|
||||
mockLogsAPI.AssertCalled(t, "GetLogGroupFields", &cloudwatchlogs.GetLogGroupFieldsInput{
|
||||
mockLogsAPI.AssertCalled(t, "GetLogGroupFieldsWithContext", &cloudwatchlogs.GetLogGroupFieldsInput{
|
||||
LogGroupIdentifier: nil,
|
||||
LogGroupName: utils.Pointer("logGroupName"),
|
||||
})
|
||||
|
@ -214,7 +214,7 @@ func (c fakeCheckHealthClient) DescribeLogGroups(input *cloudwatchlogs.DescribeL
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (c fakeCheckHealthClient) GetLogGroupFields(input *cloudwatchlogs.GetLogGroupFieldsInput) (*cloudwatchlogs.GetLogGroupFieldsOutput, error) {
|
||||
func (c fakeCheckHealthClient) GetLogGroupFieldsWithContext(ctx context.Context, input *cloudwatchlogs.GetLogGroupFieldsInput, option ...request.Option) (*cloudwatchlogs.GetLogGroupFieldsOutput, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user