From fefff8b4fadb89d1b0c4d903b6088f24a72dcfc3 Mon Sep 17 00:00:00 2001 From: Florian Arthofer Date: Mon, 11 Nov 2024 13:16:03 +0100 Subject: [PATCH 1/6] adds support for optional addtechnologies property in cf-service --- extensions/dynatrace/extension.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/extensions/dynatrace/extension.py b/extensions/dynatrace/extension.py index 2ae465470..726fb1d5d 100644 --- a/extensions/dynatrace/extension.py +++ b/extensions/dynatrace/extension.py @@ -73,6 +73,7 @@ def _load_service_info(self): self._ctx['DYNATRACE_TOKEN'] = detected_services[0].get('apitoken', None) self._ctx['DYNATRACE_SKIPERRORS'] = detected_services[0].get('skiperrors', None) self._ctx['DYNATRACE_NETWORK_ZONE'] = detected_services[0].get('networkzone', None) + self._ctx['DYNATRACE_ADDTECHNOLOGIES'] = detected_services[0].get('addtechnologies', None) self._convert_api_url() self._detected = True @@ -125,6 +126,10 @@ def download_oneagent_installer(self): self.create_folder(os.path.join(self._ctx['BUILD_DIR'], 'dynatrace')) installer = self._get_oneagent_installer_path() url = self._ctx['DYNATRACE_API_URL'] + '/v1/deployment/installer/agent/unix/paas-sh/latest?bitness=64&include=php&include=nginx&include=apache' + if self._ctx['DYNATRACE_ADDTECHNOLOGIES']: + for code_module in self._ctx['DYNATRACE_ADDTECHNOLOGIES'].split(","): + self._log.info(f"Adding {code_module} to OneAgent download...") + url = f"{url}&include={code_module}" if self._ctx['DYNATRACE_NETWORK_ZONE']: self._log.info("Setting DT_NETWORK_ZONE...") url = url + ("&networkZone=%s" % self._ctx['DYNATRACE_NETWORK_ZONE']) From 7558496138e6ff2134af42ccfed17d1576696091 Mon Sep 17 00:00:00 2001 From: Florian Arthofer Date: Mon, 11 Nov 2024 13:32:04 +0100 Subject: [PATCH 2/6] adds proposed git-cloning fix from PR for testing locally --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index aaffaba41..1bc9819ec 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,4 +9,4 @@ url = https://github.com/php-fig/log [submodule "python-vendor/node-semver"] path = python-vendor/node-semver - url = git@github.com:podhmo/python-node-semver.git + url = https://github.com/podhmo/python-node-semver.git From 97a68ff42c6d1cf4e441a1ffdce86513468270e7 Mon Sep 17 00:00:00 2001 From: Florian Arthofer Date: Mon, 11 Nov 2024 15:09:27 +0100 Subject: [PATCH 3/6] syncs log-output for additional code-modules to libbuildpack-dynatrace --- extensions/dynatrace/extension.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/dynatrace/extension.py b/extensions/dynatrace/extension.py index 726fb1d5d..95e53cc77 100644 --- a/extensions/dynatrace/extension.py +++ b/extensions/dynatrace/extension.py @@ -128,7 +128,7 @@ def download_oneagent_installer(self): url = self._ctx['DYNATRACE_API_URL'] + '/v1/deployment/installer/agent/unix/paas-sh/latest?bitness=64&include=php&include=nginx&include=apache' if self._ctx['DYNATRACE_ADDTECHNOLOGIES']: for code_module in self._ctx['DYNATRACE_ADDTECHNOLOGIES'].split(","): - self._log.info(f"Adding {code_module} to OneAgent download...") + self._log.info(f"Adding additional code module to download: {code_module}") url = f"{url}&include={code_module}" if self._ctx['DYNATRACE_NETWORK_ZONE']: self._log.info("Setting DT_NETWORK_ZONE...") From e75c38760c1ca6ee60c8a8f34f707cbbf7a04a1b Mon Sep 17 00:00:00 2001 From: Florian Arthofer Date: Mon, 11 Nov 2024 15:10:01 +0100 Subject: [PATCH 4/6] adds integration test for addtechnologies feature in Dynatrace hook --- .../deploy_a_php_app_with_dynatrace_test.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/php/integration/deploy_a_php_app_with_dynatrace_test.go b/src/php/integration/deploy_a_php_app_with_dynatrace_test.go index b57fb82da..23dd28104 100644 --- a/src/php/integration/deploy_a_php_app_with_dynatrace_test.go +++ b/src/php/integration/deploy_a_php_app_with_dynatrace_test.go @@ -195,5 +195,17 @@ var _ = Describe("Deploy app with", func() { Expect(app.Stdout.String()).To(ContainSubstring("Fetching updated OneAgent configuration from tenant...")) Expect(app.Stdout.String()).To(ContainSubstring("Finished writing updated OneAgent config back to")) }) + + It("Deploy app with single dynatrace service and additional code modules", func() { + serviceName := "dynatrace-" + cutlass.RandStringRunes(20) + "-service" + Expect(RunCf("cups", serviceName, "-p", fmt.Sprintf(`{"apitoken":"secretpaastoken","apiurl":"%s","environmentid":"envid", "networkzone":"testzone", "addtechnologies":"go,nodejs"}`, dynatraceAPIURI))).To(Succeed()) + Expect(RunCf("bind-service", app.Name, serviceName)).To(Succeed()) + Expect(RunCf("start", app.Name)).To(Succeed()) + ConfirmRunning(app) + + Expect(app.ConfirmBuildpack(buildpackVersion)).To(Succeed()) + Expect(app.Stdout.String()).To(ContainSubstring("Adding additional code module to download: go")) + Expect(app.Stdout.String()).To(ContainSubstring("Adding additional code module to download: nodejs")) + }) }) From 22c0813b9cd165c58138676774eb8ef8329434a5 Mon Sep 17 00:00:00 2001 From: Florian Arthofer Date: Mon, 11 Nov 2024 15:10:38 +0100 Subject: [PATCH 5/6] reverts .gitmodules to the upstream version --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 1bc9819ec..aaffaba41 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,4 +9,4 @@ url = https://github.com/php-fig/log [submodule "python-vendor/node-semver"] path = python-vendor/node-semver - url = https://github.com/podhmo/python-node-semver.git + url = git@github.com:podhmo/python-node-semver.git From 635e276306f7729cfd0d43f19d119389bb70f9cf Mon Sep 17 00:00:00 2001 From: Florian Arthofer Date: Mon, 18 Nov 2024 15:01:19 +0100 Subject: [PATCH 6/6] merges test for additional code modules with test for config update, upon request from upstream maintainer --- .../deploy_a_php_app_with_dynatrace_test.go | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/php/integration/deploy_a_php_app_with_dynatrace_test.go b/src/php/integration/deploy_a_php_app_with_dynatrace_test.go index 23dd28104..75f9b792d 100644 --- a/src/php/integration/deploy_a_php_app_with_dynatrace_test.go +++ b/src/php/integration/deploy_a_php_app_with_dynatrace_test.go @@ -184,9 +184,10 @@ var _ = Describe("Deploy app with", func() { Expect(app.Stdout.String()).To(ContainSubstring("Setting DT_NETWORK_ZONE...")) }) - It("Deploy app with single dynatrace service and check for config update", func() { + It("Deploy app with single dynatrace service and check for config update and additional code modules", func() { serviceName := "dynatrace-" + cutlass.RandStringRunes(20) + "-service" Expect(RunCf("cups", serviceName, "-p", fmt.Sprintf(`{"apitoken":"secretpaastoken","apiurl":"%s","environmentid":"envid", "networkzone":"testzone"}`, dynatraceAPIURI))).To(Succeed()) + Expect(RunCf("cups", serviceName, "-p", fmt.Sprintf(`{"apitoken":"secretpaastoken","apiurl":"%s","environmentid":"envid", "networkzone":"testzone", "addtechnologies":"go,nodejs"}`, dynatraceAPIURI))).To(Succeed()) Expect(RunCf("bind-service", app.Name, serviceName)).To(Succeed()) Expect(RunCf("start", app.Name)).To(Succeed()) ConfirmRunning(app) @@ -194,18 +195,7 @@ var _ = Describe("Deploy app with", func() { Expect(app.ConfirmBuildpack(buildpackVersion)).To(Succeed()) Expect(app.Stdout.String()).To(ContainSubstring("Fetching updated OneAgent configuration from tenant...")) Expect(app.Stdout.String()).To(ContainSubstring("Finished writing updated OneAgent config back to")) - }) - - It("Deploy app with single dynatrace service and additional code modules", func() { - serviceName := "dynatrace-" + cutlass.RandStringRunes(20) + "-service" - Expect(RunCf("cups", serviceName, "-p", fmt.Sprintf(`{"apitoken":"secretpaastoken","apiurl":"%s","environmentid":"envid", "networkzone":"testzone", "addtechnologies":"go,nodejs"}`, dynatraceAPIURI))).To(Succeed()) - Expect(RunCf("bind-service", app.Name, serviceName)).To(Succeed()) - Expect(RunCf("start", app.Name)).To(Succeed()) - ConfirmRunning(app) - - Expect(app.ConfirmBuildpack(buildpackVersion)).To(Succeed()) Expect(app.Stdout.String()).To(ContainSubstring("Adding additional code module to download: go")) Expect(app.Stdout.String()).To(ContainSubstring("Adding additional code module to download: nodejs")) }) - })