mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2026-05-05 14:46:10 +02:00
Merge pull request #4886 from ninjaprox/fix-aws-soft-error
fix(aws): add soft error
This commit is contained in:
commit
ea1978629d
@ -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 {
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user