From 5d740dce6a8c0e34f3a812d76b30378475bff95f Mon Sep 17 00:00:00 2001 From: Justin Santa Barbara Date: Mon, 16 Jan 2017 10:16:24 -0500 Subject: [PATCH] dnsprovider: Add IsEmpty method When batching changes, it is often handy to know whether a changeset IsEmpty, and thus does not need to be Apply-ed. --- federation/pkg/dnsprovider/dns.go | 4 +++- .../pkg/dnsprovider/providers/aws/route53/rrchangeset.go | 4 ++++ federation/pkg/dnsprovider/providers/coredns/rrchangeset.go | 4 ++++ .../pkg/dnsprovider/providers/google/clouddns/rrchangeset.go | 4 ++++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/federation/pkg/dnsprovider/dns.go b/federation/pkg/dnsprovider/dns.go index 6676c326918..39f322657f7 100644 --- a/federation/pkg/dnsprovider/dns.go +++ b/federation/pkg/dnsprovider/dns.go @@ -45,7 +45,7 @@ type Zone interface { Name() string // ID returns the unique provider identifier for the zone ID() string - // ResourceRecordsets returns the provider's ResourceRecordSets interface, or false if not supported. + // ResourceRecordSets returns the provider's ResourceRecordSets interface, or false if not supported. ResourceRecordSets() (ResourceRecordSets, bool) } @@ -70,6 +70,8 @@ type ResourceRecordChangeset interface { Remove(ResourceRecordSet) ResourceRecordChangeset // Apply applies the accumulated operations to the Zone. Apply() error + // IsEmpty returns true if there are no accumulated operations. + IsEmpty() bool } type ResourceRecordSet interface { diff --git a/federation/pkg/dnsprovider/providers/aws/route53/rrchangeset.go b/federation/pkg/dnsprovider/providers/aws/route53/rrchangeset.go index 2ec0c9e0317..5acfd33939e 100644 --- a/federation/pkg/dnsprovider/providers/aws/route53/rrchangeset.go +++ b/federation/pkg/dnsprovider/providers/aws/route53/rrchangeset.go @@ -99,3 +99,7 @@ func (c *ResourceRecordChangeset) Apply() error { } return nil } + +func (c *ResourceRecordChangeset) IsEmpty() bool { + return len(c.removals) == 0 && len(c.additions) == 0 +} diff --git a/federation/pkg/dnsprovider/providers/coredns/rrchangeset.go b/federation/pkg/dnsprovider/providers/coredns/rrchangeset.go index 8820ab463f6..e056339fa9d 100644 --- a/federation/pkg/dnsprovider/providers/coredns/rrchangeset.go +++ b/federation/pkg/dnsprovider/providers/coredns/rrchangeset.go @@ -58,6 +58,10 @@ func (c *ResourceRecordChangeset) Remove(rrset dnsprovider.ResourceRecordSet) dn return c } +func (c *ResourceRecordChangeset) IsEmpty() bool { + return len(c.changeset) == 0 +} + func (c *ResourceRecordChangeset) Apply() error { ctx := context.Background() etcdPathPrefix := c.zone.zones.intf.etcdPathPrefix diff --git a/federation/pkg/dnsprovider/providers/google/clouddns/rrchangeset.go b/federation/pkg/dnsprovider/providers/google/clouddns/rrchangeset.go index f38f19dd217..d30df2f5f51 100644 --- a/federation/pkg/dnsprovider/providers/google/clouddns/rrchangeset.go +++ b/federation/pkg/dnsprovider/providers/google/clouddns/rrchangeset.go @@ -72,3 +72,7 @@ func (c *ResourceRecordChangeset) Apply() error { return nil } + +func (c *ResourceRecordChangeset) IsEmpty() bool { + return len(c.additions) == 0 && len(c.removals) == 0 +}