provider/aws.go
func (p *AWSProvider) Zones() (map[string]*route53.HostedZone, error) {
	zones := make(map[string]*route53.HostedZone)

	var tagErr error
	f := func(resp *route53.ListHostedZonesOutput, lastPage bool) (shouldContinue bool) {
		for _, zone := range resp.HostedZones {
			if !p.zoneIDFilter.Match(aws.StringValue(zone.Id)) {
				continue
			}

			if !p.zoneTypeFilter.Match(zone) {
				continue
			}

			if !p.domainFilter.Match(aws.StringValue(zone.Name)) {
				continue
			}

			// Only fetch tags if a tag filter was specified
			if !p.zoneTagFilter.IsEmpty() {
				tags, err := p.tagsForZone(*zone.Id)
				if err != nil {
					tagErr = err
					return false
				}
				if !p.zoneTagFilter.Match(tags) {
					continue
				}
			}

			zones[aws.StringValue(zone.Id)] = zone
		}

		return true
	}

	err := p.client.ListHostedZonesPages(&route53.ListHostedZonesInput{}, f)
	if err != nil {
		return nil, err
	}
	if tagErr != nil {
		return nil, tagErr
	}

	for _, zone := range zones {
		log.Debugf("Considering zone: %s (domain: %s)", aws.StringValue(zone.Id), aws.StringValue(zone.Name))
	}

	return zones, nil
}
func (p *AWSProvider) Zones() (map[string]*route53.HostedZone, error) {
	zones := make(map[string]*route53.HostedZone)

	var tagErr error
	f := func(resp *route53.ListHostedZonesOutput, lastPage bool) (shouldContinue bool) {
		for _, zone := range resp.HostedZones {
			if !p.zoneIDFilter.Match(aws.StringValue(zone.Id)) {
				continue
			}

			if !p.zoneTypeFilter.Match(zone) {
				continue
			}

			if !p.domainFilter.Match(aws.StringValue(zone.Name)) {
				continue
			}

			// Only fetch tags if a tag filter was specified
			if !p.zoneTagFilter.IsEmpty() {
				tags, err := p.tagsForZone(*zone.Id)
				if err != nil {
					tagErr = err
					return false
				}
				if !p.zoneTagFilter.Match(tags) {
					continue
				}
			}

			zones[aws.StringValue(zone.Id)] = zone
		}

		return true
	}

	err := p.client.ListHostedZonesPages(&route53.ListHostedZonesInput{}, f)
	if err != nil {
		return nil, err
	}
	if tagErr != nil {
		return nil, tagErr
	}

	for _, zone := range zones {
		log.Debugf("Considering zone: %s (domain: %s)", aws.StringValue(zone.Id), aws.StringValue(zone.Name))
	}

	return zones, nil
}
func ( p * AWSProvider ) Zones ( ) ( map [ string ] * route53 . HostedZone , error ) { zones := make ( map [ string ] * route53 . HostedZone ) var tagErr error f := func ( resp * route53 . ListHostedZonesOutput , lastPage bool ) ( shouldContinue bool ) { for _ , zone := range resp . HostedZones { if ! p . zoneIDFilter . Match ( aws . StringValue ( zone . Id ) ) { continue } if ! p . zoneTypeFilter . Match ( zone ) { continue } if ! p . domainFilter . Match ( aws . StringValue ( zone . Name ) ) { continue } // Only fetch tags if a tag filter was specified if ! p . zoneTagFilter . IsEmpty ( ) { tags , err := p . tagsForZone ( * zone . Id ) if err != nil { tagErr = err return false } if ! p . zoneTagFilter . Match ( tags ) { continue } } zones [ aws . StringValue ( zone . Id ) ] = zone } return true } err := p . client . ListHostedZonesPages ( & route53 . ListHostedZonesInput { } , f ) if err != nil { return nil , err } if tagErr != nil { return nil , tagErr } for _ , zone := range zones { log . Debugf ( " " , aws . StringValue ( zone . Id ) , aws . StringValue ( zone . Name ) ) } return zones , nil }
// Zones returns the list of hosted zones.
Zones returns the list of hosted zones .