Skip to content

Commit 94b9c67

Browse files
f-blasssaescha
andauthored
Set buildpack version as header on dcl upload (#93)
* Set buildpack version as header on dcl upload * Add userAgent field to uploader * Remove param * add unit test for setting the User-Agent Header in Base DCL upload --------- Co-authored-by: d047491 <sascha.zilli@sap.com>
1 parent f473bec commit 94b9c67

4 files changed

Lines changed: 17 additions & 0 deletions

File tree

cmd/supply/main.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ func main() {
2626
logger.Error("Unable to load buildpack manifest: %s", err)
2727
os.Exit(10)
2828
}
29+
version, err := manifest.Version()
30+
if err != nil {
31+
logger.Error("Unable to load buildpack version: %s", err)
32+
os.Exit(20)
33+
}
34+
2935
installer := libbuildpack.NewInstaller(manifest)
3036

3137
stager := libbuildpack.NewStager(os.Args[1:], logger, manifest)
@@ -74,6 +80,7 @@ func main() {
7480
BuildpackDir: buildpackDir,
7581
GetClient: uploader.GetClient,
7682
CertCopierSourceDir: path.Join(buildpackDir, "bin"),
83+
BuildpackVersion: version,
7784
}
7885

7986
err = s.Run()

pkg/supply/supply.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ type Supplier struct {
4545
BuildpackDir string
4646
GetClient func(cert, key []byte) (uploader.AMSClient, error)
4747
CertCopierSourceDir string
48+
BuildpackVersion string
4849
}
4950

5051
type Cloudfoundry struct {
@@ -284,6 +285,7 @@ func (s *Supplier) upload(creds *services.IASCredentials, tlsCfg tlsConfig, root
284285
Root: path.Join(s.Stager.BuildDir(), rootDir),
285286
Client: client,
286287
AMSInstanceID: creds.AmsInstanceID,
288+
UserAgent: fmt.Sprintf("cloud-authorization-buildpack/%s", s.BuildpackVersion),
287289
}
288290
return u.Do(context.Background(), creds.AmsServerURL)
289291
}

pkg/supply/supply_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ var _ = Describe("Supply", func() {
9797
Log: logger,
9898
BuildpackDir: buildpackDir,
9999
CertCopierSourceDir: certCopierDir,
100+
BuildpackVersion: "UNIT-TEST",
100101
GetClient: func(cert, key []byte) (uploader.AMSClient, error) {
101102
certSpy = cert
102103
keySpy = key
@@ -169,6 +170,11 @@ var _ = Describe("Supply", func() {
169170
expectedValue := []string{"00000000-3b4d-4c41-9e5b-9aee7bfa6348"}
170171
Expect(uploadReqSpy.Header).Should(HaveKeyWithValue(env.HeaderInstanceID, expectedValue))
171172
})
173+
It("sets the buildpack version as User-Agent Header", func() {
174+
Expect(supplier.Run()).To(Succeed())
175+
expectedValue := []string{"cloud-authorization-buildpack/UNIT-TEST"}
176+
Expect(uploadReqSpy.Header).Should(HaveKeyWithValue("User-Agent", expectedValue))
177+
})
172178
It("creates a valid launch.yml", func() {
173179
Expect(supplier.Run()).To(Succeed())
174180
launchConfig, err := os.Open(filepath.Join(depDir, "launch.yml"))

pkg/uploader/uploader.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ type Uploader struct {
2121
Root string
2222
Client AMSClient
2323
AMSInstanceID string
24+
UserAgent string
2425
}
2526

2627
//go:generate mockgen --build_flags=--mod=mod --destination=../supply/client_mock_test.go --package=supply_test github.com/SAP/cloud-authorization-buildpack/pkg/uploader AMSClient
@@ -91,6 +92,7 @@ func (up *Uploader) do(ctx context.Context, dstURL string, body []byte) (*http.R
9192
return nil, fmt.Errorf("could not create DCL upload request %w", err)
9293
}
9394
r.Header.Set(env.HeaderInstanceID, up.AMSInstanceID)
95+
r.Header.Set("User-Agent", up.UserAgent)
9496
r.Header.Set("Content-Type", "application/gzip")
9597
return up.Client.Do(r)
9698
}

0 commit comments

Comments
 (0)