diff options
Diffstat (limited to 'clients/netbox/client.go')
-rw-r--r-- | clients/netbox/client.go | 38 |
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 | ||
16 | type NetboxClient interface { | 14 | type 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 | ||
21 | func NewNetboxClient(endpoint string, sc secrets.Client, secretName string) NetboxClient { | 19 | type BasicNetboxClient struct { |
22 | return &netboxClient{ | 20 | ApiKey string |
23 | endpoint: endpoint, | 21 | Endpoint string |
24 | secrets: sc, | ||
25 | secretName: secretName, | ||
26 | } | ||
27 | } | ||
28 | |||
29 | type netboxClient struct { | ||
30 | secrets secrets.Client | ||
31 | endpoint string | ||
32 | secretName string | ||
33 | } | 22 | } |
34 | 23 | ||
35 | var _ NetboxClient = (*netboxClient)(nil) | 24 | var _ NetboxClient = (*BasicNetboxClient)(nil) |
36 | |||
37 | func (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 | ||
26 | func (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 | ||
62 | func (c *netboxClient) makeRequest(ctx context.Context, method, path string, q url.Values, ib io.Reader, o interface{}) error { | 46 | func (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 | ||
73 | func (c *netboxClient) GetSitePrefixesWithTag(ctx context.Context, site string, tag string) ([]*net.IPNet, error) { | 57 | func (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 | ||
116 | func (c *netboxClient) GetPrefixesWithTag(ctx context.Context, tag string) ([]*net.IPNet, error) { | 100 | func (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 | ||
153 | func (c *netboxClient) resolveSiteNameToId(ctx context.Context, s string) (int, error) { | 137 | func (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 | ||