mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-22 17:30:59 +02:00
Merge pull request #2670 from skudriavtsev/ib-client-v2
migration to infoblox-go-client/v2
This commit is contained in:
commit
bcd6e7f5e5
2
go.mod
2
go.mod
@ -27,7 +27,7 @@ require (
|
||||
github.com/google/go-cmp v0.5.7
|
||||
github.com/gophercloud/gophercloud v0.22.0
|
||||
github.com/hooklift/gowsdl v0.5.0
|
||||
github.com/infobloxopen/infoblox-go-client v1.1.1
|
||||
github.com/infobloxopen/infoblox-go-client/v2 v2.1.1
|
||||
github.com/linki/instrumented_http v0.3.0
|
||||
github.com/linode/linodego v0.32.2
|
||||
github.com/maxatome/go-testdeep v1.11.0
|
||||
|
8
go.sum
8
go.sum
@ -751,8 +751,8 @@ github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
|
||||
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
|
||||
github.com/infobloxopen/infoblox-go-client v1.1.1 h1:728A6LbLjptj/7kZjHyIxQnm768PWHfGFm0HH8FnbtU=
|
||||
github.com/infobloxopen/infoblox-go-client v1.1.1/go.mod h1:BXiw7S2b9qJoM8MS40vfgCNB2NLHGusk1DtO16BD9zI=
|
||||
github.com/infobloxopen/infoblox-go-client/v2 v2.1.1 h1:NYnXOngwW4xMIgUz4bKJ1Ygsmq5K0OOdUEkuLlkR1Ag=
|
||||
github.com/infobloxopen/infoblox-go-client/v2 v2.1.1/go.mod h1:+lznx4ASBSUZ2i6qwlgyn0v3eKDxBHNU5aRJzghAFbw=
|
||||
github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=
|
||||
github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs=
|
||||
github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo=
|
||||
@ -841,6 +841,7 @@ github.com/linode/linodego v0.32.2/go.mod h1:BR0gVkCJffEdIGJSl6bHR80Ty+Uvg/2jkjm
|
||||
github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc=
|
||||
github.com/lyft/protoc-gen-star v0.4.10/go.mod h1:mE8fbna26u7aEA2QCVvvfBU/ZrPgocG1206xAFPcs94=
|
||||
github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
|
||||
github.com/magefile/mage v1.10.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
|
||||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
|
||||
@ -964,6 +965,7 @@ github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+
|
||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
|
||||
github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
|
||||
github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg=
|
||||
github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E=
|
||||
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
|
||||
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
|
||||
@ -976,6 +978,7 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J
|
||||
github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA=
|
||||
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||
github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||
github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48=
|
||||
github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY=
|
||||
github.com/onsi/gomega v1.14.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0=
|
||||
github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE=
|
||||
@ -1125,6 +1128,7 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
|
||||
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||
github.com/sirupsen/logrus v1.8.0/go.mod h1:4GuYW9TZmE769R5STWrRakJc4UqQ3+QQ95fyz7ENv1A=
|
||||
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
|
||||
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||
github.com/smartystreets/assertions v0.0.0-20180725160413-e900ae048470/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||
|
@ -27,7 +27,7 @@ import (
|
||||
"strings"
|
||||
|
||||
transform "github.com/StackExchange/dnscontrol/pkg/transform"
|
||||
ibclient "github.com/infobloxopen/infoblox-go-client"
|
||||
ibclient "github.com/infobloxopen/infoblox-go-client/v2"
|
||||
"github.com/sirupsen/logrus"
|
||||
|
||||
"sigs.k8s.io/external-dns/endpoint"
|
||||
@ -40,6 +40,11 @@ const (
|
||||
providerSpecificInfobloxPtrRecord = "infoblox-ptr-record-exists"
|
||||
)
|
||||
|
||||
func isNotFoundError(err error) bool {
|
||||
_, ok := err.(*ibclient.NotFoundError)
|
||||
return ok
|
||||
}
|
||||
|
||||
// InfobloxConfig clarifies the method signature
|
||||
type InfobloxConfig struct {
|
||||
DomainFilter endpoint.DomainFilter
|
||||
@ -95,7 +100,7 @@ func NewExtendedRequestBuilder(maxResults int, fqdnRegEx string) *ExtendedReques
|
||||
|
||||
// BuildRequest prepares the api request. it uses BuildRequest of
|
||||
// WapiRequestBuilder and then add the _max_requests parameter
|
||||
func (mrb *ExtendedRequestBuilder) BuildRequest(t ibclient.RequestType, obj ibclient.IBObject, ref string, queryParams ibclient.QueryParams) (req *http.Request, err error) {
|
||||
func (mrb *ExtendedRequestBuilder) BuildRequest(t ibclient.RequestType, obj ibclient.IBObject, ref string, queryParams *ibclient.QueryParams) (req *http.Request, err error) {
|
||||
req, err = mrb.WapiRequestBuilder.BuildRequest(t, obj, ref, queryParams)
|
||||
if req.Method == "GET" {
|
||||
query := req.URL.Query()
|
||||
@ -147,7 +152,7 @@ func NewInfobloxProvider(infobloxConfig InfobloxConfig) (*InfobloxProvider, erro
|
||||
return nil, err
|
||||
}
|
||||
|
||||
provider := &InfobloxProvider{
|
||||
providerCfg := &InfobloxProvider{
|
||||
client: client,
|
||||
domainFilter: infobloxConfig.DomainFilter,
|
||||
zoneIDFilter: infobloxConfig.ZoneIDFilter,
|
||||
@ -158,7 +163,7 @@ func NewInfobloxProvider(infobloxConfig InfobloxConfig) (*InfobloxProvider, erro
|
||||
cacheDuration: infobloxConfig.CacheDuration,
|
||||
}
|
||||
|
||||
return provider, nil
|
||||
return providerCfg, nil
|
||||
}
|
||||
|
||||
// Records gets the current records.
|
||||
@ -171,14 +176,11 @@ func (p *InfobloxProvider) Records(ctx context.Context) (endpoints []*endpoint.E
|
||||
for _, zone := range zones {
|
||||
logrus.Debugf("fetch records from zone '%s'", zone.Fqdn)
|
||||
var resA []ibclient.RecordA
|
||||
objA := ibclient.NewRecordA(
|
||||
ibclient.RecordA{
|
||||
Zone: zone.Fqdn,
|
||||
View: p.view,
|
||||
},
|
||||
)
|
||||
err = p.client.GetObject(objA, "", &resA)
|
||||
if err != nil {
|
||||
objA := ibclient.NewEmptyRecordA()
|
||||
objA.View = p.view
|
||||
objA.Zone = zone.Fqdn
|
||||
err = p.client.GetObject(objA, "", ibclient.NewQueryParams(false, nil), &resA)
|
||||
if err != nil && !isNotFoundError(err) {
|
||||
return nil, fmt.Errorf("could not fetch A records from zone '%s': %s", zone.Fqdn, err)
|
||||
}
|
||||
for _, res := range resA {
|
||||
@ -207,14 +209,11 @@ func (p *InfobloxProvider) Records(ctx context.Context) (endpoints []*endpoint.E
|
||||
|
||||
// Include Host records since they should be treated synonymously with A records
|
||||
var resH []ibclient.HostRecord
|
||||
objH := ibclient.NewHostRecord(
|
||||
ibclient.HostRecord{
|
||||
Zone: zone.Fqdn,
|
||||
View: p.view,
|
||||
},
|
||||
)
|
||||
err = p.client.GetObject(objH, "", &resH)
|
||||
if err != nil {
|
||||
objH := ibclient.NewEmptyHostRecord()
|
||||
objH.View = p.view
|
||||
objH.Zone = zone.Fqdn
|
||||
err = p.client.GetObject(objH, "", ibclient.NewQueryParams(false, nil), &resH)
|
||||
if err != nil && !isNotFoundError(err) {
|
||||
return nil, fmt.Errorf("could not fetch host records from zone '%s': %s", zone.Fqdn, err)
|
||||
}
|
||||
for _, res := range resH {
|
||||
@ -232,14 +231,11 @@ func (p *InfobloxProvider) Records(ctx context.Context) (endpoints []*endpoint.E
|
||||
}
|
||||
|
||||
var resC []ibclient.RecordCNAME
|
||||
objC := ibclient.NewRecordCNAME(
|
||||
ibclient.RecordCNAME{
|
||||
Zone: zone.Fqdn,
|
||||
View: p.view,
|
||||
},
|
||||
)
|
||||
err = p.client.GetObject(objC, "", &resC)
|
||||
if err != nil {
|
||||
objC := ibclient.NewEmptyRecordCNAME()
|
||||
objC.View = p.view
|
||||
objC.Zone = zone.Fqdn
|
||||
err = p.client.GetObject(objC, "", ibclient.NewQueryParams(false, nil), &resC)
|
||||
if err != nil && !isNotFoundError(err) {
|
||||
return nil, fmt.Errorf("could not fetch CNAME records from zone '%s': %s", zone.Fqdn, err)
|
||||
}
|
||||
for _, res := range resC {
|
||||
@ -254,14 +250,11 @@ func (p *InfobloxProvider) Records(ctx context.Context) (endpoints []*endpoint.E
|
||||
arpaZone, err := transform.ReverseDomainName(zone.Fqdn)
|
||||
if err == nil {
|
||||
var resP []ibclient.RecordPTR
|
||||
objP := ibclient.NewRecordPTR(
|
||||
ibclient.RecordPTR{
|
||||
Zone: arpaZone,
|
||||
View: p.view,
|
||||
},
|
||||
)
|
||||
err = p.client.GetObject(objP, "", &resP)
|
||||
if err != nil {
|
||||
objP := ibclient.NewEmptyRecordPTR()
|
||||
objP.Zone = arpaZone
|
||||
objP.View = p.view
|
||||
err = p.client.GetObject(objP, "", ibclient.NewQueryParams(false, nil), &resP)
|
||||
if err != nil && !isNotFoundError(err) {
|
||||
return nil, fmt.Errorf("could not fetch PTR records from zone '%s': %s", zone.Fqdn, err)
|
||||
}
|
||||
for _, res := range resP {
|
||||
@ -277,8 +270,8 @@ func (p *InfobloxProvider) Records(ctx context.Context) (endpoints []*endpoint.E
|
||||
View: p.view,
|
||||
},
|
||||
)
|
||||
err = p.client.GetObject(objT, "", &resT)
|
||||
if err != nil {
|
||||
err = p.client.GetObject(objT, "", ibclient.NewQueryParams(false, nil), &resT)
|
||||
if err != nil && !isNotFoundError(err) {
|
||||
return nil, fmt.Errorf("could not fetch TXT records from zone '%s': %s", zone.Fqdn, err)
|
||||
}
|
||||
for _, res := range resT {
|
||||
@ -377,9 +370,8 @@ func (p *InfobloxProvider) zones() ([]ibclient.ZoneAuth, error) {
|
||||
View: p.view,
|
||||
},
|
||||
)
|
||||
err := p.client.GetObject(obj, "", &res)
|
||||
|
||||
if err != nil {
|
||||
err := p.client.GetObject(obj, "", ibclient.NewQueryParams(false, nil), &res)
|
||||
if err != nil && !isNotFoundError(err) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -466,12 +458,12 @@ func (p *InfobloxProvider) findReverseZone(zones []ibclient.ZoneAuth, name strin
|
||||
maxMask := 0
|
||||
|
||||
for i, zone := range zones {
|
||||
_, net, err := net.ParseCIDR(zone.Fqdn)
|
||||
_, rZoneNet, err := net.ParseCIDR(zone.Fqdn)
|
||||
if err != nil {
|
||||
logrus.WithError(err).Debugf("fqdn %s is no cidr", zone.Fqdn)
|
||||
} else {
|
||||
if net.Contains(ip) {
|
||||
_, mask := net.Mask.Size()
|
||||
if rZoneNet.Contains(ip) {
|
||||
_, mask := rZoneNet.Mask.Size()
|
||||
networks[mask] = &zones[i]
|
||||
if mask > maxMask {
|
||||
maxMask = mask
|
||||
@ -486,16 +478,13 @@ func (p *InfobloxProvider) recordSet(ep *endpoint.Endpoint, getObject bool, targ
|
||||
switch ep.RecordType {
|
||||
case endpoint.RecordTypeA:
|
||||
var res []ibclient.RecordA
|
||||
obj := ibclient.NewRecordA(
|
||||
ibclient.RecordA{
|
||||
Name: ep.DNSName,
|
||||
Ipv4Addr: ep.Targets[targetIndex],
|
||||
View: p.view,
|
||||
},
|
||||
)
|
||||
obj := ibclient.NewEmptyRecordA()
|
||||
obj.Name = ep.DNSName
|
||||
obj.Ipv4Addr = ep.Targets[targetIndex]
|
||||
obj.View = p.view
|
||||
if getObject {
|
||||
err = p.client.GetObject(obj, "", &res)
|
||||
if err != nil {
|
||||
err = p.client.GetObject(obj, "", ibclient.NewQueryParams(false, nil), &res)
|
||||
if err != nil && !isNotFoundError(err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -505,16 +494,13 @@ func (p *InfobloxProvider) recordSet(ep *endpoint.Endpoint, getObject bool, targ
|
||||
}
|
||||
case endpoint.RecordTypePTR:
|
||||
var res []ibclient.RecordPTR
|
||||
obj := ibclient.NewRecordPTR(
|
||||
ibclient.RecordPTR{
|
||||
PtrdName: ep.DNSName,
|
||||
Ipv4Addr: ep.Targets[targetIndex],
|
||||
View: p.view,
|
||||
},
|
||||
)
|
||||
obj := ibclient.NewEmptyRecordPTR()
|
||||
obj.PtrdName = ep.DNSName
|
||||
obj.Ipv4Addr = ep.Targets[targetIndex]
|
||||
obj.View = p.view
|
||||
if getObject {
|
||||
err = p.client.GetObject(obj, "", &res)
|
||||
if err != nil {
|
||||
err = p.client.GetObject(obj, "", ibclient.NewQueryParams(false, nil), &res)
|
||||
if err != nil && !isNotFoundError(err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -524,16 +510,13 @@ func (p *InfobloxProvider) recordSet(ep *endpoint.Endpoint, getObject bool, targ
|
||||
}
|
||||
case endpoint.RecordTypeCNAME:
|
||||
var res []ibclient.RecordCNAME
|
||||
obj := ibclient.NewRecordCNAME(
|
||||
ibclient.RecordCNAME{
|
||||
Name: ep.DNSName,
|
||||
Canonical: ep.Targets[0],
|
||||
View: p.view,
|
||||
},
|
||||
)
|
||||
obj := ibclient.NewEmptyRecordCNAME()
|
||||
obj.Name = ep.DNSName
|
||||
obj.Canonical = ep.Targets[0]
|
||||
obj.View = p.view
|
||||
if getObject {
|
||||
err = p.client.GetObject(obj, "", &res)
|
||||
if err != nil {
|
||||
err = p.client.GetObject(obj, "", ibclient.NewQueryParams(false, nil), &res)
|
||||
if err != nil && !isNotFoundError(err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -556,8 +539,8 @@ func (p *InfobloxProvider) recordSet(ep *endpoint.Endpoint, getObject bool, targ
|
||||
},
|
||||
)
|
||||
if getObject {
|
||||
err = p.client.GetObject(obj, "", &res)
|
||||
if err != nil {
|
||||
err = p.client.GetObject(obj, "", ibclient.NewQueryParams(false, nil), &res)
|
||||
if err != nil && !isNotFoundError(err) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
ibclient "github.com/infobloxopen/infoblox-go-client"
|
||||
ibclient "github.com/infobloxopen/infoblox-go-client/v2"
|
||||
"github.com/miekg/dns"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
@ -113,7 +113,7 @@ func (client *mockIBConnector) CreateObject(obj ibclient.IBObject) (ref string,
|
||||
return ref, nil
|
||||
}
|
||||
|
||||
func (client *mockIBConnector) GetObject(obj ibclient.IBObject, ref string, res interface{}) (err error) {
|
||||
func (client *mockIBConnector) GetObject(obj ibclient.IBObject, ref string, queryParams *ibclient.QueryParams, res interface{}) (err error) {
|
||||
switch obj.ObjectType() {
|
||||
case "record:a":
|
||||
var result []ibclient.RecordA
|
||||
@ -208,12 +208,9 @@ func (client *mockIBConnector) DeleteObject(ref string) (refRes string, err erro
|
||||
switch result[1] {
|
||||
case "record:a":
|
||||
var records []ibclient.RecordA
|
||||
obj := ibclient.NewRecordA(
|
||||
ibclient.RecordA{
|
||||
Name: result[2],
|
||||
},
|
||||
)
|
||||
client.GetObject(obj, ref, &records)
|
||||
obj := ibclient.NewEmptyRecordA()
|
||||
obj.Name = result[2]
|
||||
client.GetObject(obj, ref, nil, &records)
|
||||
for _, record := range records {
|
||||
client.deletedEndpoints = append(
|
||||
client.deletedEndpoints,
|
||||
@ -226,12 +223,9 @@ func (client *mockIBConnector) DeleteObject(ref string) (refRes string, err erro
|
||||
}
|
||||
case "record:cname":
|
||||
var records []ibclient.RecordCNAME
|
||||
obj := ibclient.NewRecordCNAME(
|
||||
ibclient.RecordCNAME{
|
||||
Name: result[2],
|
||||
},
|
||||
)
|
||||
client.GetObject(obj, ref, &records)
|
||||
obj := ibclient.NewEmptyRecordCNAME()
|
||||
obj.Name = result[2]
|
||||
client.GetObject(obj, ref, nil, &records)
|
||||
for _, record := range records {
|
||||
client.deletedEndpoints = append(
|
||||
client.deletedEndpoints,
|
||||
@ -244,12 +238,9 @@ func (client *mockIBConnector) DeleteObject(ref string) (refRes string, err erro
|
||||
}
|
||||
case "record:host":
|
||||
var records []ibclient.HostRecord
|
||||
obj := ibclient.NewHostRecord(
|
||||
ibclient.HostRecord{
|
||||
Name: result[2],
|
||||
},
|
||||
)
|
||||
client.GetObject(obj, ref, &records)
|
||||
obj := ibclient.NewEmptyHostRecord()
|
||||
obj.Name = result[2]
|
||||
client.GetObject(obj, ref, nil, &records)
|
||||
for _, record := range records {
|
||||
client.deletedEndpoints = append(
|
||||
client.deletedEndpoints,
|
||||
@ -267,7 +258,7 @@ func (client *mockIBConnector) DeleteObject(ref string) (refRes string, err erro
|
||||
Name: result[2],
|
||||
},
|
||||
)
|
||||
client.GetObject(obj, ref, &records)
|
||||
client.GetObject(obj, ref, nil, &records)
|
||||
for _, record := range records {
|
||||
client.deletedEndpoints = append(
|
||||
client.deletedEndpoints,
|
||||
@ -280,12 +271,9 @@ func (client *mockIBConnector) DeleteObject(ref string) (refRes string, err erro
|
||||
}
|
||||
case "record:ptr":
|
||||
var records []ibclient.RecordPTR
|
||||
obj := ibclient.NewRecordPTR(
|
||||
ibclient.RecordPTR{
|
||||
Name: result[2],
|
||||
},
|
||||
)
|
||||
client.GetObject(obj, ref, &records)
|
||||
obj := ibclient.NewEmptyRecordPTR()
|
||||
obj.Name = result[2]
|
||||
client.GetObject(obj, ref, nil, &records)
|
||||
for _, record := range records {
|
||||
client.deletedEndpoints = append(
|
||||
client.deletedEndpoints,
|
||||
@ -354,21 +342,17 @@ func createMockInfobloxObject(name, recordType, value string) ibclient.IBObject
|
||||
ref := fmt.Sprintf("record:%s/%s:%s/default", strings.ToLower(recordType), base64.StdEncoding.EncodeToString([]byte(name)), name)
|
||||
switch recordType {
|
||||
case endpoint.RecordTypeA:
|
||||
return ibclient.NewRecordA(
|
||||
ibclient.RecordA{
|
||||
Ref: ref,
|
||||
Name: name,
|
||||
Ipv4Addr: value,
|
||||
},
|
||||
)
|
||||
obj := ibclient.NewEmptyRecordA()
|
||||
obj.Name = name
|
||||
obj.Ref = ref
|
||||
obj.Ipv4Addr = value
|
||||
return obj
|
||||
case endpoint.RecordTypeCNAME:
|
||||
return ibclient.NewRecordCNAME(
|
||||
ibclient.RecordCNAME{
|
||||
Ref: ref,
|
||||
Name: name,
|
||||
Canonical: value,
|
||||
},
|
||||
)
|
||||
obj := ibclient.NewEmptyRecordCNAME()
|
||||
obj.Name = name
|
||||
obj.Ref = ref
|
||||
obj.Canonical = value
|
||||
return obj
|
||||
case endpoint.RecordTypeTXT:
|
||||
return ibclient.NewRecordTXT(
|
||||
ibclient.RecordTXT{
|
||||
@ -378,26 +362,23 @@ func createMockInfobloxObject(name, recordType, value string) ibclient.IBObject
|
||||
},
|
||||
)
|
||||
case "HOST":
|
||||
return ibclient.NewHostRecord(
|
||||
ibclient.HostRecord{
|
||||
Ref: ref,
|
||||
Name: name,
|
||||
Ipv4Addrs: []ibclient.HostRecordIpv4Addr{
|
||||
obj := ibclient.NewEmptyHostRecord()
|
||||
obj.Name = name
|
||||
obj.Ref = ref
|
||||
obj.Ipv4Addrs = []ibclient.HostRecordIpv4Addr{
|
||||
{
|
||||
Ipv4Addr: value,
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
case endpoint.RecordTypePTR:
|
||||
return ibclient.NewRecordPTR(
|
||||
ibclient.RecordPTR{
|
||||
Ref: ref,
|
||||
PtrdName: name,
|
||||
Ipv4Addr: value,
|
||||
},
|
||||
)
|
||||
}
|
||||
return obj
|
||||
case endpoint.RecordTypePTR:
|
||||
obj := ibclient.NewEmptyRecordPTR()
|
||||
obj.PtrdName = name
|
||||
obj.Ref = ref
|
||||
obj.Ipv4Addr = value
|
||||
return obj
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -435,8 +416,8 @@ func TestInfobloxRecords(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
provider := newInfobloxProvider(endpoint.NewDomainFilter([]string{"example.com"}), provider.NewZoneIDFilter([]string{""}), true, false, &client)
|
||||
actual, err := provider.Records(context.Background())
|
||||
providerCfg := newInfobloxProvider(endpoint.NewDomainFilter([]string{"example.com"}), provider.NewZoneIDFilter([]string{""}), true, false, &client)
|
||||
actual, err := providerCfg.Records(context.Background())
|
||||
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
@ -472,12 +453,12 @@ func TestInfobloxAdjustEndpoints(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
provider := newInfobloxProvider(endpoint.NewDomainFilter([]string{"example.com"}), provider.NewZoneIDFilter([]string{""}), true, true, &client)
|
||||
actual, err := provider.Records(context.Background())
|
||||
providerCfg := newInfobloxProvider(endpoint.NewDomainFilter([]string{"example.com"}), provider.NewZoneIDFilter([]string{""}), true, true, &client)
|
||||
actual, err := providerCfg.Records(context.Background())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
provider.AdjustEndpoints(actual)
|
||||
providerCfg.AdjustEndpoints(actual)
|
||||
|
||||
expected := []*endpoint.Endpoint{
|
||||
endpoint.NewEndpoint("example.com", endpoint.RecordTypeA, "123.123.123.122").WithProviderSpecific(providerSpecificInfobloxPtrRecord, "true"),
|
||||
@ -501,8 +482,8 @@ func TestInfobloxRecordsReverse(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
provider := newInfobloxProvider(endpoint.NewDomainFilter([]string{"10.0.0.0/24"}), provider.NewZoneIDFilter([]string{""}), true, true, &client)
|
||||
actual, err := provider.Records(context.Background())
|
||||
providerCfg := newInfobloxProvider(endpoint.NewDomainFilter([]string{"10.0.0.0/24"}), provider.NewZoneIDFilter([]string{""}), true, true, &client)
|
||||
actual, err := providerCfg.Records(context.Background())
|
||||
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
@ -606,7 +587,7 @@ func testInfobloxApplyChangesInternal(t *testing.T, dryRun, createPTR bool, clie
|
||||
createMockInfobloxObject("oldcname.example.com", endpoint.RecordTypeCNAME, "other.com"),
|
||||
}
|
||||
|
||||
provider := newInfobloxProvider(
|
||||
providerCfg := newInfobloxProvider(
|
||||
endpoint.NewDomainFilter([]string{""}),
|
||||
provider.NewZoneIDFilter([]string{""}),
|
||||
dryRun,
|
||||
@ -658,7 +639,7 @@ func testInfobloxApplyChangesInternal(t *testing.T, dryRun, createPTR bool, clie
|
||||
Delete: deleteRecords,
|
||||
}
|
||||
|
||||
if err := provider.ApplyChanges(context.Background(), changes); err != nil {
|
||||
if err := providerCfg.ApplyChanges(context.Background(), changes); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
@ -674,18 +655,18 @@ func TestInfobloxZones(t *testing.T) {
|
||||
mockInfobloxObjects: &[]ibclient.IBObject{},
|
||||
}
|
||||
|
||||
provider := newInfobloxProvider(endpoint.NewDomainFilter([]string{"example.com", "1.2.3.0/24"}), provider.NewZoneIDFilter([]string{""}), true, false, &client)
|
||||
zones, _ := provider.zones()
|
||||
providerCfg := newInfobloxProvider(endpoint.NewDomainFilter([]string{"example.com", "1.2.3.0/24"}), provider.NewZoneIDFilter([]string{""}), true, false, &client)
|
||||
zones, _ := providerCfg.zones()
|
||||
var emptyZoneAuth *ibclient.ZoneAuth
|
||||
assert.Equal(t, provider.findZone(zones, "example.com").Fqdn, "example.com")
|
||||
assert.Equal(t, provider.findZone(zones, "nomatch-example.com"), emptyZoneAuth)
|
||||
assert.Equal(t, provider.findZone(zones, "nginx.example.com").Fqdn, "example.com")
|
||||
assert.Equal(t, provider.findZone(zones, "lvl1-1.example.com").Fqdn, "lvl1-1.example.com")
|
||||
assert.Equal(t, provider.findZone(zones, "lvl1-2.example.com").Fqdn, "example.com")
|
||||
assert.Equal(t, provider.findZone(zones, "lvl2-1.lvl1-1.example.com").Fqdn, "lvl2-1.lvl1-1.example.com")
|
||||
assert.Equal(t, provider.findZone(zones, "lvl2-2.lvl1-1.example.com").Fqdn, "lvl1-1.example.com")
|
||||
assert.Equal(t, provider.findZone(zones, "lvl2-2.lvl1-2.example.com").Fqdn, "example.com")
|
||||
assert.Equal(t, provider.findZone(zones, "1.2.3.0/24").Fqdn, "1.2.3.0/24")
|
||||
assert.Equal(t, providerCfg.findZone(zones, "example.com").Fqdn, "example.com")
|
||||
assert.Equal(t, providerCfg.findZone(zones, "nomatch-example.com"), emptyZoneAuth)
|
||||
assert.Equal(t, providerCfg.findZone(zones, "nginx.example.com").Fqdn, "example.com")
|
||||
assert.Equal(t, providerCfg.findZone(zones, "lvl1-1.example.com").Fqdn, "lvl1-1.example.com")
|
||||
assert.Equal(t, providerCfg.findZone(zones, "lvl1-2.example.com").Fqdn, "example.com")
|
||||
assert.Equal(t, providerCfg.findZone(zones, "lvl2-1.lvl1-1.example.com").Fqdn, "lvl2-1.lvl1-1.example.com")
|
||||
assert.Equal(t, providerCfg.findZone(zones, "lvl2-2.lvl1-1.example.com").Fqdn, "lvl1-1.example.com")
|
||||
assert.Equal(t, providerCfg.findZone(zones, "lvl2-2.lvl1-2.example.com").Fqdn, "example.com")
|
||||
assert.Equal(t, providerCfg.findZone(zones, "1.2.3.0/24").Fqdn, "1.2.3.0/24")
|
||||
}
|
||||
|
||||
func TestInfobloxReverseZones(t *testing.T) {
|
||||
@ -698,13 +679,13 @@ func TestInfobloxReverseZones(t *testing.T) {
|
||||
mockInfobloxObjects: &[]ibclient.IBObject{},
|
||||
}
|
||||
|
||||
provider := newInfobloxProvider(endpoint.NewDomainFilter([]string{"example.com", "1.2.3.0/24", "10.0.0.0/8"}), provider.NewZoneIDFilter([]string{""}), true, false, &client)
|
||||
zones, _ := provider.zones()
|
||||
providerCfg := newInfobloxProvider(endpoint.NewDomainFilter([]string{"example.com", "1.2.3.0/24", "10.0.0.0/8"}), provider.NewZoneIDFilter([]string{""}), true, false, &client)
|
||||
zones, _ := providerCfg.zones()
|
||||
var emptyZoneAuth *ibclient.ZoneAuth
|
||||
assert.Equal(t, provider.findReverseZone(zones, "nomatch-example.com"), emptyZoneAuth)
|
||||
assert.Equal(t, provider.findReverseZone(zones, "192.168.0.1"), emptyZoneAuth)
|
||||
assert.Equal(t, provider.findReverseZone(zones, "1.2.3.4").Fqdn, "1.2.3.0/24")
|
||||
assert.Equal(t, provider.findReverseZone(zones, "10.28.29.30").Fqdn, "10.0.0.0/8")
|
||||
assert.Equal(t, providerCfg.findReverseZone(zones, "nomatch-example.com"), emptyZoneAuth)
|
||||
assert.Equal(t, providerCfg.findReverseZone(zones, "192.168.0.1"), emptyZoneAuth)
|
||||
assert.Equal(t, providerCfg.findReverseZone(zones, "1.2.3.4").Fqdn, "1.2.3.0/24")
|
||||
assert.Equal(t, providerCfg.findReverseZone(zones, "10.28.29.30").Fqdn, "10.0.0.0/8")
|
||||
}
|
||||
|
||||
func TestExtendedRequestFDQDRegExBuilder(t *testing.T) {
|
||||
@ -721,14 +702,15 @@ func TestExtendedRequestFDQDRegExBuilder(t *testing.T) {
|
||||
|
||||
obj := ibclient.NewZoneAuth(ibclient.ZoneAuth{})
|
||||
|
||||
req, _ := requestBuilder.BuildRequest(ibclient.GET, obj, "", ibclient.QueryParams{})
|
||||
req, _ := requestBuilder.BuildRequest(ibclient.GET, obj, "", &ibclient.QueryParams{})
|
||||
|
||||
assert.True(t, req.URL.Query().Get("fqdn~") == "^staging.*test.com$")
|
||||
|
||||
req, _ = requestBuilder.BuildRequest(ibclient.CREATE, obj, "", ibclient.QueryParams{})
|
||||
req, _ = requestBuilder.BuildRequest(ibclient.CREATE, obj, "", &ibclient.QueryParams{})
|
||||
|
||||
assert.True(t, req.URL.Query().Get("fqdn~") == "")
|
||||
}
|
||||
|
||||
func TestExtendedRequestMaxResultsBuilder(t *testing.T) {
|
||||
hostConfig := ibclient.HostConfig{
|
||||
Host: "localhost",
|
||||
@ -741,13 +723,14 @@ func TestExtendedRequestMaxResultsBuilder(t *testing.T) {
|
||||
requestBuilder := NewExtendedRequestBuilder(54321, "")
|
||||
requestBuilder.Init(hostConfig)
|
||||
|
||||
obj := ibclient.NewRecordCNAME(ibclient.RecordCNAME{Zone: "foo.bar.com"})
|
||||
obj := ibclient.NewEmptyRecordCNAME()
|
||||
obj.Zone = "foo.bar.com"
|
||||
|
||||
req, _ := requestBuilder.BuildRequest(ibclient.GET, obj, "", ibclient.QueryParams{})
|
||||
req, _ := requestBuilder.BuildRequest(ibclient.GET, obj, "", &ibclient.QueryParams{})
|
||||
|
||||
assert.True(t, req.URL.Query().Get("_max_results") == "54321")
|
||||
|
||||
req, _ = requestBuilder.BuildRequest(ibclient.CREATE, obj, "", ibclient.QueryParams{})
|
||||
req, _ = requestBuilder.BuildRequest(ibclient.CREATE, obj, "", &ibclient.QueryParams{})
|
||||
|
||||
assert.True(t, req.URL.Query().Get("_max_results") == "")
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user