aboutsummaryrefslogtreecommitdiff
path: root/clients/netbox/client.go
diff options
context:
space:
mode:
Diffstat (limited to 'clients/netbox/client.go')
-rw-r--r--clients/netbox/client.go38
1 files changed, 11 insertions, 27 deletions
diff --git a/clients/netbox/client.go b/clients/netbox/client.go
index 97949f2..43ef64c 100644
--- a/clients/netbox/client.go
+++ b/clients/netbox/client.go
@@ -9,8 +9,6 @@ import (
9 "net/http" 9 "net/http"
10 "net/url" 10 "net/url"
11 "strconv" 11 "strconv"
12
13 "code.crute.us/mcrute/golib/secrets"
14) 12)
15 13
16type NetboxClient interface { 14type NetboxClient interface {
@@ -18,33 +16,19 @@ type NetboxClient interface {
18 GetPrefixesWithTag(ctx context.Context, tag string) ([]*net.IPNet, error) 16 GetPrefixesWithTag(ctx context.Context, tag string) ([]*net.IPNet, error)
19} 17}
20 18
21func NewNetboxClient(endpoint string, sc secrets.Client, secretName string) NetboxClient { 19type BasicNetboxClient struct {
22 return &netboxClient{ 20 ApiKey string
23 endpoint: endpoint, 21 Endpoint string
24 secrets: sc,
25 secretName: secretName,
26 }
27}
28
29type netboxClient struct {
30 secrets secrets.Client
31 endpoint string
32 secretName string
33} 22}
34 23
35var _ NetboxClient = (*netboxClient)(nil) 24var _ NetboxClient = (*BasicNetboxClient)(nil)
36
37func (c *netboxClient) makeRequestRaw(ctx context.Context, method, u string, ib io.Reader, o interface{}) error {
38 apiKey := &secrets.ApiKey{}
39 if _, err := c.secrets.Secret(ctx, c.secretName, apiKey); err != nil {
40 return err
41 }
42 25
26func (c *BasicNetboxClient) makeRequestRaw(ctx context.Context, method, u string, ib io.Reader, o interface{}) error {
43 req, err := http.NewRequestWithContext(ctx, method, u, ib) 27 req, err := http.NewRequestWithContext(ctx, method, u, ib)
44 if err != nil { 28 if err != nil {
45 return err 29 return err
46 } 30 }
47 req.Header.Add("Authorization", fmt.Sprintf("Token %s", apiKey.Key)) 31 req.Header.Add("Authorization", fmt.Sprintf("Token %s", c.ApiKey))
48 32
49 res, err := http.DefaultClient.Do(req) 33 res, err := http.DefaultClient.Do(req)
50 if err != nil { 34 if err != nil {
@@ -59,8 +43,8 @@ func (c *netboxClient) makeRequestRaw(ctx context.Context, method, u string, ib
59 return nil 43 return nil
60} 44}
61 45
62func (c *netboxClient) makeRequest(ctx context.Context, method, path string, q url.Values, ib io.Reader, o interface{}) error { 46func (c *BasicNetboxClient) makeRequest(ctx context.Context, method, path string, q url.Values, ib io.Reader, o interface{}) error {
63 u, err := url.Parse(c.endpoint) 47 u, err := url.Parse(c.Endpoint)
64 if err != nil { 48 if err != nil {
65 return err 49 return err
66 } 50 }
@@ -70,7 +54,7 @@ func (c *netboxClient) makeRequest(ctx context.Context, method, path string, q u
70 return c.makeRequestRaw(ctx, method, u.String(), ib, o) 54 return c.makeRequestRaw(ctx, method, u.String(), ib, o)
71} 55}
72 56
73func (c *netboxClient) GetSitePrefixesWithTag(ctx context.Context, site string, tag string) ([]*net.IPNet, error) { 57func (c *BasicNetboxClient) GetSitePrefixesWithTag(ctx context.Context, site string, tag string) ([]*net.IPNet, error) {
74 s, err := c.resolveSiteNameToId(ctx, site) 58 s, err := c.resolveSiteNameToId(ctx, site)
75 if err != nil { 59 if err != nil {
76 return nil, err 60 return nil, err
@@ -113,7 +97,7 @@ func (c *netboxClient) GetSitePrefixesWithTag(ctx context.Context, site string,
113 return out, nil 97 return out, nil
114} 98}
115 99
116func (c *netboxClient) GetPrefixesWithTag(ctx context.Context, tag string) ([]*net.IPNet, error) { 100func (c *BasicNetboxClient) GetPrefixesWithTag(ctx context.Context, tag string) ([]*net.IPNet, error) {
117 out := []*net.IPNet{} 101 out := []*net.IPNet{}
118 102
119 q := url.Values{} 103 q := url.Values{}
@@ -150,7 +134,7 @@ func (c *netboxClient) GetPrefixesWithTag(ctx context.Context, tag string) ([]*n
150 return out, nil 134 return out, nil
151} 135}
152 136
153func (c *netboxClient) resolveSiteNameToId(ctx context.Context, s string) (int, error) { 137func (c *BasicNetboxClient) resolveSiteNameToId(ctx context.Context, s string) (int, error) {
154 q := url.Values{} 138 q := url.Values{}
155 q.Add("name", s) 139 q.Add("name", s)
156 140