Skip to content

Commit

Permalink
cleanup: don't use fmt.Errorf()
Browse files Browse the repository at this point in the history
  • Loading branch information
seanmalloy committed Sep 18, 2020
1 parent 6e22b50 commit 0dca7b2
Showing 1 changed file with 38 additions and 36 deletions.
74 changes: 38 additions & 36 deletions provider/bluecat/bluecat.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ import (
"context"
"crypto/tls"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
"strconv"
"strings"

"github.com/pkg/errors"
log "github.com/sirupsen/logrus"

"sigs.k8s.io/external-dns/endpoint"
Expand Down Expand Up @@ -143,18 +143,18 @@ type bluecatCreateTXTRecordRequest struct {
func NewBluecatProvider(configFile string, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool) (*BluecatProvider, error) {
contents, err := ioutil.ReadFile(configFile)
if err != nil {
return nil, fmt.Errorf("failed to read Bluecat config file '%s': %v", configFile, err)
return nil, errors.Wrapf(err, "failed to read Bluecat config file %v", configFile)
}

cfg := bluecatConfig{}
err = json.Unmarshal(contents, &cfg)
if err != nil {
return nil, fmt.Errorf("failed to read Bluecat config file '%s': %v", configFile, err)
return nil, errors.Wrapf(err, "failed to read Bluecat config file %v", configFile)
}

token, cookie, err := getBluecatGatewayToken(cfg)
if err != nil {
return nil, fmt.Errorf("failed to get API token from Bluecat Gateway: %v", err)
return nil, errors.Wrap(err, "failed to get API token from Bluecat Gateway")
}
gatewayClient := NewGatewayClient(cookie, token, cfg.GatewayHost, cfg.DNSConfiguration, cfg.View, cfg.RootZone)

Expand Down Expand Up @@ -191,15 +191,15 @@ func NewGatewayClient(cookie http.Cookie, token, gatewayHost, dnsConfiguration,
func (p *BluecatProvider) Records(ctx context.Context) (endpoints []*endpoint.Endpoint, err error) {
zones, err := p.zones()
if err != nil {
return nil, fmt.Errorf("could not fetch zones: %s", err)
return nil, errors.Wrap(err, "could not fetch zones")
}

for _, zone := range zones {
log.Debugf("fetching records from zone '%s'", zone)
var resH []BluecatHostRecord
err = p.gatewayClient.getHostRecords(zone, &resH)
if err != nil {
return nil, fmt.Errorf("could not fetch host records for zone: '%s': %s", zone, err)
return nil, errors.Wrapf(err, "could not fetch host records for zone: %v", zone)
}
for _, rec := range resH {
propMap := splitProperties(rec.Properties)
Expand All @@ -213,7 +213,7 @@ func (p *BluecatProvider) Records(ctx context.Context) (endpoints []*endpoint.En
var resC []BluecatCNAMERecord
err = p.gatewayClient.getCNAMERecords(zone, &resC)
if err != nil {
return nil, fmt.Errorf("could not fetch CNAME records for zone: '%s': %s", zone, err)
return nil, errors.Wrapf(err, "could not fetch CNAME records for zone: %v", zone)
}
for _, rec := range resC {
propMap := splitProperties(rec.Properties)
Expand All @@ -225,7 +225,7 @@ func (p *BluecatProvider) Records(ctx context.Context) (endpoints []*endpoint.En
var resT []BluecatTXTRecord
err = p.gatewayClient.getTXTRecords(zone, &resT)
if err != nil {
return nil, fmt.Errorf("could not fetch TXT records for zone: '#{zone}': #{err}")
return nil, errors.Wrapf(err, "could not fetch TXT records for zone: %v", zone)
}
for _, rec := range resT {
endpoints = append(endpoints, endpoint.NewEndpoint(rec.Name, endpoint.RecordTypeTXT, rec.Text))
Expand All @@ -252,6 +252,8 @@ func (p *BluecatProvider) ApplyChanges(ctx context.Context, changes *plan.Change
p.deleteRecords(deleted)
p.createRecords(created)

// TODO: add bluecat deploy API call here

return nil
}

Expand Down Expand Up @@ -515,7 +517,7 @@ func getBluecatGatewayToken(cfg bluecatConfig) (string, http.Cookie, error) {
"password": cfg.GatewayPassword,
})
if err != nil {
return "", http.Cookie{}, fmt.Errorf("could not unmarshal credentials for bluecat gateway config: %v", err)
return "", http.Cookie{}, errors.Wrap(err, "could not unmarshal credentials for bluecat gateway config")
}

c := &http.Client{
Expand All @@ -525,24 +527,24 @@ func getBluecatGatewayToken(cfg bluecatConfig) (string, http.Cookie, error) {

resp, err := c.Post(cfg.GatewayHost+"/rest_login", "application/json", bytes.NewBuffer(body))
if err != nil {
return "", http.Cookie{}, fmt.Errorf("error obtaining API token from bluecat gateway: %v", err)
return "", http.Cookie{}, errors.Wrap(err, "error obtaining API token from bluecat gateway")
}
defer resp.Body.Close()

if resp.StatusCode != http.StatusOK {
details, _ := ioutil.ReadAll(resp.Body)
return "", http.Cookie{}, fmt.Errorf("got HTTP response code %d, detailed message: %s", resp.StatusCode, string(details))
return "", http.Cookie{}, errors.Errorf("got HTTP response code %v, detailed message: %v", resp.StatusCode, string(details))
}

res, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", http.Cookie{}, fmt.Errorf("error reading get_token response from bluecat gateway: %v", err)
return "", http.Cookie{}, errors.Wrap(err, "error reading get_token response from bluecat gateway")
}

resJSON := map[string]string{}
err = json.Unmarshal(res, &resJSON)
if err != nil {
return "", http.Cookie{}, fmt.Errorf("error unmarshaling json response (auth) from bluecat gateway: %v", err)
return "", http.Cookie{}, errors.Wrap(err, "error unmarshaling json response (auth) from bluecat gateway")
}

// Example response: {"access_token": "BAMAuthToken: abc123"}
Expand All @@ -563,12 +565,12 @@ func (c GatewayClientConfig) getBluecatZones(zoneName string) ([]BluecatZone, er
url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + "/views/" + c.View + "/" + zonePath
req, err := c.buildHTTPRequest("GET", url, nil)
if err != nil {
return nil, fmt.Errorf("error building http request: %s", err)
return nil, errors.Wrap(err, "error building http request")
}

resp, err := client.Do(req)
if err != nil {
return nil, fmt.Errorf("error retrieving zone(s) from gateway: %s, %s, %s", url, zoneName, err)
return nil, errors.Wrapf(err, "error retrieving zone(s) from gateway: %v, %v", url, zoneName)
}

defer resp.Body.Close()
Expand All @@ -582,7 +584,7 @@ func (c GatewayClientConfig) getBluecatZones(zoneName string) ([]BluecatZone, er
zoneProps := splitProperties(zone.Properties)
subZones, err := c.getBluecatZones(zoneProps["absoluteName"])
if err != nil {
return nil, fmt.Errorf("error retrieving subzones from gateway: %s, %s", zoneName, err)
return nil, errors.Wrapf(err, "error retrieving subzones from gateway: %v", zoneName)
}
zones = append(zones, subZones...)
}
Expand All @@ -606,12 +608,12 @@ func (c GatewayClientConfig) getHostRecords(zone string, records *[]BluecatHostR
url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + "/views/" + c.View + "/" + zonePath + "host_records/"
req, err := c.buildHTTPRequest("GET", url, nil)
if err != nil {
return fmt.Errorf("error building http request: %s", err)
return errors.Wrap(err, "error building http request")
}

resp, err := client.Do(req)
if err != nil {
return fmt.Errorf("error retrieving record(s) from gateway: %s, %s", zone, err)
return errors.Wrapf(err, "error retrieving record(s) from gateway: %v", zone)
}

defer resp.Body.Close()
Expand All @@ -636,12 +638,12 @@ func (c GatewayClientConfig) getCNAMERecords(zone string, records *[]BluecatCNAM
url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + "/views/" + c.View + "/" + zonePath + "cname_records/"
req, err := c.buildHTTPRequest("GET", url, nil)
if err != nil {
return fmt.Errorf("error building http request: %s", err)
return errors.Wrap(err, "error building http request")
}

resp, err := client.Do(req)
if err != nil {
return fmt.Errorf("error retrieving record(s) from gateway: %s, %s", zone, err)
return errors.Wrapf(err, "error retrieving record(s) from gateway: %v", zone)
}

defer resp.Body.Close()
Expand All @@ -666,12 +668,12 @@ func (c GatewayClientConfig) getTXTRecords(zone string, records *[]BluecatTXTRec
url := c.Host + "/api/v1/configurations/" + c.DNSConfiguration + "/views/" + c.View + "/" + zonePath + "text_records/"
req, err := c.buildHTTPRequest("GET", url, nil)
if err != nil {
return fmt.Errorf("error building http request: %s", err)
return errors.Wrap(err, "error building http request")
}

resp, err := client.Do(req)
if err != nil {
return fmt.Errorf("error retrieving record(s) from gateway: %s, %s", zone, err)
return errors.Wrapf(err, "error retrieving record(s) from gateway: %v", zone)
}

defer resp.Body.Close()
Expand All @@ -693,12 +695,12 @@ func (c GatewayClientConfig) getHostRecord(name string, record *BluecatHostRecor
"host_records/" + name + "/"
req, err := c.buildHTTPRequest("GET", url, nil)
if err != nil {
return fmt.Errorf("error building http request: %s, %s", name, err)
return errors.Wrapf(err, "error building http request: %v", name)
}

resp, err := client.Do(req)
if err != nil {
return fmt.Errorf("error retrieving record(s) from gateway: %s, %s", name, err)
return errors.Wrapf(err, "error retrieving record(s) from gateway: %v", name)
}

defer resp.Body.Close()
Expand All @@ -720,12 +722,12 @@ func (c GatewayClientConfig) getCNAMERecord(name string, record *BluecatCNAMERec
"cname_records/" + name + "/"
req, err := c.buildHTTPRequest("GET", url, nil)
if err != nil {
return fmt.Errorf("error building http request: %s, %s", name, err)
return errors.Wrapf(err, "error building http request: %v", name)
}

resp, err := client.Do(req)
if err != nil {
return fmt.Errorf("error retrieving record(s) from gateway: %s, %s", name, err)
return errors.Wrapf(err, "error retrieving record(s) from gateway: %v", name)
}

defer resp.Body.Close()
Expand All @@ -749,12 +751,12 @@ func (c GatewayClientConfig) getTXTRecord(name string, record *BluecatTXTRecord)
"text_records/" + name + "/"
req, err := c.buildHTTPRequest("GET", url, nil)
if err != nil {
return fmt.Errorf("error building http request: %s", err)
return errors.Wrap(err, "error building http request")
}

resp, err := client.Do(req)
if err != nil {
return fmt.Errorf("error retrieving record(s) from gateway: %s, %s", name, err)
return errors.Wrapf(err, "error retrieving record(s) from gateway: %v", name)
}

defer resp.Body.Close()
Expand All @@ -779,7 +781,7 @@ func (c GatewayClientConfig) createHostRecord(zone string, req *bluecatCreateHos
body, _ := json.Marshal(req)
hreq, err := c.buildHTTPRequest("POST", url, bytes.NewBuffer(body))
if err != nil {
return nil, fmt.Errorf("error building http request: %s", err)
return nil, errors.Wrap(err, "error building http request")
}
hreq.Header.Add("Content-Type", "application/json")
res, err = client.Do(hreq)
Expand All @@ -804,7 +806,7 @@ func (c GatewayClientConfig) createCNAMERecord(zone string, req *bluecatCreateCN

hreq, err := c.buildHTTPRequest("POST", url, bytes.NewBuffer(body))
if err != nil {
return nil, fmt.Errorf("error building http request: %s", err)
return nil, errors.Wrap(err, "error building http request")
}

res, err = client.Do(hreq)
Expand Down Expand Up @@ -851,12 +853,12 @@ func (c GatewayClientConfig) deleteHostRecord(name string) (err error) {
"host_records/" + name + "/"
req, err := c.buildHTTPRequest("DELETE", url, nil)
if err != nil {
return fmt.Errorf("error building http request: %s, %s", name, err)
return errors.Wrapf(err, "error building http request: %v", name)
}

_, err = client.Do(req)
if err != nil {
return fmt.Errorf("error deleting record(s) from gateway: %s, %s", name, err)
return errors.Wrapf(err, "error deleting record(s) from gateway: %v", name)
}

return nil
Expand All @@ -875,12 +877,12 @@ func (c GatewayClientConfig) deleteCNAMERecord(name string) (err error) {
"cname_records/" + name + "/"
req, err := c.buildHTTPRequest("DELETE", url, nil)
if err != nil {
return fmt.Errorf("error building http request: %s, %s", name, err)
return errors.Wrapf(err, "error building http request: %v", name)
}

_, err = client.Do(req)
if err != nil {
return fmt.Errorf("error deleting record(s) from gateway: %s, %s", name, err)
return errors.Wrapf(err, "error deleting record(s) from gateway: %v", name)
}

return nil
Expand All @@ -902,12 +904,12 @@ func (c GatewayClientConfig) deleteTXTRecord(name string) error {

req, err := c.buildHTTPRequest("DELETE", url, nil)
if err != nil {
return fmt.Errorf("error building http request: %s", err)
return errors.Wrap(err, "error building http request")
}

_, err = client.Do(req)
if err != nil {
return fmt.Errorf("error deleting record(s) from gateway: %s, %s", name, err)
return errors.Wrapf(err, "error deleting record(s) from gateway: %v", name)
}

return nil
Expand Down

0 comments on commit 0dca7b2

Please sign in to comment.