Skip to content

Commit

Permalink
Merge pull request #109 from paketo-buildpacks/gh-107
Browse files Browse the repository at this point in the history
Fix Github 107
  • Loading branch information
dmikusa authored May 21, 2024
2 parents 2210902 + 88c9067 commit e37e679
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 10 deletions.
17 changes: 12 additions & 5 deletions dt/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,18 @@ func (b Build) Build(context libcnb.BuildContext) (libcnb.BuildResult, error) {

uri := fmt.Sprintf("%s/v1/deployment/installer/agent/unix/paas/latest?bitness=64&skipMetadata=true&arch=%s", BaseURI(s), archForDynatrace())

for _, t := range []string{"apache", "dotnet", "go", "java", "nginx", "nodejs", "php", "all", "sdk", "envoy"} {
if _, ok, err := pr.Resolve(fmt.Sprintf("dynatrace-%s", t)); err != nil {
return libcnb.BuildResult{}, fmt.Errorf("unable to resolve dynatrace-%s plan entry\n%w", t, err)
} else if ok {
uri = fmt.Sprintf("%s&include=%s", uri, t)
// not presently a specific python module, but we include "all" then it should work with Python
if _, ok, err := pr.Resolve("dynatrace-python"); err != nil {
return libcnb.BuildResult{}, fmt.Errorf("unable to resolve dynatrace-python plan entry\n%w", err)
} else if ok {
uri = fmt.Sprintf("%s&include=all", uri)
} else {
for _, t := range []string{"apache", "dotnet", "go", "java", "nginx", "nodejs", "php"} {
if _, ok, err := pr.Resolve(fmt.Sprintf("dynatrace-%s", t)); err != nil {
return libcnb.BuildResult{}, fmt.Errorf("unable to resolve dynatrace-%s plan entry\n%w", t, err)
} else if ok {
uri = fmt.Sprintf("%s&include=%s", uri, t)
}
}
}

Expand Down
39 changes: 34 additions & 5 deletions dt/build_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,18 @@ func getExpectedDependency(serverUrl string) libpak.BuildpackDependency {
}
}

func getExpectedAllDependency(serverUrl string) libpak.BuildpackDependency {
return libpak.BuildpackDependency{
ID: "dynatrace-oneagent",
Name: "Dynatrace OneAgent",
Version: "test-version",
URI: fmt.Sprintf("%s/v1/deployment/installer/agent/unix/paas/latest?bitness=64&skipMetadata=true&arch=arm&include=all", serverUrl),
Stacks: []string{stackId},
PURL: "pkg:generic/dynatrace-one-agent@test-version?arch=arm64",
CPEs: []string{"cpe:2.3:a:dynatrace:one-agent:test-version:*:*:*:*:*:*:*"},
}
}

func verifyBOM(bom *libcnb.BOM) {
ExpectWithOffset(1, bom.Entries).To(HaveLen(2))
ExpectWithOffset(1, bom.Entries[0].Name).To(Equal("dynatrace-oneagent"))
Expand All @@ -55,10 +67,10 @@ func verifyBOM(bom *libcnb.BOM) {

}

func verifyLayers(layers []libcnb.LayerContributor, serverUrl string) {
func verifyLayers(layers []libcnb.LayerContributor, serverUrl string, expectation func(string) libpak.BuildpackDependency) {
ExpectWithOffset(1, layers).To(HaveLen(2))
ExpectWithOffset(1, layers[0].Name()).To(Equal("dynatrace-oneagent"))
ExpectWithOffset(1, layers[0].(dt.Agent).LayerContributor.Dependency).To(Equal(getExpectedDependency(serverUrl)))
ExpectWithOffset(1, layers[0].(dt.Agent).LayerContributor.Dependency).To(Equal(expectation(serverUrl)))
ExpectWithOffset(1, layers[1].Name()).To(Equal("helper"))
ExpectWithOffset(1, layers[1].(libpak.HelperLayerContributor).Names).To(Equal([]string{"properties"}))
}
Expand Down Expand Up @@ -113,7 +125,7 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
result, err := dt.Build{}.Build(ctx)
Expect(err).NotTo(HaveOccurred())

verifyLayers(result.Layers, server.URL())
verifyLayers(result.Layers, server.URL(), getExpectedDependency)
verifyBOM(result.BOM)
})

Expand All @@ -139,7 +151,7 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
result, err := dt.Build{}.Build(ctx)
Expect(err).NotTo(HaveOccurred())

verifyLayers(result.Layers, server.URL())
verifyLayers(result.Layers, server.URL(), getExpectedDependency)
verifyBOM(result.BOM)
})

Expand All @@ -165,8 +177,25 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
result, err := dt.Build{}.Build(ctx)
Expect(err).NotTo(HaveOccurred())

verifyLayers(result.Layers, server.URL())
verifyLayers(result.Layers, server.URL(), getExpectedDependency)
verifyBOM(result.BOM)
})

context("python", func() {
it.Before(func() {
t.Setenv("BP_ARCH", "arm64")

ctx.Plan.Entries = append(ctx.Plan.Entries,
libcnb.BuildpackPlanEntry{Name: "dynatrace-java"},
libcnb.BuildpackPlanEntry{Name: "dynatrace-python"})
})

it("contributes all agent", func() {
result, err := dt.Build{}.Build(ctx)
Expect(err).NotTo(HaveOccurred())

verifyLayers(result.Layers, server.URL(), getExpectedAllDependency)
verifyBOM(result.BOM)
})
})
}

0 comments on commit e37e679

Please sign in to comment.