Cloudwatch: Revert aws sdk go v2 (#103644)
* Revert "CloudWatch: Import new grafana-aws-sdk with PDC fix (#103249)" This reverts commitf2b5b4e0c0. * Revert "CloudWatch: Migrate to aws-sdk-go-v2 (#103106)" This reverts commita65cc0df93. * make update-workspace
This commit is contained in:
@@ -6,11 +6,11 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
"github.com/aws/aws-sdk-go-v2/service/cloudwatch"
|
||||
"github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs"
|
||||
cloudwatchlogstypes "github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs/types"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
awsclient "github.com/aws/aws-sdk-go/aws/client"
|
||||
"github.com/aws/aws-sdk-go/aws/session"
|
||||
"github.com/aws/aws-sdk-go/service/cloudwatch"
|
||||
"github.com/aws/aws-sdk-go/service/cloudwatchlogs"
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/grafana/grafana-aws-sdk/pkg/awsds"
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
@@ -114,21 +114,21 @@ func TestNewInstanceSettings(t *testing.T) {
|
||||
}
|
||||
|
||||
func Test_CheckHealth(t *testing.T) {
|
||||
origNewCWClient := NewCWClient
|
||||
origNewMetricsAPI := NewMetricsAPI
|
||||
origNewCWLogsClient := NewCWLogsClient
|
||||
origNewLogsAPI := NewLogsAPI
|
||||
|
||||
t.Cleanup(func() {
|
||||
NewCWClient = origNewCWClient
|
||||
NewMetricsAPI = origNewMetricsAPI
|
||||
NewCWLogsClient = origNewCWLogsClient
|
||||
NewLogsAPI = origNewLogsAPI
|
||||
})
|
||||
|
||||
var client fakeCheckHealthClient
|
||||
NewCWClient = func(aws.Config) models.CWClient {
|
||||
NewMetricsAPI = func(sess *session.Session) models.CloudWatchMetricsAPIProvider {
|
||||
return client
|
||||
}
|
||||
NewLogsAPI = func(aws.Config) models.CloudWatchLogsAPIProvider {
|
||||
NewLogsAPI = func(sess *session.Session) models.CloudWatchLogsAPIProvider {
|
||||
return client
|
||||
}
|
||||
im := defaultTestInstanceManager()
|
||||
@@ -138,7 +138,8 @@ func Test_CheckHealth(t *testing.T) {
|
||||
executor := newExecutor(im, log.NewNullLogger())
|
||||
|
||||
resp, err := executor.CheckHealth(context.Background(), &backend.CheckHealthRequest{
|
||||
PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}}})
|
||||
PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}},
|
||||
})
|
||||
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, &backend.CheckHealthResult{
|
||||
@@ -149,7 +150,7 @@ func Test_CheckHealth(t *testing.T) {
|
||||
|
||||
t.Run("successfully queries metrics, fails during logs query", func(t *testing.T) {
|
||||
client = fakeCheckHealthClient{
|
||||
describeLogGroupsFunction: func(context.Context, *cloudwatchlogs.DescribeLogGroupsInput, ...func(*cloudwatchlogs.Options)) (*cloudwatchlogs.DescribeLogGroupsOutput, error) {
|
||||
describeLogGroups: func(input *cloudwatchlogs.DescribeLogGroupsInput) (*cloudwatchlogs.DescribeLogGroupsOutput, error) {
|
||||
return nil, fmt.Errorf("some logs query error")
|
||||
}}
|
||||
|
||||
@@ -168,8 +169,8 @@ func Test_CheckHealth(t *testing.T) {
|
||||
|
||||
t.Run("successfully queries logs, fails during metrics query", func(t *testing.T) {
|
||||
client = fakeCheckHealthClient{
|
||||
listMetricsFunction: func(context.Context, *cloudwatch.ListMetricsInput, ...func(*cloudwatch.Options)) (*cloudwatch.ListMetricsOutput, error) {
|
||||
return nil, fmt.Errorf("some list metrics error")
|
||||
listMetricsPages: func(input *cloudwatch.ListMetricsInput, fn func(*cloudwatch.ListMetricsOutput, bool) bool) error {
|
||||
return fmt.Errorf("some list metrics error")
|
||||
}}
|
||||
|
||||
executor := newExecutor(im, log.NewNullLogger())
|
||||
@@ -187,7 +188,14 @@ func Test_CheckHealth(t *testing.T) {
|
||||
|
||||
t.Run("fail to get clients", func(t *testing.T) {
|
||||
client = fakeCheckHealthClient{}
|
||||
im := testInstanceManagerWithSettings(models.CloudWatchSettings{AWSDatasourceSettings: awsds.AWSDatasourceSettings{Region: "us-east-1"}}, true)
|
||||
im := datasource.NewInstanceManager(func(ctx context.Context, s backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
|
||||
return DataSource{
|
||||
Settings: models.CloudWatchSettings{AWSDatasourceSettings: awsds.AWSDatasourceSettings{Region: "us-east-1"}},
|
||||
sessions: &fakeSessionCache{getSessionWithAuthSettings: func(c awsds.GetSessionConfig, a awsds.AuthSettings) (*session.Session, error) {
|
||||
return nil, fmt.Errorf("some sessions error")
|
||||
}},
|
||||
}, nil
|
||||
})
|
||||
|
||||
executor := newExecutor(im, log.NewNullLogger())
|
||||
|
||||
@@ -198,14 +206,12 @@ func Test_CheckHealth(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, &backend.CheckHealthResult{
|
||||
Status: backend.HealthStatusError,
|
||||
Message: "1. CloudWatch metrics query failed: LoadDefaultConfig failed\n2. CloudWatch logs query failed: LoadDefaultConfig failed",
|
||||
Message: "1. CloudWatch metrics query failed: some sessions error\n2. CloudWatch logs query failed: some sessions error",
|
||||
}, resp)
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetAWSConfig_passes_authSettings(t *testing.T) {
|
||||
// TODO: update this for the new auth structure, or remove it
|
||||
t.Skip()
|
||||
func TestNewSession_passes_authSettings(t *testing.T) {
|
||||
ctxDuration := 15 * time.Minute
|
||||
expectedSettings := awsds.AuthSettings{
|
||||
AllowedAuthProviders: []string{"foo", "bar", "baz"},
|
||||
@@ -215,7 +221,7 @@ func TestGetAWSConfig_passes_authSettings(t *testing.T) {
|
||||
ListMetricsPageLimit: 50,
|
||||
SecureSocksDSProxyEnabled: true,
|
||||
}
|
||||
im := datasource.NewInstanceManager(func(ctx context.Context, s backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
|
||||
im := datasource.NewInstanceManager((func(ctx context.Context, s backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
|
||||
return DataSource{
|
||||
Settings: models.CloudWatchSettings{
|
||||
AWSDatasourceSettings: awsds.AWSDatasourceSettings{
|
||||
@@ -223,33 +229,39 @@ func TestGetAWSConfig_passes_authSettings(t *testing.T) {
|
||||
},
|
||||
GrafanaSettings: expectedSettings,
|
||||
},
|
||||
sessions: &fakeSessionCache{getSessionWithAuthSettings: func(c awsds.GetSessionConfig, a awsds.AuthSettings) (*session.Session, error) {
|
||||
assert.Equal(t, expectedSettings, a)
|
||||
return &session.Session{
|
||||
Config: &aws.Config{},
|
||||
}, nil
|
||||
}},
|
||||
}, nil
|
||||
})
|
||||
}))
|
||||
executor := newExecutor(im, log.NewNullLogger())
|
||||
|
||||
_, err := executor.getAWSConfig(context.Background(),
|
||||
_, err := executor.newSessionFromContext(context.Background(),
|
||||
backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}}, "us-east-1")
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestQuery_ResourceRequest_DescribeLogGroups_with_CrossAccountQuerying(t *testing.T) {
|
||||
sender := &mockedCallResourceResponseSenderForOauth{}
|
||||
origNewMetricsAPI := NewCWClient
|
||||
origNewMetricsAPI := NewMetricsAPI
|
||||
origNewOAMAPI := NewOAMAPI
|
||||
origNewLogsAPI := NewLogsAPI
|
||||
origNewEC2API := NewEC2API
|
||||
NewCWClient = func(aws.Config) models.CWClient { return nil }
|
||||
NewOAMAPI = func(aws.Config) models.OAMAPIProvider { return nil }
|
||||
NewEC2API = func(aws.Config) models.EC2APIProvider { return nil }
|
||||
origNewEC2Client := NewEC2Client
|
||||
NewMetricsAPI = func(sess *session.Session) models.CloudWatchMetricsAPIProvider { return nil }
|
||||
NewOAMAPI = func(sess *session.Session) models.OAMAPIProvider { return nil }
|
||||
NewEC2Client = func(provider awsclient.ConfigProvider) models.EC2APIProvider { return nil }
|
||||
t.Cleanup(func() {
|
||||
NewOAMAPI = origNewOAMAPI
|
||||
NewCWClient = origNewMetricsAPI
|
||||
NewMetricsAPI = origNewMetricsAPI
|
||||
NewLogsAPI = origNewLogsAPI
|
||||
NewEC2API = origNewEC2API
|
||||
NewEC2Client = origNewEC2Client
|
||||
})
|
||||
|
||||
var logsApi mocks.LogsAPI
|
||||
NewLogsAPI = func(aws.Config) models.CloudWatchLogsAPIProvider {
|
||||
NewLogsAPI = func(sess *session.Session) models.CloudWatchLogsAPIProvider {
|
||||
return &logsApi
|
||||
}
|
||||
|
||||
@@ -257,8 +269,8 @@ func TestQuery_ResourceRequest_DescribeLogGroups_with_CrossAccountQuerying(t *te
|
||||
|
||||
t.Run("maps log group api response to resource response of log-groups", func(t *testing.T) {
|
||||
logsApi = mocks.LogsAPI{}
|
||||
logsApi.On("DescribeLogGroups", mock.Anything).Return(&cloudwatchlogs.DescribeLogGroupsOutput{
|
||||
LogGroups: []cloudwatchlogstypes.LogGroup{
|
||||
logsApi.On("DescribeLogGroupsWithContext", mock.Anything).Return(&cloudwatchlogs.DescribeLogGroupsOutput{
|
||||
LogGroups: []*cloudwatchlogs.LogGroup{
|
||||
{Arn: aws.String("arn:aws:logs:us-east-1:111:log-group:group_a"), LogGroupName: aws.String("group_a")},
|
||||
},
|
||||
}, nil)
|
||||
@@ -285,11 +297,11 @@ func TestQuery_ResourceRequest_DescribeLogGroups_with_CrossAccountQuerying(t *te
|
||||
}
|
||||
]`, string(sender.Response.Body))
|
||||
|
||||
logsApi.AssertCalled(t, "DescribeLogGroups",
|
||||
logsApi.AssertCalled(t, "DescribeLogGroupsWithContext",
|
||||
&cloudwatchlogs.DescribeLogGroupsInput{
|
||||
AccountIdentifiers: []string{"some-account-id"},
|
||||
AccountIdentifiers: []*string{utils.Pointer("some-account-id")},
|
||||
IncludeLinkedAccounts: utils.Pointer(true),
|
||||
Limit: aws.Int32(50),
|
||||
Limit: utils.Pointer(int64(50)),
|
||||
LogGroupNamePrefix: utils.Pointer("some-pattern"),
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user