Skip to content

Commit 3e633de

Browse files
author
Andrew Jeddeloh
authored
Merge pull request #876 from cgwalters/fetch-headers-prep
Rework fetch/resource to automatically append required headers
2 parents a924dd7 + 75d3e2d commit 3e633de

File tree

10 files changed

+26
-25
lines changed

10 files changed

+26
-25
lines changed

internal/exec/engine.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -272,9 +272,7 @@ func (e *Engine) fetchReferencedConfig(cfgRef types.ConfigReference) (types.Conf
272272
if err != nil {
273273
return types.Config{}, err
274274
}
275-
rawCfg, err := e.Fetcher.FetchToBuffer(*u, resource.FetchOptions{
276-
Headers: resource.ConfigHeaders,
277-
})
275+
rawCfg, err := e.Fetcher.FetchToBuffer(*u, resource.FetchOptions{})
278276
if err != nil {
279277
return types.Config{}, err
280278
}

internal/providers/aliyun/aliyun.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@ var (
3636
)
3737

3838
func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
39-
data, err := f.FetchToBuffer(userdataUrl, resource.FetchOptions{
40-
Headers: resource.ConfigHeaders,
41-
})
39+
data, err := f.FetchToBuffer(userdataUrl, resource.FetchOptions{})
4240
if err != nil && err != resource.ErrNotFound {
4341
return types.Config{}, report.Report{}, err
4442
}

internal/providers/aws/aws.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@ var (
4141
)
4242

4343
func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
44-
data, err := f.FetchToBuffer(userdataUrl, resource.FetchOptions{
45-
Headers: resource.ConfigHeaders,
46-
})
44+
data, err := f.FetchToBuffer(userdataUrl, resource.FetchOptions{})
4745
if err != nil && err != resource.ErrNotFound {
4846
return types.Config{}, report.Report{}, err
4947
}

internal/providers/cloudstack/cloudstack.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,6 @@ func fetchConfigFromMetadataService(f *resource.Fetcher) ([]byte, error) {
204204
Path: "/latest/user-data",
205205
}
206206

207-
res, err := f.FetchToBuffer(metadataServiceUrl, resource.FetchOptions{
208-
Headers: resource.ConfigHeaders,
209-
})
207+
res, err := f.FetchToBuffer(metadataServiceUrl, resource.FetchOptions{})
210208
return res, err
211209
}

internal/providers/cmdline/cmdline.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,7 @@ func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
4646
return types.Config{}, report.Report{}, providers.ErrNoProvider
4747
}
4848

49-
data, err := f.FetchToBuffer(*url, resource.FetchOptions{
50-
Headers: resource.ConfigHeaders,
51-
})
49+
data, err := f.FetchToBuffer(*url, resource.FetchOptions{})
5250
if err != nil {
5351
return types.Config{}, report.Report{}, err
5452
}

internal/providers/digitalocean/digitalocean.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@ var (
3636
)
3737

3838
func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
39-
data, err := f.FetchToBuffer(userdataUrl, resource.FetchOptions{
40-
Headers: resource.ConfigHeaders,
41-
})
39+
data, err := f.FetchToBuffer(userdataUrl, resource.FetchOptions{})
4240
if err != nil {
4341
return types.Config{}, report.Report{}, err
4442
}

internal/providers/gcp/gcp.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package gcp
1919

2020
import (
21+
"net/http"
2122
"net/url"
2223

2324
"github.com/coreos/ignition/v2/config/v3_1_experimental/types"
@@ -38,7 +39,7 @@ var (
3839
)
3940

4041
func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
41-
headers := resource.ConfigHeaders
42+
headers := make(http.Header)
4243
headers.Set(metadataHeaderKey, metadataHeaderVal)
4344
data, err := f.FetchToBuffer(userdataUrl, resource.FetchOptions{
4445
Headers: headers,

internal/providers/openstack/openstack.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,6 @@ func fetchConfigFromDevice(logger *log.Logger, ctx context.Context, path string)
131131
}
132132

133133
func fetchConfigFromMetadataService(f *resource.Fetcher) ([]byte, error) {
134-
res, err := f.FetchToBuffer(metadataServiceUrl, resource.FetchOptions{
135-
Headers: resource.ConfigHeaders,
136-
})
134+
res, err := f.FetchToBuffer(metadataServiceUrl, resource.FetchOptions{})
137135
return res, err
138136
}

internal/providers/packet/packet.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ var (
5555
func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
5656
// Packet's metadata service returns "Not Acceptable" when queried
5757
// with the default Accept header.
58-
headers := resource.ConfigHeaders
58+
headers := make(http.Header)
5959
headers.Set("Accept", "*/*")
6060
data, err := f.FetchToBuffer(userdataUrl, resource.FetchOptions{
6161
Headers: headers,

internal/resource/url.go

+16-2
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ var (
5252

5353
// ConfigHeaders are the HTTP headers that should be used when the Ignition
5454
// config is being fetched
55-
ConfigHeaders = http.Header{
55+
configHeaders = http.Header{
5656
"Accept-Encoding": []string{"identity"},
5757
"Accept": []string{"application/vnd.coreos.ignition+json;version=3.0.0, */*;q=0.1"},
5858
}
@@ -248,7 +248,21 @@ func (f *Fetcher) fetchFromHTTP(u url.URL, dest io.Writer, opts FetchOptions) er
248248
}
249249
}
250250

251-
dataReader, status, ctxCancel, err := f.client.getReaderWithHeader(u.String(), opts.Headers)
251+
// TODO use .Clone() when we have a new enough golang
252+
// (With Rust, we'd have immutability and wouldn't need to defensively clone)
253+
headers := make(http.Header)
254+
for k, va := range opts.Headers {
255+
for _, v := range va {
256+
headers.Add(k, v)
257+
}
258+
}
259+
for k, va := range configHeaders {
260+
for _, v := range va {
261+
headers.Add(k, v)
262+
}
263+
}
264+
265+
dataReader, status, ctxCancel, err := f.client.getReaderWithHeader(u.String(), headers)
252266
if ctxCancel != nil {
253267
// whatever context getReaderWithHeader created for the request should
254268
// be cancelled once we're done reading the response

0 commit comments

Comments
 (0)