mirror of https://github.com/kubernetes/kops.git
[DigitalOcean]: accept multiple records in dns-controller
This commit is contained in:
parent
d6cdcbf371
commit
6ed094fcd2
|
@ -185,20 +185,27 @@ func (r *resourceRecordSets) List() ([]dnsprovider.ResourceRecordSet, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
var rrset *resourceRecordSet
|
||||
var rrsets []dnsprovider.ResourceRecordSet
|
||||
rrsetsWithoutDups := make(map[string]*resourceRecordSet)
|
||||
|
||||
for _, record := range records {
|
||||
// digitalocean API returns the record without the zone
|
||||
// but the consumers of this interface expect the zone to be included
|
||||
recordName := dns.EnsureDotSuffix(record.Name) + r.Zone().Name()
|
||||
rrset = &resourceRecordSet{
|
||||
name: recordName,
|
||||
data: record.Data,
|
||||
ttl: record.TTL,
|
||||
recordType: rrstype.RrsType(record.Type),
|
||||
if set, ok := rrsetsWithoutDups[recordName]; !ok {
|
||||
rrsetsWithoutDups[recordName] = &resourceRecordSet{
|
||||
name: recordName,
|
||||
data: []string{record.Data},
|
||||
ttl: record.TTL,
|
||||
recordType: rrstype.RrsType(record.Type),
|
||||
}
|
||||
} else {
|
||||
set.data = append(set.data, record.Data)
|
||||
}
|
||||
}
|
||||
|
||||
rrsets = append(rrsets, rrset)
|
||||
for _, set := range rrsetsWithoutDups {
|
||||
rrsets = append(rrsets, set)
|
||||
}
|
||||
|
||||
return rrsets, nil
|
||||
|
@ -223,13 +230,13 @@ func (r *resourceRecordSets) Get(name string) ([]dnsprovider.ResourceRecordSet,
|
|||
|
||||
// New returns an implementation of dnsprovider.ResourceRecordSet
|
||||
func (r *resourceRecordSets) New(name string, rrdatas []string, ttl int64, rrstype rrstype.RrsType) dnsprovider.ResourceRecordSet {
|
||||
if len(rrdatas) > 1 {
|
||||
if len(rrdatas) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
return &resourceRecordSet{
|
||||
name: name,
|
||||
data: rrdatas[0],
|
||||
data: rrdatas,
|
||||
ttl: int(ttl),
|
||||
recordType: rrstype,
|
||||
}
|
||||
|
@ -256,7 +263,7 @@ func (r *resourceRecordSets) Zone() dnsprovider.Zone {
|
|||
// a single record associated with a zone
|
||||
type resourceRecordSet struct {
|
||||
name string
|
||||
data string
|
||||
data []string
|
||||
ttl int
|
||||
recordType rrstype.RrsType
|
||||
}
|
||||
|
@ -269,7 +276,7 @@ func (r *resourceRecordSet) Name() string {
|
|||
// Rrdatas returns a list of data associated with a resource record set
|
||||
// in DO this is almost always the IP of a record
|
||||
func (r *resourceRecordSet) Rrdatas() []string {
|
||||
return []string{r.data}
|
||||
return r.data
|
||||
}
|
||||
|
||||
// Ttl returns the time-to-live of a record
|
||||
|
|
Loading…
Reference in New Issue