mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #29008 from justinsb/pages_and_pages_of_hosted_zones
Automatic merge from submit-queue dnsprovider: Use route53 page functions to avoid truncated results The List<Type>Pages functions make it pretty easy to avoid result truncation; switch to using them
This commit is contained in:
commit
4d896cd3b2
@ -34,15 +34,17 @@ func (rrsets ResourceRecordSets) List() ([]dnsprovider.ResourceRecordSet, error)
|
|||||||
input := route53.ListResourceRecordSetsInput{
|
input := route53.ListResourceRecordSetsInput{
|
||||||
HostedZoneId: rrsets.zone.impl.Id,
|
HostedZoneId: rrsets.zone.impl.Id,
|
||||||
}
|
}
|
||||||
response, err := rrsets.zone.zones.interface_.service.ListResourceRecordSets(&input)
|
|
||||||
// TODO: Handle truncated responses
|
var list []dnsprovider.ResourceRecordSet
|
||||||
|
err := rrsets.zone.zones.interface_.service.ListResourceRecordSetsPages(&input, func(page *route53.ListResourceRecordSetsOutput, lastPage bool) bool {
|
||||||
|
for _, rrset := range page.ResourceRecordSets {
|
||||||
|
list = append(list, &ResourceRecordSet{rrset, &rrsets})
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
list := make([]dnsprovider.ResourceRecordSet, len(response.ResourceRecordSets))
|
|
||||||
for i, rrset := range response.ResourceRecordSets {
|
|
||||||
list[i] = &ResourceRecordSet{rrset, &rrsets}
|
|
||||||
}
|
|
||||||
return list, nil
|
return list, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,9 +27,9 @@ var _ Route53API = &Route53APIStub{}
|
|||||||
|
|
||||||
/* Route53API is the subset of the AWS Route53 API that we actually use. Add methods as required. Signatures must match exactly. */
|
/* Route53API is the subset of the AWS Route53 API that we actually use. Add methods as required. Signatures must match exactly. */
|
||||||
type Route53API interface {
|
type Route53API interface {
|
||||||
ListResourceRecordSets(*route53.ListResourceRecordSetsInput) (*route53.ListResourceRecordSetsOutput, error)
|
ListResourceRecordSetsPages(input *route53.ListResourceRecordSetsInput, fn func(p *route53.ListResourceRecordSetsOutput, lastPage bool) (shouldContinue bool)) error
|
||||||
ChangeResourceRecordSets(*route53.ChangeResourceRecordSetsInput) (*route53.ChangeResourceRecordSetsOutput, error)
|
ChangeResourceRecordSets(*route53.ChangeResourceRecordSetsInput) (*route53.ChangeResourceRecordSetsOutput, error)
|
||||||
ListHostedZones(*route53.ListHostedZonesInput) (*route53.ListHostedZonesOutput, error)
|
ListHostedZonesPages(input *route53.ListHostedZonesInput, fn func(p *route53.ListHostedZonesOutput, lastPage bool) (shouldContinue bool)) error
|
||||||
CreateHostedZone(*route53.CreateHostedZoneInput) (*route53.CreateHostedZoneOutput, error)
|
CreateHostedZone(*route53.CreateHostedZoneInput) (*route53.CreateHostedZoneOutput, error)
|
||||||
DeleteHostedZone(*route53.DeleteHostedZoneInput) (*route53.DeleteHostedZoneOutput, error)
|
DeleteHostedZone(*route53.DeleteHostedZoneInput) (*route53.DeleteHostedZoneOutput, error)
|
||||||
}
|
}
|
||||||
@ -50,7 +50,7 @@ func NewRoute53APIStub() *Route53APIStub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Route53APIStub) ListResourceRecordSets(input *route53.ListResourceRecordSetsInput) (*route53.ListResourceRecordSetsOutput, error) {
|
func (r *Route53APIStub) ListResourceRecordSetsPages(input *route53.ListResourceRecordSetsInput, fn func(p *route53.ListResourceRecordSetsOutput, lastPage bool) (shouldContinue bool)) error {
|
||||||
output := route53.ListResourceRecordSetsOutput{} // TODO: Support optional input args.
|
output := route53.ListResourceRecordSetsOutput{} // TODO: Support optional input args.
|
||||||
if len(r.recordSets) <= 0 {
|
if len(r.recordSets) <= 0 {
|
||||||
output.ResourceRecordSets = []*route53.ResourceRecordSet{}
|
output.ResourceRecordSets = []*route53.ResourceRecordSet{}
|
||||||
@ -63,7 +63,9 @@ func (r *Route53APIStub) ListResourceRecordSets(input *route53.ListResourceRecor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return &output, nil
|
lastPage := true
|
||||||
|
fn(&output, lastPage)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Route53APIStub) ChangeResourceRecordSets(input *route53.ChangeResourceRecordSetsInput) (*route53.ChangeResourceRecordSetsOutput, error) {
|
func (r *Route53APIStub) ChangeResourceRecordSets(input *route53.ChangeResourceRecordSetsInput) (*route53.ChangeResourceRecordSetsOutput, error) {
|
||||||
@ -93,12 +95,14 @@ func (r *Route53APIStub) ChangeResourceRecordSets(input *route53.ChangeResourceR
|
|||||||
return output, nil // TODO: We should ideally return status etc, but we dont' use that yet.
|
return output, nil // TODO: We should ideally return status etc, but we dont' use that yet.
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Route53APIStub) ListHostedZones(*route53.ListHostedZonesInput) (*route53.ListHostedZonesOutput, error) {
|
func (r *Route53APIStub) ListHostedZonesPages(input *route53.ListHostedZonesInput, fn func(p *route53.ListHostedZonesOutput, lastPage bool) (shouldContinue bool)) error {
|
||||||
output := &route53.ListHostedZonesOutput{}
|
output := &route53.ListHostedZonesOutput{}
|
||||||
for _, zone := range r.zones {
|
for _, zone := range r.zones {
|
||||||
output.HostedZones = append(output.HostedZones, zone)
|
output.HostedZones = append(output.HostedZones, zone)
|
||||||
}
|
}
|
||||||
return output, nil
|
lastPage := true
|
||||||
|
fn(output, lastPage)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Route53APIStub) CreateHostedZone(input *route53.CreateHostedZoneInput) (*route53.CreateHostedZoneOutput, error) {
|
func (r *Route53APIStub) CreateHostedZone(input *route53.CreateHostedZoneInput) (*route53.CreateHostedZoneOutput, error) {
|
||||||
|
@ -31,18 +31,18 @@ type Zones struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (zones Zones) List() ([]dnsprovider.Zone, error) {
|
func (zones Zones) List() ([]dnsprovider.Zone, error) {
|
||||||
|
var zoneList []dnsprovider.Zone
|
||||||
|
|
||||||
input := route53.ListHostedZonesInput{}
|
input := route53.ListHostedZonesInput{}
|
||||||
response, err := zones.interface_.service.ListHostedZones(&input)
|
err := zones.interface_.service.ListHostedZonesPages(&input, func(page *route53.ListHostedZonesOutput, lastPage bool) bool {
|
||||||
|
for _, zone := range page.HostedZones {
|
||||||
|
zoneList = append(zoneList, &Zone{zone, &zones})
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return []dnsprovider.Zone{}, err
|
return []dnsprovider.Zone{}, err
|
||||||
}
|
}
|
||||||
hostedZones := response.HostedZones
|
|
||||||
// TODO: Handle result truncation
|
|
||||||
// https://docs.aws.amazon.com/sdk-for-go/api/service/route53/Route53.html#ListHostedZones-instance_method
|
|
||||||
zoneList := make([]dnsprovider.Zone, len(hostedZones))
|
|
||||||
for i, zone := range hostedZones {
|
|
||||||
zoneList[i] = &Zone{zone, &zones}
|
|
||||||
}
|
|
||||||
return zoneList, nil
|
return zoneList, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user