add domain filter for vinyl

This commit is contained in:
Dave Grizzanti 2019-07-01 15:34:26 -04:00
parent de366f619f
commit 656ec36532
3 changed files with 23 additions and 12 deletions

View File

@ -133,7 +133,7 @@ func main() {
case "azure":
p, err = provider.NewAzureProvider(cfg.AzureConfigFile, domainFilter, zoneIDFilter, cfg.AzureResourceGroup, cfg.DryRun)
case "vinyldns":
p, err = provider.NewVinylDNSProvider(zoneIDFilter, cfg.DryRun)
p, err = provider.NewVinylDNSProvider(domainFilter, zoneIDFilter, cfg.DryRun)
case "cloudflare":
p, err = provider.NewCloudFlareProvider(domainFilter, zoneIDFilter, cfg.CloudflareZonesPerPage, cfg.CloudflareProxied, cfg.DryRun)
case "rcodezero":

View File

@ -46,9 +46,10 @@ type vinyldnsZoneInterface interface {
}
type vinyldnsProvider struct {
client vinyldnsZoneInterface
zoneFilter ZoneIDFilter
dryRun bool
client vinyldnsZoneInterface
zoneFilter ZoneIDFilter
domainFilter DomainFilter
dryRun bool
}
type vinyldnsChange struct {
@ -57,7 +58,7 @@ type vinyldnsChange struct {
}
// NewVinylDNSProvider provides support for VinylDNS records
func NewVinylDNSProvider(zoneFilter ZoneIDFilter, dryRun bool) (Provider, error) {
func NewVinylDNSProvider(domainFilter DomainFilter, zoneFilter ZoneIDFilter, dryRun bool) (Provider, error) {
_, ok := os.LookupEnv("VINYLDNS_ACCESS_KEY")
if !ok {
return nil, fmt.Errorf("no vinyldns access key found")
@ -66,9 +67,10 @@ func NewVinylDNSProvider(zoneFilter ZoneIDFilter, dryRun bool) (Provider, error)
client := vinyldns.NewClientFromEnv()
return &vinyldnsProvider{
client: client,
dryRun: dryRun,
zoneFilter: zoneFilter,
client: client,
dryRun: dryRun,
zoneFilter: zoneFilter,
domainFilter: domainFilter,
}, nil
}
@ -83,7 +85,11 @@ func (p *vinyldnsProvider) Records() (endpoints []*endpoint.Endpoint, _ error) {
continue
}
log.Infof(fmt.Sprintf("Zone: [%s]", zone.Name))
if !p.domainFilter.Match(zone.Name) {
continue
}
log.Infof(fmt.Sprintf("Zone: [%s:%s]", zone.ID, zone.Name))
records, err := p.client.RecordSets(zone.ID)
if err != nil {
return nil, err

View File

@ -89,11 +89,16 @@ func TestVinylDNSServices(t *testing.T) {
}
func testVinylDNSProviderRecords(t *testing.T) {
mockVinylDNSProvider.zoneFilter = NewZoneIDFilter([]string{"0"})
mockVinylDNSProvider.domainFilter = NewDomainFilter([]string{"example.com"})
result, err := mockVinylDNSProvider.Records()
assert.Nil(t, err)
assert.Equal(t, len(vinylDNSRecords), len(result))
mockVinylDNSProvider.zoneFilter = NewZoneIDFilter([]string{"0"})
result, err = mockVinylDNSProvider.Records()
assert.Nil(t, err)
assert.Equal(t, len(vinylDNSRecords), len(result))
mockVinylDNSProvider.zoneFilter = NewZoneIDFilter([]string{"1"})
result, err = mockVinylDNSProvider.Records()
assert.Nil(t, err)
@ -126,11 +131,11 @@ func testVinylDNSSuitableZone(t *testing.T) {
func TestNewVinylDNSProvider(t *testing.T) {
os.Setenv("VINYLDNS_ACCESS_KEY", "xxxxxxxxxxxxxxxxxxxxxxxxxx")
_, err := NewVinylDNSProvider(NewZoneIDFilter([]string{"example.com"}), true)
_, err := NewVinylDNSProvider(NewDomainFilter([]string{"example.com"}), NewZoneIDFilter([]string{"0"}), true)
assert.Nil(t, err)
os.Unsetenv("VINYLDNS_ACCESS_KEY")
_, err = NewVinylDNSProvider(NewZoneIDFilter([]string{"example.com"}), true)
_, err = NewVinylDNSProvider(NewDomainFilter([]string{"example.com"}), NewZoneIDFilter([]string{"0"}), true)
assert.NotNil(t, err)
if err == nil {
t.Errorf("Expected to fail new provider on empty token")