mirror of https://github.com/kubernetes/kops.git
Merge pull request #1397 from justinsb/fix_1391
dns-controller: don't make spurious updates in buffer
This commit is contained in:
commit
2dbda04f0d
|
@ -23,8 +23,8 @@ import (
|
|||
"k8s.io/kops/dns-controller/pkg/dns"
|
||||
"k8s.io/kops/dns-controller/pkg/watchers"
|
||||
"k8s.io/kubernetes/federation/pkg/dnsprovider"
|
||||
client "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/typed/core/v1"
|
||||
client_extensions "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/typed/extensions/v1beta1"
|
||||
client "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
|
||||
client_extensions "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/extensions/v1beta1"
|
||||
kubectl_util "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||
"os"
|
||||
|
||||
|
|
|
@ -482,19 +482,44 @@ func (s *DNSControllerScope) MarkReady() {
|
|||
}
|
||||
|
||||
func (s *DNSControllerScope) Replace(recordName string, records []Record) {
|
||||
glog.V(2).Infof("Update %s/%s: %v", s.ScopeName, recordName, records)
|
||||
|
||||
s.mutex.Lock()
|
||||
defer s.mutex.Unlock()
|
||||
|
||||
existing, exists := s.Records[recordName]
|
||||
|
||||
if len(records) == 0 {
|
||||
if !exists {
|
||||
glog.V(6).Infof("skipping spurious removal of record %s/%s", s.ScopeName, recordName)
|
||||
return
|
||||
}
|
||||
|
||||
delete(s.Records, recordName)
|
||||
} else {
|
||||
if recordsSliceEquals(existing, records) {
|
||||
glog.V(6).Infof("skipping spurious update of record %s/%s=%s", s.ScopeName, recordName, records)
|
||||
return
|
||||
}
|
||||
|
||||
s.Records[recordName] = records
|
||||
}
|
||||
|
||||
glog.V(2).Infof("Update %s/%s: %v", s.ScopeName, recordName, records)
|
||||
s.parent.recordChange()
|
||||
}
|
||||
|
||||
// recordsSliceEquals compares two []Record
|
||||
func recordsSliceEquals(l, r []Record) bool {
|
||||
if len(l) != len(r) {
|
||||
return false
|
||||
}
|
||||
for i := range l {
|
||||
if l[i] != r[i] {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// CreateScope creates a scope object.
|
||||
func (c *DNSController) CreateScope(scopeName string) (Scope, error) {
|
||||
c.mutex.Lock()
|
||||
|
|
Loading…
Reference in New Issue