Merge pull request #4886 from ninjaprox/fix-aws-soft-error

fix(aws): add soft error
This commit is contained in:
Kubernetes Prow Robot 2024-11-20 17:51:01 +00:00 committed by GitHub
commit ea1978629d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 29 additions and 1 deletions

View File

@ -447,7 +447,7 @@ func (p *AWSProvider) records(ctx context.Context, zones map[string]*profiledZon
for paginator.HasMorePages() {
resp, err := paginator.NextPage(ctx)
if err != nil {
return nil, fmt.Errorf("failed to list resource records sets for zone %s using aws profile %q: %w", *z.zone.Id, z.profile, err)
return nil, provider.NewSoftError(fmt.Errorf("failed to list resource records sets for zone %s using aws profile %q: %w", *z.zone.Id, z.profile, err))
}
for _, r := range resp.ResourceRecordSets {

View File

@ -81,6 +81,10 @@ func NewRoute53APIStub(t *testing.T) *Route53APIStub {
}
func (r *Route53APIStub) ListResourceRecordSets(ctx context.Context, input *route53.ListResourceRecordSetsInput, optFns ...func(options *route53.Options)) (*route53.ListResourceRecordSetsOutput, error) {
if r.m.isMocked("ListResourceRecordSets", input) {
return r.m.ListResourceRecordSets(ctx, input, optFns...)
}
output := &route53.ListResourceRecordSetsOutput{} // TODO: Support optional input args.
require.NotNil(r.t, input.MaxItems)
assert.EqualValues(r.t, route53PageSize, *input.MaxItems)
@ -254,6 +258,14 @@ type dynamicMock struct {
mock.Mock
}
func (m *dynamicMock) ListResourceRecordSets(ctx context.Context, input *route53.ListResourceRecordSetsInput, optFns ...func(options *route53.Options)) (*route53.ListResourceRecordSetsOutput, error) {
args := m.Called(input)
if args.Get(0) != nil {
return args.Get(0).(*route53.ListResourceRecordSetsOutput), args.Error(1)
}
return nil, args.Error(1)
}
func (m *dynamicMock) ChangeResourceRecordSets(input *route53.ChangeResourceRecordSetsInput) (*route53.ChangeResourceRecordSetsOutput, error) {
args := m.Called(input)
if args.Get(0) != nil {
@ -557,6 +569,22 @@ func TestAWSRecords(t *testing.T) {
})
}
func TestAWSRecordsSoftError(t *testing.T) {
pvd, subClient := newAWSProvider(t, endpoint.NewDomainFilter([]string{"ext-dns-test-2.teapot.zalan.do."}), provider.NewZoneIDFilter([]string{}), provider.NewZoneTypeFilter(""), false, false, []route53types.ResourceRecordSet{
{
Name: aws.String("list-test.zone-1.ext-dns-test-2.teapot.zalan.do."),
Type: route53types.RRTypeA,
TTL: aws.Int64(recordTTL),
ResourceRecords: []route53types.ResourceRecord{{Value: aws.String("1.2.3.4")}},
},
})
subClient.MockMethod("ListResourceRecordSets", mock.Anything).Return(nil, fmt.Errorf("Mock route53 failure"))
_, err := pvd.Records(context.Background())
require.Error(t, err)
require.ErrorIs(t, err, provider.SoftError)
}
func TestAWSAdjustEndpoints(t *testing.T) {
provider, _ := newAWSProvider(t, endpoint.NewDomainFilter([]string{"ext-dns-test-2.teapot.zalan.do."}), provider.NewZoneIDFilter([]string{}), provider.NewZoneTypeFilter(""), defaultEvaluateTargetHealth, false, nil)