From 791ec07bc25729695d800d4fb8a285b3cd5382ad Mon Sep 17 00:00:00 2001 From: Sanne Raymaekers Date: Tue, 25 Jun 2024 18:07:31 +0200 Subject: [PATCH] internal/awscloud: fix cloud-init userdata for secure instance The conditional only checked if the cloudwatch group was set, and if it wasn't, the hostname variable wouldn't be set either. So the executor would try to look for a hostname but not find any. --- internal/cloud/awscloud/secure-instance.go | 16 +++++++++---- .../cloud/awscloud/secure-instance_test.go | 23 ++++++++++++++++++- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/internal/cloud/awscloud/secure-instance.go b/internal/cloud/awscloud/secure-instance.go index 7f2db55d2..eb6b069a7 100644 --- a/internal/cloud/awscloud/secure-instance.go +++ b/internal/cloud/awscloud/secure-instance.go @@ -22,12 +22,18 @@ type SecureInstance struct { func SecureInstanceUserData(cloudWatchGroup, hostname string) string { additionalFiles := "" - if cloudWatchGroup != "" { - additionalFiles += fmt.Sprintf(` - path: /tmp/cloud_init_vars + if cloudWatchGroup != "" || hostname != "" { + additionalFiles += ` - path: /tmp/cloud_init_vars content: | - OSBUILD_EXECUTOR_CLOUDWATCH_GROUP='%s' - OSBUILD_EXECUTOR_HOSTNAME='%s' -`, cloudWatchGroup, hostname) +` + } + if cloudWatchGroup != "" { + additionalFiles += fmt.Sprintf(` OSBUILD_EXECUTOR_CLOUDWATCH_GROUP='%s' +`, cloudWatchGroup) + } + if hostname != "" { + additionalFiles += fmt.Sprintf(` OSBUILD_EXECUTOR_HOSTNAME='%s' +`, hostname) } return fmt.Sprintf(`#cloud-config diff --git a/internal/cloud/awscloud/secure-instance_test.go b/internal/cloud/awscloud/secure-instance_test.go index c67734486..a759e5bbd 100644 --- a/internal/cloud/awscloud/secure-instance_test.go +++ b/internal/cloud/awscloud/secure-instance_test.go @@ -33,7 +33,28 @@ write_files: OSBUILD_EXECUTOR_HOSTNAME='test-hostname' `, }, - } + { + Hostname: "test-hostname", + ExpectedUserData: `#cloud-config +write_files: + - path: /tmp/worker-run-executor-service + content: '' + - path: /tmp/cloud_init_vars + content: | + OSBUILD_EXECUTOR_HOSTNAME='test-hostname' +`, + }, + { + CloudWatchGroup: "test-group", + ExpectedUserData: `#cloud-config +write_files: + - path: /tmp/worker-run-executor-service + content: '' + - path: /tmp/cloud_init_vars + content: | + OSBUILD_EXECUTOR_CLOUDWATCH_GROUP='test-group' +`, + }} for idx, tc := range testCases { t.Run(fmt.Sprintf("Test case %d", idx), func(t *testing.T) {